mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
TokenViewer doesn't crash now.. Just need it to display
This commit is contained in:
@@ -39,6 +39,18 @@ public class TokenDb implements ITokenDatabase {
|
||||
return getToken(tokenName, CardEdition.UNKNOWN.getName());
|
||||
}
|
||||
|
||||
public void preloadTokens() {
|
||||
for(CardEdition edition : this.editions) {
|
||||
for (String name : edition.getTokens().keySet()) {
|
||||
try {
|
||||
getToken(name, edition.getCode());
|
||||
} catch(Exception e) {
|
||||
System.out.println(name + "_" + edition.getCode() + " defined in Edition file, but not defined as a token script.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PaperToken getToken(String tokenName, String edition) {
|
||||
String fullName = String.format("%s_%s", tokenName, edition.toLowerCase());
|
||||
|
||||
@@ -2,6 +2,7 @@ package forge.itemmanager;
|
||||
|
||||
import forge.item.PaperToken;
|
||||
import forge.itemmanager.filters.ItemFilter;
|
||||
import forge.itemmanager.filters.TokenSearchFilter;
|
||||
import forge.screens.match.controllers.CDetailPicture;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -18,7 +19,11 @@ public class TokenManager extends ItemManager<PaperToken> {
|
||||
|
||||
@Override
|
||||
protected ItemFilter<PaperToken> createSearchFilter() {
|
||||
return null;
|
||||
return createSearchFilter(this);
|
||||
}
|
||||
|
||||
public static ItemFilter<PaperToken> createSearchFilter(final ItemManager<? super PaperToken> itemManager) {
|
||||
return new TokenSearchFilter(itemManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
package forge.itemmanager.filters;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import forge.UiCommand;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.PaperToken;
|
||||
import forge.itemmanager.ItemManager;
|
||||
import forge.itemmanager.SFilterUtil;
|
||||
import forge.toolbox.FComboBoxWrapper;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FTextField;
|
||||
import forge.toolbox.LayoutHelper;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
|
||||
|
||||
public class TokenSearchFilter extends TextSearchFilter<PaperToken> {
|
||||
private FComboBoxWrapper<String> cbSearchMode;
|
||||
private FLabel btnName, btnType, btnText, btnCost;
|
||||
|
||||
public TokenSearchFilter(ItemManager<? super PaperToken> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemFilter<PaperToken> createCopy() {
|
||||
TokenSearchFilter copy = new TokenSearchFilter(itemManager);
|
||||
copy.getWidget(); //initialize widget
|
||||
copy.txtSearch.setText(this.txtSearch.getText());
|
||||
copy.cbSearchMode.setSelectedIndex(this.cbSearchMode.getSelectedIndex());
|
||||
copy.btnName.setSelected(this.btnName.isSelected());
|
||||
copy.btnType.setSelected(this.btnType.isSelected());
|
||||
copy.btnText.setSelected(this.btnText.isSelected());
|
||||
copy.btnCost.setSelected(this.btnCost.isSelected());
|
||||
return copy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
super.reset();
|
||||
this.cbSearchMode.setSelectedIndex(0);
|
||||
this.btnName.setSelected(true);
|
||||
this.btnType.setSelected(true);
|
||||
this.btnText.setSelected(true);
|
||||
this.btnCost.setSelected(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void buildWidget(JPanel widget) {
|
||||
super.buildWidget(widget);
|
||||
|
||||
cbSearchMode = new FComboBoxWrapper<String>();
|
||||
cbSearchMode.addItem("in");
|
||||
cbSearchMode.addItem("not in");
|
||||
cbSearchMode.addTo(widget);
|
||||
cbSearchMode.addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent arg0) {
|
||||
if (!txtSearch.isEmpty()) {
|
||||
applyChange();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
btnName = addButton(widget, "Name");
|
||||
btnType = addButton(widget, "Type");
|
||||
btnText = addButton(widget, "Text");
|
||||
btnCost = addButton(widget, "Cost");
|
||||
|
||||
btnCost.setSelected(false);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doWidgetLayout(LayoutHelper helper) {
|
||||
final int comboBoxWidth = 61;
|
||||
final int buttonWidth = 51;
|
||||
|
||||
helper.fillLine(txtSearch, FTextField.HEIGHT, comboBoxWidth + buttonWidth * 4 + 16); //leave space for combo box and buttons
|
||||
helper.include(cbSearchMode.getComponent(), comboBoxWidth, FTextField.HEIGHT);
|
||||
helper.include(btnName, buttonWidth, FTextField.HEIGHT);
|
||||
helper.include(btnType, buttonWidth, FTextField.HEIGHT);
|
||||
helper.include(btnText, buttonWidth, FTextField.HEIGHT);
|
||||
helper.include(btnCost, buttonWidth, FTextField.HEIGHT);
|
||||
}
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
private FLabel addButton(JPanel widget, String text) {
|
||||
FLabel button = new FLabel.Builder().text(text).hoverable().selectable().selected().build();
|
||||
|
||||
button.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
applyChange();
|
||||
}
|
||||
});
|
||||
|
||||
widget.add(button);
|
||||
return button;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Predicate<PaperToken> buildPredicate() {
|
||||
// Don't filter anything out for now.
|
||||
return new Predicate<PaperToken>() {
|
||||
@Override
|
||||
public boolean apply(PaperToken paperToken) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <U extends InventoryItem> boolean showUnsupportedItem(U item) {
|
||||
//fallback to regular item text filter if item not PaperCard
|
||||
boolean result = btnName.isSelected() && SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item);
|
||||
if (cbSearchMode.getSelectedIndex() != 0) { //invert result if needed
|
||||
result = !result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,7 @@ public class CEditorTokenViewer extends ACEditorBase<PaperToken, DeckBase> {
|
||||
private DragCell deckGenParent = null;
|
||||
private DragCell probsParent = null;
|
||||
|
||||
private final List<PaperToken> fullCatalogCards = FModel.getMagicDb().getAllTokens().getAllTokens();
|
||||
private List<PaperToken> fullCatalogCards;
|
||||
|
||||
// remember changed gui elements
|
||||
private String CCTabLabel = new String();
|
||||
@@ -38,6 +38,9 @@ public class CEditorTokenViewer extends ACEditorBase<PaperToken, DeckBase> {
|
||||
public CEditorTokenViewer(final CDetailPicture cDetailPicture) {
|
||||
super(FScreen.TOKEN_VIEWER, cDetailPicture);
|
||||
|
||||
FModel.getMagicDb().getAllTokens().preloadTokens();
|
||||
fullCatalogCards = FModel.getMagicDb().getAllTokens().getAllTokens();
|
||||
|
||||
final TokenManager catalogManager = new TokenManager(getCDetailPicture(), false);
|
||||
final TokenManager deckManager = new TokenManager(cDetailPicture, false);
|
||||
catalogManager.setCaption("All Tokens");
|
||||
@@ -102,8 +105,8 @@ public class CEditorTokenViewer extends ACEditorBase<PaperToken, DeckBase> {
|
||||
VCardCatalog.SINGLETON_INSTANCE.getTabLabel().setText("All tokens");
|
||||
|
||||
this.getBtnAdd().setVisible(false);
|
||||
this.getBtnAdd4().setVisible(false);
|
||||
this.getBtnRemove().setVisible(false);
|
||||
|
||||
this.getBtnAddBasicLands().setVisible(false);
|
||||
|
||||
VProbabilities.SINGLETON_INSTANCE.getTabLabel().setVisible(false);
|
||||
|
||||
@@ -322,6 +322,6 @@ FoilAlwaysInCommonSlot=False
|
||||
c_1_1_spirit
|
||||
u_5_5_dragon_spirit_flying
|
||||
u_1_1_illusion_flying
|
||||
b_x_x_rat
|
||||
b_1_1_rat
|
||||
g_x_x_elemental
|
||||
g_1_1_snake
|
||||
@@ -388,5 +388,5 @@ g_0_1_plant
|
||||
g_1_1_saproling
|
||||
gu_2_2_drake_flying
|
||||
br_3_1_graveborn_haste
|
||||
c_2_2_a_assembly-worker
|
||||
c_2_2_a_assembly_worker
|
||||
c_1_1_a_myr
|
||||
@@ -346,7 +346,6 @@ Type=Other
|
||||
337 L Forest
|
||||
|
||||
[tokens]
|
||||
herald_of_the_host
|
||||
stoneforged_blade
|
||||
tuktuk_the_returned
|
||||
w_4_4_angel_flying
|
||||
|
||||
@@ -351,13 +351,8 @@ Type=Other
|
||||
340 L Forest
|
||||
|
||||
[tokens]
|
||||
banshee_of_the_dread_choir
|
||||
blade_of_selves
|
||||
broodbirth_viper
|
||||
caller_of_the_pack
|
||||
gold
|
||||
lightning_rager
|
||||
warchief_giant
|
||||
c_1_1_shapeshifter_changeling
|
||||
w_4_4_angel_flying
|
||||
w_2_2_cat
|
||||
|
||||
@@ -318,7 +318,6 @@ Type=Other
|
||||
309 L Forest
|
||||
|
||||
[tokens]
|
||||
bloodforged_battle-axe
|
||||
gold
|
||||
c_0_1_eldrazi_spawn_sac
|
||||
w_2_2_cat
|
||||
|
||||
@@ -319,10 +319,7 @@ Type=Other
|
||||
312 L Forest
|
||||
|
||||
[tokens]
|
||||
herald_of_the_host
|
||||
lightning_rager
|
||||
tuktuk_the_returned
|
||||
warchief_giant
|
||||
c_1_1_shapeshifter_changeling
|
||||
w_1_1_bird_flying
|
||||
w_0_1_goat
|
||||
|
||||
@@ -328,8 +328,6 @@ Type=Other
|
||||
320 L Forest
|
||||
|
||||
[tokens]
|
||||
banshee_of_the_dread_choir
|
||||
caller_of_the_pack
|
||||
w_1_1_kithkin_soldier
|
||||
w_2_2_knight_vigilance
|
||||
w_1_1_spirit_flying
|
||||
|
||||
@@ -328,7 +328,6 @@ Type=Other
|
||||
298 U Zoetic Cavern
|
||||
|
||||
[tokens]
|
||||
spawnwrithe
|
||||
c_0_1_eldrazi_spawn_sac
|
||||
c_0_1_eldrazi_spawn_sac
|
||||
w_1_1_kithkin_soldier
|
||||
|
||||
@@ -157,7 +157,6 @@ Booster=10 Common, 3 Uncommon, 1 RareMythic, 1 BasicLand ALA
|
||||
133 C Zombie Outlander
|
||||
|
||||
[tokens]
|
||||
mirror-sigil_sergeant
|
||||
w_4_4_angel_flying
|
||||
w_1_1_soldier
|
||||
b_2_2_zombie
|
||||
|
||||
@@ -232,7 +232,6 @@ Booster=10 Common:!fromSheet("CN2 Draft Matters"), 3 Uncommon:!fromSheet("CN2 Dr
|
||||
221 U Shimmering Grotto
|
||||
|
||||
[tokens]
|
||||
spitting_slime
|
||||
w_1_1_soldier
|
||||
w_1_2_soldier_defender
|
||||
w_1_1_spirit_flying
|
||||
|
||||
@@ -192,7 +192,6 @@ FoilAlwaysInCommonSlot=False
|
||||
180 C Simic Growth Chamber
|
||||
|
||||
[tokens]
|
||||
sprouting_phytohydra
|
||||
r_3_1_elemental
|
||||
r_2_1_goblin_haste
|
||||
g_1_1_saproling
|
||||
|
||||
@@ -293,7 +293,6 @@ BoosterMustContain=Legendary Creature
|
||||
|
||||
[tokens]
|
||||
karox_bladewing
|
||||
mishra's_self-replicator
|
||||
w_2_2_knight_vigilance
|
||||
w_2_2_knight_vigilance
|
||||
w_1_1_soldier
|
||||
|
||||
@@ -96,6 +96,5 @@ Type=Duel_Decks
|
||||
84 L Forest
|
||||
|
||||
[tokens]
|
||||
spawnwrithe
|
||||
u_2_2_illusion
|
||||
b_1_1_assassin_lose_con
|
||||
@@ -192,12 +192,10 @@ Booster=11 Common, 3 Uncommon, 1 Rare
|
||||
|
||||
[tokens]
|
||||
goldmeadow_harrier
|
||||
imperial_mask
|
||||
cloud_sprite
|
||||
festering_goblin
|
||||
spark_elemental
|
||||
llanowar_elves
|
||||
nacatl_war-pride
|
||||
metallic_sliver
|
||||
w_1_1_soldier
|
||||
b_2_2_zombie
|
||||
|
||||
@@ -80,4 +80,4 @@ Type=Other
|
||||
w_2_2_knight_vigilance
|
||||
b_2_2_zombie
|
||||
r_1_1_goblin
|
||||
c_1_1_thopter_a_flying
|
||||
c_1_1_a_thopter_flying
|
||||
@@ -260,7 +260,6 @@ Booster=10 Common, 3 Uncommon, 1 RareMythic, 1 BasicLand RTR
|
||||
210 C Zhur-Taa Swine
|
||||
|
||||
[tokens]
|
||||
giant_adephage
|
||||
w_4_4_angel_flying
|
||||
w_2_2_knight_vigilance
|
||||
w_2_2_knight_vigilance
|
||||
|
||||
@@ -145,9 +145,8 @@ g_3_3_centaur
|
||||
g_1_1_saproling
|
||||
g_1_1_saproling
|
||||
g_5_5_wurm_trample
|
||||
wg_8_8_elemental_vigilance
|
||||
wg_2_2_elf_knight_vigilance
|
||||
gw_8_8_elemental_vigilance
|
||||
gw_2_2_elf_knight_vigilance
|
||||
ub_1_1_horror_flying
|
||||
bg_1_1_insect
|
||||
wr_1_1_soldier_haste
|
||||
copy
|
||||
rw_1_1_soldier_haste
|
||||
@@ -289,5 +289,5 @@ w_4_4_angel_flying_vigilance
|
||||
w_1_1_soldier_lifelink
|
||||
u_1_1_bird_illusion_flying
|
||||
r_1_1_goblin
|
||||
wg_2_2_elf_knight_vigilance
|
||||
gw_2_2_elf_knight_vigilance
|
||||
bg_1_1_insect
|
||||
@@ -305,7 +305,7 @@ u_2_2_illusion_illusory
|
||||
u_1_1_merfolk_hexproof
|
||||
b_2_2_pirate_menace
|
||||
g_3_3_dinosaur_trample
|
||||
0_2_plant_defender
|
||||
g_0_2_plant_defender
|
||||
c_a_treasure_sac
|
||||
c_a_treasure_sac
|
||||
c_a_treasure_sac
|
||||
|
||||
@@ -158,14 +158,6 @@ Type=Other
|
||||
149 R Temple of the False God
|
||||
|
||||
[tokens]
|
||||
banshee_of_the_dread_choir
|
||||
blade_of_selves
|
||||
broodbirth_viper
|
||||
caller_of_the_pack
|
||||
herald_of_the_host
|
||||
lightning_rager
|
||||
stoneforged_blade
|
||||
warchief_giant
|
||||
c_0_1_eldrazi_spawn_sac
|
||||
w_2_2_knight_vigilance
|
||||
w_1_1_kor_soldier
|
||||
|
||||
@@ -176,7 +176,6 @@ Booster=11 Common, 3 Uncommon, 1 Rare
|
||||
53 C Wistful Thinking
|
||||
|
||||
[tokens]
|
||||
chronozoa
|
||||
w_1_1_soldier
|
||||
b_2_2_knight_flanking_pro_white_haste
|
||||
g_3_3_ape
|
||||
|
||||
@@ -285,7 +285,6 @@ Booster=10 Common, 3 Uncommon, 1 RareMythic, 1 BasicLand
|
||||
84 U Zanikev Locust
|
||||
|
||||
[tokens]
|
||||
pack_rat
|
||||
w_1_1_bird_flying
|
||||
w_2_2_knight_vigilance
|
||||
w_2_2_knight_vigilance
|
||||
|
||||
@@ -223,7 +223,7 @@ r_1_1_elemental
|
||||
r_0_1_elemental_rekindling_phoenix
|
||||
g_3_3_dinosaur_trample
|
||||
g_1_1_saproling
|
||||
g_4_4_a_golem
|
||||
d_4_4_a_golem
|
||||
c_a_treasure_sac
|
||||
c_a_treasure_sac
|
||||
c_a_treasure_sac
|
||||
|
||||
@@ -260,7 +260,6 @@ Booster=10 Common, 3 Uncommon, 1 RareMythic, 1 BasicLand
|
||||
223 M Wurmcoil Engine
|
||||
|
||||
[tokens]
|
||||
myr_propagator
|
||||
w_2_2_cat
|
||||
w_1_1_soldier
|
||||
r_1_1_goblin
|
||||
|
||||
@@ -312,7 +312,6 @@ Booster=11 Common, 3 Uncommon, 1 Rare
|
||||
157 C Zealous Guardian
|
||||
|
||||
[tokens]
|
||||
spawnwrithe
|
||||
w_1_1_kithkin_soldier
|
||||
w_1_1_spirit_flying
|
||||
b_1_1_rat
|
||||
|
||||
@@ -160,4 +160,3 @@ c_1_1_sliver
|
||||
b_1_1_rat
|
||||
r_1_1_goblin
|
||||
g_1_1_spike
|
||||
volraths_laboratory
|
||||
@@ -317,11 +317,11 @@ kobolds_of_kher_keep
|
||||
w_1_1_citizen
|
||||
w_2_2_griffin_flying
|
||||
u_1_1_camarid
|
||||
b_1_2_bat_flying_sengir_nosferatu
|
||||
b_1_2_bat_flying_nosferatu
|
||||
b_2_4_spider_reach
|
||||
b_1_1_thrull
|
||||
r_1_1_goblin
|
||||
g_1_1_saproling
|
||||
g_x_x_wurm
|
||||
c_2_2_a_assembly-worker
|
||||
c_1_1_triskelavite_flying_ammo
|
||||
c_2_2_a_assembly_worker
|
||||
c_1_1_a_triskelavite_flying_ammo
|
||||
@@ -126,7 +126,6 @@ S Volrath
|
||||
S Xantcha
|
||||
|
||||
[tokens]
|
||||
arrest
|
||||
c_1_1_sliver
|
||||
w_1_1_spirit_flying
|
||||
r_5_5_dragon_flying
|
||||
|
||||
Reference in New Issue
Block a user