mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Support marking cards as favorites in catalog
This commit is contained in:
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -15481,8 +15481,8 @@ forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/TextSearchFilter.j
|
|||||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java -text
|
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java -text
|
||||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java -text
|
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java -text
|
||||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/package-info.java -text
|
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/package-info.java -text
|
||||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/AlwaysShowToolTip.java -text
|
|
||||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/IntegerRenderer.java -text
|
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/IntegerRenderer.java -text
|
||||||
|
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemCellRenderer.java -text
|
||||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemListView.java -text
|
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemListView.java -text
|
||||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java -text
|
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java -text
|
||||||
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ManaCostRenderer.java -text
|
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ManaCostRenderer.java -text
|
||||||
|
|||||||
@@ -1,24 +1,119 @@
|
|||||||
package forge.card;
|
package forge.card;
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import javax.xml.stream.XMLEventFactory;
|
||||||
|
import javax.xml.stream.XMLEventReader;
|
||||||
|
import javax.xml.stream.XMLEventWriter;
|
||||||
|
import javax.xml.stream.XMLInputFactory;
|
||||||
|
import javax.xml.stream.XMLOutputFactory;
|
||||||
|
import javax.xml.stream.events.Attribute;
|
||||||
|
import javax.xml.stream.events.StartElement;
|
||||||
|
import javax.xml.stream.events.XMLEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preferences associated with individual cards
|
* Preferences associated with individual cards
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class CardPreferences {
|
public class CardPreferences {
|
||||||
|
private static final XMLEventFactory EVENT_FACTORY = XMLEventFactory.newInstance();
|
||||||
|
private static final XMLEvent NEWLINE = EVENT_FACTORY.createDTD("\n");
|
||||||
|
private static final XMLEvent TAB = EVENT_FACTORY.createDTD("\t");
|
||||||
private static Map<String, CardPreferences> allPrefs = new HashMap<String, CardPreferences>();
|
private static Map<String, CardPreferences> allPrefs = new HashMap<String, CardPreferences>();
|
||||||
|
|
||||||
public static CardPreferences getPrefs(String key) {
|
public static CardPreferences getPrefs(String name) {
|
||||||
CardPreferences prefs = allPrefs.get(key);
|
CardPreferences prefs = allPrefs.get(name);
|
||||||
if (prefs == null) {
|
if (prefs == null) {
|
||||||
prefs = new CardPreferences();
|
prefs = new CardPreferences();
|
||||||
allPrefs.put(key, prefs);
|
allPrefs.put(name, prefs);
|
||||||
}
|
}
|
||||||
return prefs;
|
return prefs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void load(String filename) {
|
||||||
|
allPrefs.clear();
|
||||||
|
|
||||||
|
try {
|
||||||
|
final XMLInputFactory in = XMLInputFactory.newInstance();
|
||||||
|
final XMLEventReader reader = in.createXMLEventReader(new FileInputStream(filename));
|
||||||
|
|
||||||
|
XMLEvent event;
|
||||||
|
StartElement element;
|
||||||
|
Iterator<?> attributes;
|
||||||
|
Attribute attribute;
|
||||||
|
String tagname;
|
||||||
|
CardPreferences prefs;
|
||||||
|
|
||||||
|
while (reader.hasNext()) {
|
||||||
|
event = reader.nextEvent();
|
||||||
|
|
||||||
|
if (event.isStartElement()) {
|
||||||
|
element = event.asStartElement();
|
||||||
|
tagname = element.getName().getLocalPart();
|
||||||
|
|
||||||
|
if (tagname.equals("card")) {
|
||||||
|
prefs = new CardPreferences();
|
||||||
|
attributes = element.getAttributes();
|
||||||
|
|
||||||
|
while (attributes.hasNext()) {
|
||||||
|
attribute = (Attribute) attributes.next();
|
||||||
|
switch (attribute.getName().toString()) {
|
||||||
|
case "name":
|
||||||
|
allPrefs.put(attribute.getValue(), prefs);
|
||||||
|
break;
|
||||||
|
case "stars":
|
||||||
|
prefs.starCount = Integer.parseInt(attribute.getValue());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (final FileNotFoundException e) {
|
||||||
|
/* ignore; it's ok if this file doesn't exist */
|
||||||
|
}
|
||||||
|
catch (final Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void save(String filename) {
|
||||||
|
try {
|
||||||
|
final XMLOutputFactory out = XMLOutputFactory.newInstance();
|
||||||
|
final XMLEventWriter writer = out.createXMLEventWriter(new FileOutputStream(filename));
|
||||||
|
|
||||||
|
writer.add(EVENT_FACTORY.createStartDocument());
|
||||||
|
writer.add(NEWLINE);
|
||||||
|
writer.add(EVENT_FACTORY.createStartElement("", "", "preferences"));
|
||||||
|
writer.add(EVENT_FACTORY.createAttribute("type", "cards"));
|
||||||
|
writer.add(NEWLINE);
|
||||||
|
|
||||||
|
for (Map.Entry<String, CardPreferences> entry : allPrefs.entrySet()) {
|
||||||
|
if (entry.getValue().starCount > 0) {
|
||||||
|
writer.add(TAB);
|
||||||
|
writer.add(EVENT_FACTORY.createStartElement("", "", "card"));
|
||||||
|
writer.add(EVENT_FACTORY.createAttribute("name", entry.getKey()));
|
||||||
|
writer.add(EVENT_FACTORY.createAttribute("stars", String.valueOf(entry.getValue().starCount)));
|
||||||
|
writer.add(EVENT_FACTORY.createEndElement("", "", "card"));
|
||||||
|
writer.add(NEWLINE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.add(EVENT_FACTORY.createEndDocument());
|
||||||
|
writer.flush();
|
||||||
|
writer.close();
|
||||||
|
}
|
||||||
|
catch (final Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private int starCount;
|
private int starCount;
|
||||||
|
|
||||||
private CardPreferences() {
|
private CardPreferences() {
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
<pref name="display_unique_only" value="true"></pref>
|
<pref name="display_unique_only" value="true"></pref>
|
||||||
<pref name="elastic_columns" value="false"></pref>
|
<pref name="elastic_columns" value="false"></pref>
|
||||||
<pref name="stats_deck" value="true"></pref>
|
<pref name="stats_deck" value="true"></pref>
|
||||||
<col enumval="CAT_FAVORITE" identifier="" show="true" sortpriority="1" sortstate="DESC" width="17"></col>
|
<col enumval="CAT_FAVORITE" identifier="" show="true" sortpriority="1" sortstate="DESC" width="18"></col>
|
||||||
<col enumval="CAT_QUANTITY" identifier="Quantity" show="true" sortpriority="0" sortstate="NONE" width="30"></col>
|
<col enumval="CAT_QUANTITY" identifier="Quantity" show="true" sortpriority="0" sortstate="NONE" width="30"></col>
|
||||||
<col enumval="CAT_NAME" identifier="Name" show="true" sortpriority="2" sortstate="ASC" width="115"></col>
|
<col enumval="CAT_NAME" identifier="Name" show="true" sortpriority="3" sortstate="ASC" width="115"></col>
|
||||||
<col enumval="CAT_COST" identifier="Cost" show="true" sortpriority="0" sortstate="NONE" width="40"></col>
|
<col enumval="CAT_COST" identifier="Cost" show="true" sortpriority="0" sortstate="NONE" width="40"></col>
|
||||||
<col enumval="CAT_COLOR" identifier="Color" show="true" sortpriority="0" sortstate="NONE" width="40"></col>
|
<col enumval="CAT_COLOR" identifier="Color" show="true" sortpriority="0" sortstate="NONE" width="40"></col>
|
||||||
<col enumval="CAT_TYPE" identifier="Type" show="true" sortpriority="0" sortstate="NONE" width="80"></col>
|
<col enumval="CAT_TYPE" identifier="Type" show="true" sortpriority="0" sortstate="NONE" width="80"></col>
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<col enumval="CAT_RANKING" identifier="Ranking" show="false" sortpriority="0" sortstate="NONE" width="30"></col>
|
<col enumval="CAT_RANKING" identifier="Ranking" show="false" sortpriority="0" sortstate="NONE" width="30"></col>
|
||||||
<col enumval="CAT_NEW" identifier="New" show="true" sortpriority="0" sortstate="NONE" width="30"></col>
|
<col enumval="CAT_NEW" identifier="New" show="true" sortpriority="0" sortstate="NONE" width="30"></col>
|
||||||
<col enumval="CAT_PURCHASE_PRICE" identifier="Purchase Price" show="true" sortpriority="3" sortstate="DESC" width="30"></col>
|
<col enumval="CAT_PURCHASE_PRICE" identifier="Purchase Price" show="true" sortpriority="3" sortstate="DESC" width="30"></col>
|
||||||
<col enumval="CAT_OWNED" identifier="Owned" show="true" sortpriority="1" sortstate="ASC" width="40"></col>
|
<col enumval="CAT_OWNED" identifier="Owned" show="true" sortpriority="2" sortstate="ASC" width="40"></col>
|
||||||
<col enumval="DECK_QUANTITY" identifier="Quantity" show="true" sortpriority="0" sortstate="NONE" width="30"></col>
|
<col enumval="DECK_QUANTITY" identifier="Quantity" show="true" sortpriority="0" sortstate="NONE" width="30"></col>
|
||||||
<col enumval="DECK_NAME" identifier="Name" show="true" sortpriority="3" sortstate="ASC" width="115"></col>
|
<col enumval="DECK_NAME" identifier="Name" show="true" sortpriority="3" sortstate="ASC" width="115"></col>
|
||||||
<col enumval="DECK_COST" identifier="Cost" show="true" sortpriority="0" sortstate="NONE" width="40"></col>
|
<col enumval="DECK_COST" identifier="Cost" show="true" sortpriority="0" sortstate="NONE" width="40"></col>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 638 KiB After Width: | Height: | Size: 638 KiB |
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package forge;
|
package forge;
|
||||||
|
|
||||||
|
import forge.card.CardPreferences;
|
||||||
import forge.control.FControl;
|
import forge.control.FControl;
|
||||||
import forge.gui.toolbox.FProgressBar;
|
import forge.gui.toolbox.FProgressBar;
|
||||||
import forge.gui.workshop.CardScriptInfo;
|
import forge.gui.workshop.CardScriptInfo;
|
||||||
@@ -52,8 +53,9 @@ public final class Singletons {
|
|||||||
initialized = true;
|
initialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(withUi)
|
if (withUi) {
|
||||||
view = FView.SINGLETON_INSTANCE;
|
view = FView.SINGLETON_INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
CardStorageReader.ProgressObserver progressBarBridge = view == null
|
CardStorageReader.ProgressObserver progressBarBridge = view == null
|
||||||
? CardStorageReader.ProgressObserver.emptyObserver : new CardStorageReader.ProgressObserver() {
|
? CardStorageReader.ProgressObserver.emptyObserver : new CardStorageReader.ProgressObserver() {
|
||||||
@@ -79,9 +81,11 @@ public final class Singletons {
|
|||||||
magicDb = new StaticData(reader, "res/editions", "res/blockdata");
|
magicDb = new StaticData(reader, "res/editions", "res/blockdata");
|
||||||
model = FModel.getInstance(withUi);
|
model = FModel.getInstance(withUi);
|
||||||
|
|
||||||
if(withUi)
|
if (withUi) {
|
||||||
control = FControl.instance;
|
control = FControl.instance;
|
||||||
|
|
||||||
|
CardPreferences.load(NewConstants.CARD_PREFS_FILE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// disallow instantiation
|
// disallow instantiation
|
||||||
|
|||||||
@@ -362,6 +362,7 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider {
|
|||||||
catTable.getComponent().addMouseListener(new FMouseAdapter() {
|
catTable.getComponent().addMouseListener(new FMouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onLeftDoubleClick(MouseEvent e) {
|
public void onLeftDoubleClick(MouseEvent e) {
|
||||||
|
if (e.isConsumed()) { return; } //don't add cards if inline button double clicked
|
||||||
addSelectedCards(false, 1);
|
addSelectedCards(false, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -376,6 +377,7 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider {
|
|||||||
deckTable.getComponent().addMouseListener(new FMouseAdapter() {
|
deckTable.getComponent().addMouseListener(new FMouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void onLeftDoubleClick(MouseEvent e) {
|
public void onLeftDoubleClick(MouseEvent e) {
|
||||||
|
if (e.isConsumed()) { return; } //don't remove cards if inline button double clicked
|
||||||
removeSelectedCards(false, 1);
|
removeSelectedCards(false, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import forge.gui.framework.FScreen;
|
|||||||
import forge.gui.home.quest.CSubmenuQuestDecks;
|
import forge.gui.home.quest.CSubmenuQuestDecks;
|
||||||
import forge.gui.toolbox.itemmanager.CardManager;
|
import forge.gui.toolbox.itemmanager.CardManager;
|
||||||
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
|
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
|
||||||
|
import forge.gui.toolbox.itemmanager.views.ItemCellRenderer;
|
||||||
import forge.gui.toolbox.itemmanager.views.SColumnUtil;
|
import forge.gui.toolbox.itemmanager.views.SColumnUtil;
|
||||||
import forge.gui.toolbox.itemmanager.views.TableColumnInfo;
|
import forge.gui.toolbox.itemmanager.views.TableColumnInfo;
|
||||||
import forge.gui.toolbox.itemmanager.views.SColumnUtil.ColumnName;
|
import forge.gui.toolbox.itemmanager.views.SColumnUtil.ColumnName;
|
||||||
@@ -266,16 +267,18 @@ public final class CEditorQuest extends ACEditorBase<PaperCard, Deck> {
|
|||||||
columnsCatalog.add(SColumnUtil.getColumn(ColumnName.CAT_NEW));
|
columnsCatalog.add(SColumnUtil.getColumn(ColumnName.CAT_NEW));
|
||||||
columnsCatalog.get(columnsCatalog.size() - 1).setSortAndDisplayFunctions(
|
columnsCatalog.get(columnsCatalog.size() - 1).setSortAndDisplayFunctions(
|
||||||
this.questData.getCards().getFnNewCompare(),
|
this.questData.getCards().getFnNewCompare(),
|
||||||
this.questData.getCards().getFnNewGet());
|
this.questData.getCards().getFnNewGet(),
|
||||||
|
new ItemCellRenderer());
|
||||||
|
|
||||||
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_NEW));
|
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_NEW));
|
||||||
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
||||||
this.questData.getCards().getFnNewCompare(),
|
this.questData.getCards().getFnNewCompare(),
|
||||||
this.questData.getCards().getFnNewGet());
|
this.questData.getCards().getFnNewGet(),
|
||||||
|
new ItemCellRenderer());
|
||||||
|
|
||||||
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_DECKS));
|
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_DECKS));
|
||||||
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
||||||
this.fnDeckCompare, this.fnDeckGet);
|
this.fnDeckCompare, this.fnDeckGet, new ItemCellRenderer());
|
||||||
|
|
||||||
this.getCatalogManager().getTable().setup(columnsCatalog);
|
this.getCatalogManager().getTable().setup(columnsCatalog);
|
||||||
this.getDeckManager().getTable().setup(columnsDeck);
|
this.getDeckManager().getTable().setup(columnsDeck);
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ import forge.gui.toolbox.FLabel;
|
|||||||
import forge.gui.toolbox.FSkin;
|
import forge.gui.toolbox.FSkin;
|
||||||
import forge.gui.toolbox.itemmanager.SpellShopManager;
|
import forge.gui.toolbox.itemmanager.SpellShopManager;
|
||||||
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
|
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
|
||||||
|
import forge.gui.toolbox.itemmanager.views.ItemCellRenderer;
|
||||||
import forge.gui.toolbox.itemmanager.views.SColumnUtil;
|
import forge.gui.toolbox.itemmanager.views.SColumnUtil;
|
||||||
import forge.gui.toolbox.itemmanager.views.TableColumnInfo;
|
import forge.gui.toolbox.itemmanager.views.TableColumnInfo;
|
||||||
import forge.gui.toolbox.itemmanager.views.SColumnUtil.ColumnName;
|
import forge.gui.toolbox.itemmanager.views.SColumnUtil.ColumnName;
|
||||||
@@ -435,23 +436,23 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
|||||||
// Add spell shop-specific columns
|
// Add spell shop-specific columns
|
||||||
columnsCatalog.add(SColumnUtil.getColumn(ColumnName.CAT_PURCHASE_PRICE));
|
columnsCatalog.add(SColumnUtil.getColumn(ColumnName.CAT_PURCHASE_PRICE));
|
||||||
columnsCatalog.get(columnsCatalog.size() - 1).setSortAndDisplayFunctions(
|
columnsCatalog.get(columnsCatalog.size() - 1).setSortAndDisplayFunctions(
|
||||||
this.fnPriceCompare, this.fnPriceGet);
|
this.fnPriceCompare, this.fnPriceGet, new ItemCellRenderer());
|
||||||
|
|
||||||
columnsCatalog.add(1, SColumnUtil.getColumn(ColumnName.CAT_OWNED));
|
columnsCatalog.add(1, SColumnUtil.getColumn(ColumnName.CAT_OWNED));
|
||||||
columnsCatalog.get(1).setSortAndDisplayFunctions(
|
columnsCatalog.get(1).setSortAndDisplayFunctions(
|
||||||
questData.getCards().getFnOwnedCompare(), questData.getCards().getFnOwnedGet());
|
questData.getCards().getFnOwnedCompare(), questData.getCards().getFnOwnedGet(), new ItemCellRenderer());
|
||||||
|
|
||||||
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_SALE_PRICE));
|
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_SALE_PRICE));
|
||||||
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
||||||
this.fnPriceCompare, this.fnPriceSellGet);
|
this.fnPriceCompare, this.fnPriceSellGet, new ItemCellRenderer());
|
||||||
|
|
||||||
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_NEW));
|
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_NEW));
|
||||||
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
||||||
this.questData.getCards().getFnNewCompare(), this.questData.getCards().getFnNewGet());
|
this.questData.getCards().getFnNewCompare(), this.questData.getCards().getFnNewGet(), new ItemCellRenderer());
|
||||||
|
|
||||||
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_DECKS));
|
columnsDeck.add(SColumnUtil.getColumn(ColumnName.DECK_DECKS));
|
||||||
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
|
||||||
this.fnDeckCompare, this.fnDeckGet);
|
this.fnDeckCompare, this.fnDeckGet, new ItemCellRenderer());
|
||||||
|
|
||||||
// don't need AI column for either table
|
// don't need AI column for either table
|
||||||
columnsCatalog.remove(SColumnUtil.getColumn(ColumnName.CAT_AI));
|
columnsCatalog.remove(SColumnUtil.getColumn(ColumnName.CAT_AI));
|
||||||
|
|||||||
@@ -1483,6 +1483,8 @@ public enum FSkin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum EditorImages implements SkinProp {
|
public enum EditorImages implements SkinProp {
|
||||||
|
IMG_STAR_OUTINE (new int[] {640, 460, 20, 20}),
|
||||||
|
IMG_STAR_FILLED (new int[] {660, 460, 20, 20}),
|
||||||
IMG_ARTIFACT (new int[] {280, 720, 40, 40}),
|
IMG_ARTIFACT (new int[] {280, 720, 40, 40}),
|
||||||
IMG_CREATURE (new int[] {240, 720, 40, 40}),
|
IMG_CREATURE (new int[] {240, 720, 40, 40}),
|
||||||
IMG_ENCHANTMENT (new int[] {320, 720, 40, 40}),
|
IMG_ENCHANTMENT (new int[] {320, 720, 40, 40}),
|
||||||
|
|||||||
@@ -20,13 +20,12 @@ package forge.gui.toolbox.itemmanager.views;
|
|||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
|
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
import javax.swing.table.DefaultTableCellRenderer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A quick converter to avoid -1 being displayed for unapplicable values.
|
* A quick converter to avoid -1 being displayed for unapplicable values.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class IntegerRenderer extends DefaultTableCellRenderer {
|
public class IntegerRenderer extends ItemCellRenderer {
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -17,9 +17,19 @@
|
|||||||
*/
|
*/
|
||||||
package forge.gui.toolbox.itemmanager.views;
|
package forge.gui.toolbox.itemmanager.views;
|
||||||
|
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
|
||||||
|
import javax.swing.JTable;
|
||||||
|
import javax.swing.table.DefaultTableCellRenderer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A marker interface for indicating that tooltips should always be shown for
|
* Base cell renderer class for item tables
|
||||||
* cells rendered with the marked renderer.
|
|
||||||
*/
|
*/
|
||||||
interface AlwaysShowToolTip {
|
@SuppressWarnings("serial")
|
||||||
|
public class ItemCellRenderer extends DefaultTableCellRenderer {
|
||||||
|
public boolean alwaysShowTooltip() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public void processMouseEvent(final MouseEvent e, final JTable table, final Object value, final int row, final int column) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -151,40 +151,6 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
this.table.getTableHeader().setBackground(new Color(200, 200, 200));
|
this.table.getTableHeader().setBackground(new Color(200, 200, 200));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCellTooltip(TableCellRenderer renderer, int row, int col, Object val) {
|
|
||||||
Component cell = renderer.getTableCellRendererComponent(
|
|
||||||
this.table, val, false, false, row, col);
|
|
||||||
|
|
||||||
// if we're conditionally showing the tooltip, check to see
|
|
||||||
// if we shouldn't show it
|
|
||||||
if (!(cell instanceof AlwaysShowToolTip))
|
|
||||||
{
|
|
||||||
// if there's enough room (or there's no value), no tooltip
|
|
||||||
// we use '>' here instead of '>=' since that seems to be the
|
|
||||||
// threshold for where the ellipses appear for the default
|
|
||||||
// JTable renderer
|
|
||||||
int requiredWidth = cell.getPreferredSize().width;
|
|
||||||
TableColumn tableColumn = this.table.getColumnModel().getColumn(col);
|
|
||||||
if (null == val || tableColumn.getWidth() > requiredWidth) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// use a pre-set tooltip if it exists
|
|
||||||
if (cell instanceof JComponent)
|
|
||||||
{
|
|
||||||
JComponent jcell = (JComponent)cell;
|
|
||||||
String tip = jcell.getToolTipText();
|
|
||||||
if (null != tip)
|
|
||||||
{
|
|
||||||
return tip;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// otherwise, show the full text in the tooltip
|
|
||||||
return String.valueOf(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAvailableColumns(final List<TableColumnInfo<InventoryItem>> cols) {
|
public void setAvailableColumns(final List<TableColumnInfo<InventoryItem>> cols) {
|
||||||
final DefaultTableColumnModel colModel = new DefaultTableColumnModel();
|
final DefaultTableColumnModel colModel = new DefaultTableColumnModel();
|
||||||
|
|
||||||
@@ -331,16 +297,66 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
if (col < 0) { return null; }
|
if (col < 0) { return null; }
|
||||||
TableColumn tableColumn = columnModel.getColumn(col);
|
TableColumn tableColumn = columnModel.getColumn(col);
|
||||||
TableCellRenderer headerRenderer = tableColumn.getHeaderRenderer();
|
TableCellRenderer headerRenderer = tableColumn.getHeaderRenderer();
|
||||||
if (null == headerRenderer) {
|
if (headerRenderer == null) {
|
||||||
headerRenderer = getDefaultRenderer();
|
headerRenderer = getDefaultRenderer();
|
||||||
}
|
}
|
||||||
|
|
||||||
return getCellTooltip(
|
return getCellTooltip(headerRenderer, -1, col, tableColumn.getHeaderValue());
|
||||||
headerRenderer, -1, col, tableColumn.getHeaderValue());
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void processMouseEvent(MouseEvent e) {
|
||||||
|
Point p = e.getPoint();
|
||||||
|
int row = rowAtPoint(p);
|
||||||
|
int col = columnAtPoint(p);
|
||||||
|
|
||||||
|
if (col < 0 || col >= getColumnCount() || row < 0 || row >= getRowCount()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object val = getValueAt(row, col);
|
||||||
|
if (val == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemCellRenderer renderer = (ItemCellRenderer)getCellRenderer(row, col);
|
||||||
|
if (renderer != null) {
|
||||||
|
renderer.processMouseEvent(e, this, val, row, col); //give renderer a chance to process the mouse event
|
||||||
|
}
|
||||||
|
super.processMouseEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getCellTooltip(TableCellRenderer renderer, int row, int col, Object val) {
|
||||||
|
Component cell = renderer.getTableCellRendererComponent(this, val, false, false, row, col);
|
||||||
|
|
||||||
|
// if we're conditionally showing the tooltip, check to see
|
||||||
|
// if we shouldn't show it
|
||||||
|
if (!(cell instanceof ItemCellRenderer)) {
|
||||||
|
// if there's enough room (or there's no value), no tooltip
|
||||||
|
// we use '>' here instead of '>=' since that seems to be the
|
||||||
|
// threshold for where the ellipses appear for the default
|
||||||
|
// JTable renderer
|
||||||
|
int requiredWidth = cell.getPreferredSize().width;
|
||||||
|
TableColumn tableColumn = this.getColumnModel().getColumn(col);
|
||||||
|
if (null == val || tableColumn.getWidth() > requiredWidth) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// use a pre-set tooltip if it exists
|
||||||
|
if (cell instanceof JComponent) {
|
||||||
|
JComponent jcell = (JComponent)cell;
|
||||||
|
String tip = jcell.getToolTipText();
|
||||||
|
if (tip != null) {
|
||||||
|
return tip;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// otherwise, show the full text in the tooltip
|
||||||
|
return String.valueOf(val);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getToolTipText(MouseEvent e) {
|
public String getToolTipText(MouseEvent e) {
|
||||||
Point p = e.getPoint();
|
Point p = e.getPoint();
|
||||||
@@ -352,7 +368,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Object val = getValueAt(row, col);
|
Object val = getValueAt(row, col);
|
||||||
if (null == val) {
|
if (val == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,7 +386,8 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
final int col = columnAtPoint(p);
|
final int col = columnAtPoint(p);
|
||||||
if (row == lastTooltipRow && col == lastTooltipCol) {
|
if (row == lastTooltipRow && col == lastTooltipCol) {
|
||||||
p = lastTooltipPt;
|
p = lastTooltipPt;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
lastTooltipRow = row;
|
lastTooltipRow = row;
|
||||||
lastTooltipCol = col;
|
lastTooltipCol = col;
|
||||||
lastTooltipPt = p;
|
lastTooltipPt = p;
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ package forge.gui.toolbox.itemmanager.views;
|
|||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
import javax.swing.table.DefaultTableCellRenderer;
|
|
||||||
|
|
||||||
import forge.card.CardRules;
|
import forge.card.CardRules;
|
||||||
import forge.card.CardSplitType;
|
import forge.card.CardSplitType;
|
||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
@@ -33,7 +31,7 @@ import forge.gui.toolbox.FSkin.JLabelSkin;
|
|||||||
/**
|
/**
|
||||||
* Displays mana cost as symbols.
|
* Displays mana cost as symbols.
|
||||||
*/
|
*/
|
||||||
public class ManaCostRenderer extends DefaultTableCellRenderer {
|
public class ManaCostRenderer extends ItemCellRenderer {
|
||||||
private static final long serialVersionUID = 1770527102334163549L;
|
private static final long serialVersionUID = 1770527102334163549L;
|
||||||
|
|
||||||
private static final int elemtWidth = 13;
|
private static final int elemtWidth = 13;
|
||||||
|
|||||||
@@ -144,69 +144,59 @@ public final class SColumnUtil {
|
|||||||
/** Should be called after column preferences has run, which has created a new column list. */
|
/** Should be called after column preferences has run, which has created a new column list. */
|
||||||
public static void attachSortAndDisplayFunctions() {
|
public static void attachSortAndDisplayFunctions() {
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_FAVORITE).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_FAVORITE).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_FAV_COMPARE, SColumnUtil.FN_FAV_GET);
|
SColumnUtil.FN_FAV_COMPARE, SColumnUtil.FN_FAV_GET, new StarRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_QUANTITY).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_QUANTITY).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_QTY_COMPARE, SColumnUtil.FN_QTY_GET);
|
SColumnUtil.FN_QTY_COMPARE, SColumnUtil.FN_QTY_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_NAME).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_NAME).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_NAME_COMPARE, SColumnUtil.FN_NAME_GET);
|
SColumnUtil.FN_NAME_COMPARE, SColumnUtil.FN_NAME_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_COST).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_COST).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_COST_COMPARE, SColumnUtil.FN_COST_GET);
|
SColumnUtil.FN_COST_COMPARE, SColumnUtil.FN_COST_GET, new ManaCostRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_COLOR).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_COLOR).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_COLOR_COMPARE, SColumnUtil.FN_COLOR_GET);
|
SColumnUtil.FN_COLOR_COMPARE, SColumnUtil.FN_COLOR_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_TYPE).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_TYPE).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_TYPE_COMPARE, SColumnUtil.FN_TYPE_GET);
|
SColumnUtil.FN_TYPE_COMPARE, SColumnUtil.FN_TYPE_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_POWER).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_POWER).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_POWER_COMPARE, SColumnUtil.FN_POWER_GET);
|
SColumnUtil.FN_POWER_COMPARE, SColumnUtil.FN_POWER_GET, new IntegerRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_TOUGHNESS).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_TOUGHNESS).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_TOUGHNESS_COMPARE, SColumnUtil.FN_TOUGHNESS_GET);
|
SColumnUtil.FN_TOUGHNESS_COMPARE, SColumnUtil.FN_TOUGHNESS_GET, new IntegerRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_CMC).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_CMC).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_CMC_COMPARE, SColumnUtil.FN_CMC_GET);
|
SColumnUtil.FN_CMC_COMPARE, SColumnUtil.FN_CMC_GET, new IntegerRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_RARITY).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_RARITY).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_RARITY_COMPARE, SColumnUtil.FN_RARITY_GET);
|
SColumnUtil.FN_RARITY_COMPARE, SColumnUtil.FN_RARITY_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_SET).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_SET).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_SET_COMPARE, SColumnUtil.FN_SET_GET);
|
SColumnUtil.FN_SET_COMPARE, SColumnUtil.FN_SET_GET, new SetCodeRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_AI).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_AI).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_AI_STATUS_COMPARE, SColumnUtil.FN_AI_STATUS_GET);
|
SColumnUtil.FN_AI_STATUS_COMPARE, SColumnUtil.FN_AI_STATUS_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_RANKING).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.CAT_RANKING).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_RANKING_COMPARE, SColumnUtil.FN_RANKING_GET);
|
SColumnUtil.FN_RANKING_COMPARE, SColumnUtil.FN_RANKING_GET, new ItemCellRenderer());
|
||||||
|
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_QUANTITY).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_QUANTITY).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_QTY_COMPARE, SColumnUtil.FN_QTY_GET);
|
SColumnUtil.FN_QTY_COMPARE, SColumnUtil.FN_QTY_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_NAME).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_NAME).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_NAME_COMPARE, SColumnUtil.FN_NAME_GET);
|
SColumnUtil.FN_NAME_COMPARE, SColumnUtil.FN_NAME_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_COST).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_COST).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_COST_COMPARE, SColumnUtil.FN_COST_GET);
|
SColumnUtil.FN_COST_COMPARE, SColumnUtil.FN_COST_GET, new ManaCostRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_COLOR).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_COLOR).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_COLOR_COMPARE, SColumnUtil.FN_COLOR_GET);
|
SColumnUtil.FN_COLOR_COMPARE, SColumnUtil.FN_COLOR_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_TYPE).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_TYPE).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_TYPE_COMPARE, SColumnUtil.FN_TYPE_GET);
|
SColumnUtil.FN_TYPE_COMPARE, SColumnUtil.FN_TYPE_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_POWER).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_POWER).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_POWER_COMPARE, SColumnUtil.FN_POWER_GET);
|
SColumnUtil.FN_POWER_COMPARE, SColumnUtil.FN_POWER_GET, new IntegerRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_TOUGHNESS).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_TOUGHNESS).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_TOUGHNESS_COMPARE, SColumnUtil.FN_TOUGHNESS_GET);
|
SColumnUtil.FN_TOUGHNESS_COMPARE, SColumnUtil.FN_TOUGHNESS_GET, new IntegerRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_CMC).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_CMC).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_CMC_COMPARE, SColumnUtil.FN_CMC_GET);
|
SColumnUtil.FN_CMC_COMPARE, SColumnUtil.FN_CMC_GET, new IntegerRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_RARITY).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_RARITY).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_RARITY_COMPARE, SColumnUtil.FN_RARITY_GET);
|
SColumnUtil.FN_RARITY_COMPARE, SColumnUtil.FN_RARITY_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_SET).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_SET).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_SET_COMPARE, SColumnUtil.FN_SET_GET);
|
SColumnUtil.FN_SET_COMPARE, SColumnUtil.FN_SET_GET, new SetCodeRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_AI).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_AI).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_AI_STATUS_COMPARE, SColumnUtil.FN_AI_STATUS_GET);
|
SColumnUtil.FN_AI_STATUS_COMPARE, SColumnUtil.FN_AI_STATUS_GET, new ItemCellRenderer());
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_RANKING).setSortAndDisplayFunctions(
|
SColumnUtil.getColumn(ColumnName.DECK_RANKING).setSortAndDisplayFunctions(
|
||||||
SColumnUtil.FN_RANKING_COMPARE, SColumnUtil.FN_RANKING_GET);
|
SColumnUtil.FN_RANKING_COMPARE, SColumnUtil.FN_RANKING_GET, new ItemCellRenderer());
|
||||||
|
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_FAVORITE).setCellRenderer(new StarRenderer());
|
SColumnUtil.getColumn(ColumnName.CAT_FAVORITE).setMinWidth(18); //prevent resizing favorite column
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_COST).setCellRenderer(new ManaCostRenderer());
|
SColumnUtil.getColumn(ColumnName.CAT_FAVORITE).setMaxWidth(18);
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_POWER).setCellRenderer(new IntegerRenderer());
|
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_TOUGHNESS).setCellRenderer(new IntegerRenderer());
|
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_CMC).setCellRenderer(new IntegerRenderer());
|
|
||||||
SColumnUtil.getColumn(ColumnName.CAT_SET).setCellRenderer(new SetCodeRenderer());
|
|
||||||
|
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_COST).setCellRenderer(new ManaCostRenderer());
|
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_POWER).setCellRenderer(new IntegerRenderer());
|
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_TOUGHNESS).setCellRenderer(new IntegerRenderer());
|
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_CMC).setCellRenderer(new IntegerRenderer());
|
|
||||||
SColumnUtil.getColumn(ColumnName.DECK_SET).setCellRenderer(new SetCodeRenderer());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -365,7 +355,11 @@ public final class SColumnUtil {
|
|||||||
private static final Function<Entry<InventoryItem, Integer>, Comparable<?>> FN_FAV_COMPARE = new Function<Entry<InventoryItem, Integer>, Comparable<?>>() {
|
private static final Function<Entry<InventoryItem, Integer>, Comparable<?>> FN_FAV_COMPARE = new Function<Entry<InventoryItem, Integer>, Comparable<?>>() {
|
||||||
@Override
|
@Override
|
||||||
public Comparable<?> apply(final Entry<InventoryItem, Integer> from) {
|
public Comparable<?> apply(final Entry<InventoryItem, Integer> from) {
|
||||||
return from.getValue();
|
IPaperCard card = SColumnUtil.toCard(from.getKey());
|
||||||
|
if (card == null) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return card.getPrefs().getStarCount();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package forge.gui.toolbox.itemmanager.views;
|
package forge.gui.toolbox.itemmanager.views;
|
||||||
|
|
||||||
import javax.swing.table.DefaultTableCellRenderer;
|
|
||||||
|
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.card.CardEdition;
|
import forge.card.CardEdition;
|
||||||
|
|
||||||
@@ -26,7 +24,12 @@ import forge.card.CardEdition;
|
|||||||
* A wrapper to show explanatory tooltips for edition set abbreviations.
|
* A wrapper to show explanatory tooltips for edition set abbreviations.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class SetCodeRenderer extends DefaultTableCellRenderer implements AlwaysShowToolTip {
|
public class SetCodeRenderer extends ItemCellRenderer {
|
||||||
|
@Override
|
||||||
|
public boolean alwaysShowTooltip() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getToolTipText() {
|
public String getToolTipText() {
|
||||||
String setAbbrev = getText();
|
String setAbbrev = getText();
|
||||||
|
|||||||
@@ -19,22 +19,29 @@ package forge.gui.toolbox.itemmanager.views;
|
|||||||
|
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
import javax.swing.table.DefaultTableCellRenderer;
|
|
||||||
|
|
||||||
|
import forge.card.CardPreferences;
|
||||||
import forge.gui.toolbox.FSkin;
|
import forge.gui.toolbox.FSkin;
|
||||||
import forge.gui.toolbox.FSkin.SkinImage;
|
import forge.gui.toolbox.FSkin.SkinImage;
|
||||||
import forge.item.IPaperCard;
|
import forge.item.IPaperCard;
|
||||||
|
import forge.properties.NewConstants;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays favorite icons
|
* Displays favorite icons
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class StarRenderer extends DefaultTableCellRenderer {
|
public class StarRenderer extends ItemCellRenderer {
|
||||||
private IPaperCard card;
|
private IPaperCard card;
|
||||||
private SkinImage skinImage;
|
private SkinImage skinImage;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean alwaysShowTooltip() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
@@ -55,18 +62,32 @@ public class StarRenderer extends DefaultTableCellRenderer {
|
|||||||
return super.getTableCellRendererComponent(table, "", isSelected, hasFocus, row, column);
|
return super.getTableCellRendererComponent(table, "", isSelected, hasFocus, row, column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processMouseEvent(final MouseEvent e, final JTable table, final Object value, final int row, final int column) {
|
||||||
|
if (e.getID() == MouseEvent.MOUSE_PRESSED && e.getButton() == 1 && value instanceof IPaperCard) {
|
||||||
|
card = (IPaperCard) value;
|
||||||
|
CardPreferences prefs = card.getPrefs();
|
||||||
|
prefs.setStarCount((prefs.getStarCount() + 1) % 2); //TODO: consider supporting more than 1 star
|
||||||
|
CardPreferences.save(NewConstants.CARD_PREFS_FILE);
|
||||||
|
update();
|
||||||
|
table.setRowSelectionInterval(row, row);
|
||||||
|
table.repaint();
|
||||||
|
e.consume();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void update() {
|
private void update() {
|
||||||
if (card == null) {
|
if (card == null) {
|
||||||
this.setToolTipText("");
|
this.setToolTipText("");
|
||||||
skinImage = null;
|
skinImage = null;
|
||||||
}
|
}
|
||||||
else if (card.getPrefs().getStarCount() == 0) {
|
else if (card.getPrefs().getStarCount() == 0) {
|
||||||
this.setToolTipText("Click to add " + card.getName() + " to favorites");
|
this.setToolTipText("Click to add " + card.getName() + " to your favorites");
|
||||||
skinImage = null;
|
skinImage = FSkin.getImage(FSkin.EditorImages.IMG_STAR_OUTINE);
|
||||||
}
|
}
|
||||||
else { //TODO: consider supporting more than 1 star
|
else { //TODO: consider supporting more than 1 star
|
||||||
this.setToolTipText("Click to remove " + card.getName() + " from favorites");
|
this.setToolTipText("Click to remove " + card.getName() + " from your favorites");
|
||||||
skinImage = null;
|
skinImage = FSkin.getImage(FSkin.EditorImages.IMG_STAR_FILLED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +102,7 @@ public class StarRenderer extends DefaultTableCellRenderer {
|
|||||||
|
|
||||||
if (skinImage == null) { return; }
|
if (skinImage == null) { return; }
|
||||||
|
|
||||||
int size = 13;
|
int size = 15;
|
||||||
int width = this.getWidth();
|
int width = this.getWidth();
|
||||||
int height = this.getHeight();
|
int height = this.getHeight();
|
||||||
if (size > width) {
|
if (size > width) {
|
||||||
|
|||||||
@@ -155,8 +155,9 @@ public class TableColumnInfo<T> extends TableColumn {
|
|||||||
* @param lambda0 the fnSort
|
* @param lambda0 the fnSort
|
||||||
* @param lambda1 the fnDisplay
|
* @param lambda1 the fnDisplay
|
||||||
*/
|
*/
|
||||||
public void setSortAndDisplayFunctions(final Function<Entry<T, Integer>, Comparable<?>> lambda0, final Function<Entry<T, Integer>, Object> lambda1) {
|
public void setSortAndDisplayFunctions(final Function<Entry<T, Integer>, Comparable<?>> lambda0, final Function<Entry<T, Integer>, Object> lambda1, ItemCellRenderer cellRenderer) {
|
||||||
this.fnSort = lambda0;
|
this.fnSort = lambda0;
|
||||||
this.fnDisplay = lambda1;
|
this.fnDisplay = lambda1;
|
||||||
|
this.setCellRenderer(cellRenderer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,9 +80,9 @@ public final class NewConstants {
|
|||||||
public static final String DECK_COMMANDER_DIR = DECK_BASE_DIR + "commander/";
|
public static final String DECK_COMMANDER_DIR = DECK_BASE_DIR + "commander/";
|
||||||
public static final String QUEST_SAVE_DIR = USER_QUEST_DIR + "saves/";
|
public static final String QUEST_SAVE_DIR = USER_QUEST_DIR + "saves/";
|
||||||
public static final String MAIN_PREFS_FILE = USER_PREFS_DIR + "forge.preferences";
|
public static final String MAIN_PREFS_FILE = USER_PREFS_DIR + "forge.preferences";
|
||||||
|
public static final String CARD_PREFS_FILE = USER_PREFS_DIR + "card.preferences";
|
||||||
public static final String QUEST_PREFS_FILE = USER_PREFS_DIR + "quest.preferences";
|
public static final String QUEST_PREFS_FILE = USER_PREFS_DIR + "quest.preferences";
|
||||||
|
|
||||||
|
|
||||||
// data that has defaults in the program dir but overrides/additions in the user dir
|
// data that has defaults in the program dir but overrides/additions in the user dir
|
||||||
private static final String _DEFAULTS_DIR = _RES_ROOT + "defaults/";
|
private static final String _DEFAULTS_DIR = _RES_ROOT + "defaults/";
|
||||||
public static final FileLocation EDITOR_PREFERENCES_FILE = new FileLocation(_DEFAULTS_DIR, USER_PREFS_DIR, "editor.preferences");
|
public static final FileLocation EDITOR_PREFERENCES_FILE = new FileLocation(_DEFAULTS_DIR, USER_PREFS_DIR, "editor.preferences");
|
||||||
|
|||||||
Reference in New Issue
Block a user