TokenViewer doesn't crash now.. Just need it to display

This commit is contained in:
Chris H
2019-03-31 22:48:57 -04:00
parent a050f7c26c
commit f5a4360339
32 changed files with 160 additions and 52 deletions

View File

@@ -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());

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -346,7 +346,6 @@ Type=Other
337 L Forest
[tokens]
herald_of_the_host
stoneforged_blade
tuktuk_the_returned
w_4_4_angel_flying

View File

@@ -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

View File

@@ -318,7 +318,6 @@ Type=Other
309 L Forest
[tokens]
bloodforged_battle-axe
gold
c_0_1_eldrazi_spawn_sac
w_2_2_cat

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -96,6 +96,5 @@ Type=Duel_Decks
84 L Forest
[tokens]
spawnwrithe
u_2_2_illusion
b_1_1_assassin_lose_con

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -159,5 +159,4 @@ hornet
c_1_1_sliver
b_1_1_rat
r_1_1_goblin
g_1_1_spike
volraths_laboratory
g_1_1_spike

View File

@@ -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

View File

@@ -126,7 +126,6 @@ S Volrath
S Xantcha
[tokens]
arrest
c_1_1_sliver
w_1_1_spirit_flying
r_5_5_dragon_flying