translate advanced search

This commit is contained in:
CCTV-1
2020-01-19 10:04:14 +08:00
parent f2f984aff6
commit 51e5ce0e17

View File

@@ -33,23 +33,25 @@ import forge.planarconquest.ConquestRegion;
import forge.quest.QuestWorld; import forge.quest.QuestWorld;
import forge.util.gui.SGuiChoose; import forge.util.gui.SGuiChoose;
import forge.util.gui.SOptionPane; import forge.util.gui.SOptionPane;
import forge.util.Localizer;
import forge.util.CardTranslation;
public class AdvancedSearch { public class AdvancedSearch {
public enum FilterOption { public enum FilterOption {
NONE("(none)", null, null, null), NONE("(none)", null, null, null),
CARD_NAME("Name", PaperCard.class, FilterOperator.STRING_OPS, new StringEvaluator<PaperCard>() { CARD_NAME("lblName", PaperCard.class, FilterOperator.STRING_OPS, new StringEvaluator<PaperCard>() {
@Override @Override
protected String getItemValue(PaperCard input) { protected String getItemValue(PaperCard input) {
return input.getName(); return input.getName();
} }
}), }),
CARD_RULES_TEXT("Rules Text", PaperCard.class, FilterOperator.STRING_OPS, new StringEvaluator<PaperCard>() { CARD_RULES_TEXT("lblRulesText", PaperCard.class, FilterOperator.STRING_OPS, new StringEvaluator<PaperCard>() {
@Override @Override
protected String getItemValue(PaperCard input) { protected String getItemValue(PaperCard input) {
return input.getRules().getOracleText(); return input.getRules().getOracleText();
} }
}), }),
CARD_KEYWORDS("Keywords", PaperCard.class, FilterOperator.COLLECTION_OPS, new CustomListEvaluator<PaperCard, Keyword>(Keyword.getAllKeywords()) { CARD_KEYWORDS("lblKeywords", PaperCard.class, FilterOperator.COLLECTION_OPS, new CustomListEvaluator<PaperCard, Keyword>(Keyword.getAllKeywords()) {
@Override @Override
protected Keyword getItemValue(PaperCard input) { protected Keyword getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -59,13 +61,13 @@ public class AdvancedSearch {
return Keyword.getKeywordSet(input); return Keyword.getKeywordSet(input);
} }
}), }),
CARD_SET("Set", PaperCard.class, FilterOperator.SINGLE_LIST_OPS, new CustomListEvaluator<PaperCard, CardEdition>(FModel.getMagicDb().getSortedEditions(), CardEdition.FN_GET_CODE) { CARD_SET("lblSet", PaperCard.class, FilterOperator.SINGLE_LIST_OPS, new CustomListEvaluator<PaperCard, CardEdition>(FModel.getMagicDb().getSortedEditions(), CardEdition.FN_GET_CODE) {
@Override @Override
protected CardEdition getItemValue(PaperCard input) { protected CardEdition getItemValue(PaperCard input) {
return FModel.getMagicDb().getEditions().get(input.getEdition()); return FModel.getMagicDb().getEditions().get(input.getEdition());
} }
}), }),
CARD_FORMAT("Format", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, GameFormat>((List<GameFormat>)FModel.getFormats().getFilterList()) { CARD_FORMAT("lblFormat", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, GameFormat>((List<GameFormat>)FModel.getFormats().getFilterList()) {
@Override @Override
protected GameFormat getItemValue(PaperCard input) { protected GameFormat getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -75,7 +77,7 @@ public class AdvancedSearch {
return FModel.getFormats().getAllFormatsOfCard(input); return FModel.getFormats().getAllFormatsOfCard(input);
} }
}), }),
CARD_PLANE("Plane", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, ConquestPlane>(ImmutableList.copyOf(FModel.getPlanes())) { CARD_PLANE("lblPlane", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, ConquestPlane>(ImmutableList.copyOf(FModel.getPlanes())) {
@Override @Override
protected ConquestPlane getItemValue(PaperCard input) { protected ConquestPlane getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -85,7 +87,7 @@ public class AdvancedSearch {
return ConquestPlane.getAllPlanesOfCard(input); return ConquestPlane.getAllPlanesOfCard(input);
} }
}), }),
CARD_REGION("Region", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, ConquestRegion>(ConquestRegion.getAllRegions()) { CARD_REGION("lblRegion", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, ConquestRegion>(ConquestRegion.getAllRegions()) {
@Override @Override
protected ConquestRegion getItemValue(PaperCard input) { protected ConquestRegion getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -95,7 +97,7 @@ public class AdvancedSearch {
return ConquestRegion.getAllRegionsOfCard(input); return ConquestRegion.getAllRegionsOfCard(input);
} }
}), }),
CARD_QUEST_WORLD("Quest World", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, QuestWorld>(ImmutableList.copyOf(FModel.getWorlds())) { CARD_QUEST_WORLD("lblQuestWorld", PaperCard.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<PaperCard, QuestWorld>(ImmutableList.copyOf(FModel.getWorlds())) {
@Override @Override
protected QuestWorld getItemValue(PaperCard input) { protected QuestWorld getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -105,7 +107,7 @@ public class AdvancedSearch {
return QuestWorld.getAllQuestWorldsOfCard(input); return QuestWorld.getAllQuestWorldsOfCard(input);
} }
}), }),
CARD_COLOR("Color", PaperCard.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<PaperCard>() { CARD_COLOR("lblColor", PaperCard.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<PaperCard>() {
@Override @Override
protected MagicColor.Color getItemValue(PaperCard input) { protected MagicColor.Color getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -115,7 +117,7 @@ public class AdvancedSearch {
return input.getRules().getColor().toEnumSet(); return input.getRules().getColor().toEnumSet();
} }
}), }),
CARD_COLOR_IDENTITY("Color Identity", PaperCard.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<PaperCard>() { CARD_COLOR_IDENTITY("lblColorIdentity", PaperCard.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<PaperCard>() {
@Override @Override
protected MagicColor.Color getItemValue(PaperCard input) { protected MagicColor.Color getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -125,13 +127,13 @@ public class AdvancedSearch {
return input.getRules().getColorIdentity().toEnumSet(); return input.getRules().getColorIdentity().toEnumSet();
} }
}), }),
CARD_COLOR_COUNT("Color Count", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 5) { CARD_COLOR_COUNT("lblColorCount", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 5) {
@Override @Override
protected Integer getItemValue(PaperCard input) { protected Integer getItemValue(PaperCard input) {
return input.getRules().getColor().countColors(); return input.getRules().getColor().countColors();
} }
}), }),
CARD_TYPE("Type", PaperCard.class, FilterOperator.COMBINATION_OPS, new CustomListEvaluator<PaperCard, String>(CardType.getCombinedSuperAndCoreTypes()) { CARD_TYPE("lblType", PaperCard.class, FilterOperator.COMBINATION_OPS, new CustomListEvaluator<PaperCard, String>(CardType.getCombinedSuperAndCoreTypes()) {
@Override @Override
protected String getItemValue(PaperCard input) { protected String getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -149,7 +151,7 @@ public class AdvancedSearch {
return types; return types;
} }
}), }),
CARD_SUB_TYPE("Subtype", PaperCard.class, FilterOperator.COMBINATION_OPS, new CustomListEvaluator<PaperCard, String>(CardType.getSortedSubTypes()) { CARD_SUB_TYPE("lblSubtype", PaperCard.class, FilterOperator.COMBINATION_OPS, new CustomListEvaluator<PaperCard, String>(CardType.getSortedSubTypes()) {
@Override @Override
protected String getItemValue(PaperCard input) { protected String getItemValue(PaperCard input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -159,19 +161,19 @@ public class AdvancedSearch {
return (Set<String>)input.getRules().getType().getSubtypes(); return (Set<String>)input.getRules().getType().getSubtypes();
} }
}), }),
CARD_CMC("CMC", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 20) { CARD_CMC("lblCMC", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 20) {
@Override @Override
protected Integer getItemValue(PaperCard input) { protected Integer getItemValue(PaperCard input) {
return input.getRules().getManaCost().getCMC(); return input.getRules().getManaCost().getCMC();
} }
}), }),
CARD_GENERIC_COST("Generic Cost", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 20) { CARD_GENERIC_COST("lblGenericCost", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 20) {
@Override @Override
protected Integer getItemValue(PaperCard input) { protected Integer getItemValue(PaperCard input) {
return input.getRules().getManaCost().getGenericCost(); return input.getRules().getManaCost().getGenericCost();
} }
}), }),
CARD_POWER("Power", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 20) { CARD_POWER("lblPower", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 20) {
@Override @Override
protected Integer getItemValue(PaperCard input) { protected Integer getItemValue(PaperCard input) {
CardRules rules = input.getRules(); CardRules rules = input.getRules();
@@ -181,7 +183,7 @@ public class AdvancedSearch {
return null; return null;
} }
}), }),
CARD_TOUGHNESS("Toughness", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 20) { CARD_TOUGHNESS("lblToughness", PaperCard.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<PaperCard>(0, 20) {
@Override @Override
protected Integer getItemValue(PaperCard input) { protected Integer getItemValue(PaperCard input) {
CardRules rules = input.getRules(); CardRules rules = input.getRules();
@@ -191,19 +193,19 @@ public class AdvancedSearch {
return null; return null;
} }
}), }),
CARD_MANA_COST("Mana Cost", PaperCard.class, FilterOperator.STRING_OPS, new StringEvaluator<PaperCard>() { CARD_MANA_COST("lblManaCost", PaperCard.class, FilterOperator.STRING_OPS, new StringEvaluator<PaperCard>() {
@Override @Override
protected String getItemValue(PaperCard input) { protected String getItemValue(PaperCard input) {
return input.getRules().getManaCost().toString(); return input.getRules().getManaCost().toString();
} }
}), }),
CARD_RARITY("Rarity", PaperCard.class, FilterOperator.SINGLE_LIST_OPS, new CustomListEvaluator<PaperCard, CardRarity>(Arrays.asList(CardRarity.FILTER_OPTIONS), CardRarity.FN_GET_LONG_NAME, CardRarity.FN_GET_LONG_NAME) { CARD_RARITY("lblRarity", PaperCard.class, FilterOperator.SINGLE_LIST_OPS, new CustomListEvaluator<PaperCard, CardRarity>(Arrays.asList(CardRarity.FILTER_OPTIONS), CardRarity.FN_GET_LONG_NAME, CardRarity.FN_GET_LONG_NAME) {
@Override @Override
protected CardRarity getItemValue(PaperCard input) { protected CardRarity getItemValue(PaperCard input) {
return input.getRarity(); return input.getRarity();
} }
}), }),
CARD_FIRST_PRINTING("First Printing", PaperCard.class, FilterOperator.BOOLEAN_OPS, new BooleanEvaluator<PaperCard>() { CARD_FIRST_PRINTING("lblFirstPrinting", PaperCard.class, FilterOperator.BOOLEAN_OPS, new BooleanEvaluator<PaperCard>() {
@Override @Override
protected Boolean getItemValue(PaperCard input) { protected Boolean getItemValue(PaperCard input) {
List<PaperCard> cards = FModel.getMagicDb().getCommonCards().getAllCards(input.getName()); List<PaperCard> cards = FModel.getMagicDb().getCommonCards().getAllCards(input.getName());
@@ -213,25 +215,25 @@ public class AdvancedSearch {
return cards.get(0) == input; return cards.get(0) == input;
} }
}), }),
DECK_NAME("Name", DeckProxy.class, FilterOperator.STRING_OPS, new StringEvaluator<DeckProxy>() { DECK_NAME("lblName", DeckProxy.class, FilterOperator.STRING_OPS, new StringEvaluator<DeckProxy>() {
@Override @Override
protected String getItemValue(DeckProxy input) { protected String getItemValue(DeckProxy input) {
return input.getName(); return input.getName();
} }
}), }),
DECK_FOLDER("Folder", DeckProxy.class, FilterOperator.STRING_OPS, new StringEvaluator<DeckProxy>() { DECK_FOLDER("lblFolder", DeckProxy.class, FilterOperator.STRING_OPS, new StringEvaluator<DeckProxy>() {
@Override @Override
protected String getItemValue(DeckProxy input) { protected String getItemValue(DeckProxy input) {
return input.getPath(); return input.getPath();
} }
}), }),
DECK_FAVORITE("Favorite", DeckProxy.class, FilterOperator.BOOLEAN_OPS, new BooleanEvaluator<DeckProxy>() { DECK_FAVORITE("ttFavorite", DeckProxy.class, FilterOperator.BOOLEAN_OPS, new BooleanEvaluator<DeckProxy>() {
@Override @Override
protected Boolean getItemValue(DeckProxy input) { protected Boolean getItemValue(DeckProxy input) {
return input.isFavoriteDeck(); return input.isFavoriteDeck();
} }
}), }),
DECK_FORMAT("Format", DeckProxy.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<DeckProxy, GameFormat>((List<GameFormat>)FModel.getFormats().getFilterList()) { DECK_FORMAT("lblFormat", DeckProxy.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<DeckProxy, GameFormat>((List<GameFormat>)FModel.getFormats().getFilterList()) {
@Override @Override
protected GameFormat getItemValue(DeckProxy input) { protected GameFormat getItemValue(DeckProxy input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -241,7 +243,7 @@ public class AdvancedSearch {
return input.getExhaustiveFormats(); return input.getExhaustiveFormats();
} }
}), }),
DECK_QUEST_WORLD("Quest World", DeckProxy.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<DeckProxy, QuestWorld>(ImmutableList.copyOf(FModel.getWorlds())) { DECK_QUEST_WORLD("lblQuestWorld", DeckProxy.class, FilterOperator.MULTI_LIST_OPS, new CustomListEvaluator<DeckProxy, QuestWorld>(ImmutableList.copyOf(FModel.getWorlds())) {
@Override @Override
protected QuestWorld getItemValue(DeckProxy input) { protected QuestWorld getItemValue(DeckProxy input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -251,7 +253,7 @@ public class AdvancedSearch {
return QuestWorld.getAllQuestWorldsOfDeck(input.getDeck()); return QuestWorld.getAllQuestWorldsOfDeck(input.getDeck());
} }
}), }),
DECK_COLOR("Color", DeckProxy.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<DeckProxy>() { DECK_COLOR("lblColor", DeckProxy.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<DeckProxy>() {
@Override @Override
protected MagicColor.Color getItemValue(DeckProxy input) { protected MagicColor.Color getItemValue(DeckProxy input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -261,7 +263,7 @@ public class AdvancedSearch {
return input.getColor().toEnumSet(); return input.getColor().toEnumSet();
} }
}), }),
DECK_COLOR_IDENTITY("Color Identity", DeckProxy.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<DeckProxy>() { DECK_COLOR_IDENTITY("lblColorIdentity", DeckProxy.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<DeckProxy>() {
@Override @Override
protected MagicColor.Color getItemValue(DeckProxy input) { protected MagicColor.Color getItemValue(DeckProxy input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -271,25 +273,25 @@ public class AdvancedSearch {
return input.getColorIdentity().toEnumSet(); return input.getColorIdentity().toEnumSet();
} }
}), }),
DECK_COLOR_COUNT("Color Count", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(0, 5) { DECK_COLOR_COUNT("lblColorCount", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(0, 5) {
@Override @Override
protected Integer getItemValue(DeckProxy input) { protected Integer getItemValue(DeckProxy input) {
return input.getColor().countColors(); return input.getColor().countColors();
} }
}), }),
DECK_AVERAGE_CMC("Average CMC", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(0, 20) { DECK_AVERAGE_CMC("lblAverageCMC", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(0, 20) {
@Override @Override
protected Integer getItemValue(DeckProxy input) { protected Integer getItemValue(DeckProxy input) {
return input.getAverageCMC(); return input.getAverageCMC();
} }
}), }),
DECK_MAIN("Main Deck", DeckProxy.class, FilterOperator.DECK_CONTENT_OPS, new DeckContentEvaluator<DeckProxy>() { DECK_MAIN("lblMainDeck", DeckProxy.class, FilterOperator.DECK_CONTENT_OPS, new DeckContentEvaluator<DeckProxy>() {
@Override @Override
protected Map<String, Integer> getItemValue(DeckProxy input) { protected Map<String, Integer> getItemValue(DeckProxy input) {
return input.getDeck().getMain().toNameLookup(); return input.getDeck().getMain().toNameLookup();
} }
}), }),
DECK_SIDEBOARD("Sideboard", DeckProxy.class, FilterOperator.DECK_CONTENT_OPS, new DeckContentEvaluator<DeckProxy>() { DECK_SIDEBOARD("lblSideboard", DeckProxy.class, FilterOperator.DECK_CONTENT_OPS, new DeckContentEvaluator<DeckProxy>() {
@Override @Override
protected Map<String, Integer> getItemValue(DeckProxy input) { protected Map<String, Integer> getItemValue(DeckProxy input) {
CardPool sideboard = input.getDeck().get(DeckSection.Sideboard); CardPool sideboard = input.getDeck().get(DeckSection.Sideboard);
@@ -299,31 +301,31 @@ public class AdvancedSearch {
return null; return null;
} }
}), }),
DECK_MAIN_SIZE("Main Deck Size", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(40, 250) { DECK_MAIN_SIZE("lblMainDeckSize", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(40, 250) {
@Override @Override
protected Integer getItemValue(DeckProxy input) { protected Integer getItemValue(DeckProxy input) {
return input.getMainSize(); return input.getMainSize();
} }
}), }),
DECK_SIDE_SIZE("Sideboard Size", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(0, 15) { DECK_SIDE_SIZE("lblSideboardSize", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(0, 15) {
@Override @Override
protected Integer getItemValue(DeckProxy input) { protected Integer getItemValue(DeckProxy input) {
return Math.min(input.getSideSize(), 0); return Math.min(input.getSideSize(), 0);
} }
}), }),
COMMANDER_NAME("Name", ConquestCommander.class, FilterOperator.STRING_OPS, new StringEvaluator<ConquestCommander>() { COMMANDER_NAME("lblName", ConquestCommander.class, FilterOperator.STRING_OPS, new StringEvaluator<ConquestCommander>() {
@Override @Override
protected String getItemValue(ConquestCommander input) { protected String getItemValue(ConquestCommander input) {
return input.getName(); return input.getName();
} }
}), }),
COMMANDER_ORIGIN("Origin", ConquestCommander.class, FilterOperator.SINGLE_LIST_OPS, new CustomListEvaluator<ConquestCommander, ConquestPlane>(ImmutableList.copyOf(FModel.getPlanes())) { COMMANDER_ORIGIN("lblOrigin", ConquestCommander.class, FilterOperator.SINGLE_LIST_OPS, new CustomListEvaluator<ConquestCommander, ConquestPlane>(ImmutableList.copyOf(FModel.getPlanes())) {
@Override @Override
protected ConquestPlane getItemValue(ConquestCommander input) { protected ConquestPlane getItemValue(ConquestCommander input) {
return input.getOriginPlane(); return input.getOriginPlane();
} }
}), }),
COMMANDER_COLOR("Color", ConquestCommander.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<ConquestCommander>() { COMMANDER_COLOR("lblColor", ConquestCommander.class, FilterOperator.COMBINATION_OPS, new ColorEvaluator<ConquestCommander>() {
@Override @Override
protected MagicColor.Color getItemValue(ConquestCommander input) { protected MagicColor.Color getItemValue(ConquestCommander input) {
throw new RuntimeException("getItemValues should be called instead"); throw new RuntimeException("getItemValues should be called instead");
@@ -333,25 +335,25 @@ public class AdvancedSearch {
return input.getCard().getRules().getColorIdentity().toEnumSet(); return input.getCard().getRules().getColorIdentity().toEnumSet();
} }
}), }),
COMMANDER_COLOR_COUNT("Color Count", ConquestCommander.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<ConquestCommander>(0, 5) { COMMANDER_COLOR_COUNT("lblColorCount", ConquestCommander.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<ConquestCommander>(0, 5) {
@Override @Override
protected Integer getItemValue(ConquestCommander input) { protected Integer getItemValue(ConquestCommander input) {
return input.getCard().getRules().getColorIdentity().countColors(); return input.getCard().getRules().getColorIdentity().countColors();
} }
}), }),
COMMANDER_DECK_AVERAGE_CMC("Deck Average CMC", ConquestCommander.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<ConquestCommander>(0, 20) { COMMANDER_DECK_AVERAGE_CMC("lblDeckAverageCMC", ConquestCommander.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<ConquestCommander>(0, 20) {
@Override @Override
protected Integer getItemValue(ConquestCommander input) { protected Integer getItemValue(ConquestCommander input) {
return DeckProxy.getAverageCMC(input.getDeck()); return DeckProxy.getAverageCMC(input.getDeck());
} }
}), }),
COMMANDER_DECK_CONTENTS("Deck Contents", ConquestCommander.class, FilterOperator.DECK_CONTENT_OPS, new DeckContentEvaluator<ConquestCommander>() { COMMANDER_DECK_CONTENTS("lblDeckContents", ConquestCommander.class, FilterOperator.DECK_CONTENT_OPS, new DeckContentEvaluator<ConquestCommander>() {
@Override @Override
protected Map<String, Integer> getItemValue(ConquestCommander input) { protected Map<String, Integer> getItemValue(ConquestCommander input) {
return input.getDeck().getMain().toNameLookup(); return input.getDeck().getMain().toNameLookup();
} }
}), }),
COMMANDER_DECK_SIZE("Deck Size", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(40, 250) { COMMANDER_DECK_SIZE("lblDeckSize", DeckProxy.class, FilterOperator.NUMBER_OPS, new NumericEvaluator<DeckProxy>(40, 250) {
@Override @Override
protected Integer getItemValue(DeckProxy input) { protected Integer getItemValue(DeckProxy input) {
return input.getMainSize(); return input.getMainSize();
@@ -364,7 +366,7 @@ public class AdvancedSearch {
private final FilterEvaluator<? extends InventoryItem, ?> evaluator; private final FilterEvaluator<? extends InventoryItem, ?> evaluator;
FilterOption(String name0, Class<? extends InventoryItem> type0, FilterOperator[] operatorOptions0, FilterEvaluator<? extends InventoryItem, ?> evaluator0) { FilterOption(String name0, Class<? extends InventoryItem> type0, FilterOperator[] operatorOptions0, FilterEvaluator<? extends InventoryItem, ?> evaluator0) {
name = name0; name = Localizer.getInstance().getMessage(name0);
type = type0; type = type0;
operatorOptions = operatorOptions0; operatorOptions = operatorOptions0;
evaluator = evaluator0; evaluator = evaluator0;
@@ -378,7 +380,7 @@ public class AdvancedSearch {
public enum FilterOperator { public enum FilterOperator {
//Boolean operators //Boolean operators
IS_TRUE("is true", "%1$s is true", FilterValueCount.ZERO, new OperatorEvaluator<Boolean>() { IS_TRUE("lblIsTrue", "%1$s is true", FilterValueCount.ZERO, new OperatorEvaluator<Boolean>() {
@Override @Override
public boolean apply(Boolean input, List<Boolean> values) { public boolean apply(Boolean input, List<Boolean> values) {
if (input != null) { if (input != null) {
@@ -387,7 +389,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
IS_FALSE("is false", "%1$s is false", FilterValueCount.ZERO, new OperatorEvaluator<Boolean>() { IS_FALSE("lblIsFalse", "%1$s is false", FilterValueCount.ZERO, new OperatorEvaluator<Boolean>() {
@Override @Override
public boolean apply(Boolean input, List<Boolean> values) { public boolean apply(Boolean input, List<Boolean> values) {
if (input != null) { if (input != null) {
@@ -398,7 +400,7 @@ public class AdvancedSearch {
}), }),
//Numeric operators //Numeric operators
EQUALS("=", "%1$s = %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() { EQUALS("lblEqual", "%1$s = %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() {
@Override @Override
public boolean apply(Integer input, List<Integer> values) { public boolean apply(Integer input, List<Integer> values) {
if (input != null) { if (input != null) {
@@ -407,7 +409,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
NOT_EQUALS("<>", "%1$s <> %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() { NOT_EQUALS("lblNotEqual", "%1$s <> %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() {
@Override @Override
public boolean apply(Integer input, List<Integer> values) { public boolean apply(Integer input, List<Integer> values) {
if (input != null) { if (input != null) {
@@ -416,7 +418,7 @@ public class AdvancedSearch {
return true; return true;
} }
}), }),
GREATER_THAN(">", "%1$s > %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() { GREATER_THAN("lblGreaterThan", "%1$s > %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() {
@Override @Override
public boolean apply(Integer input, List<Integer> values) { public boolean apply(Integer input, List<Integer> values) {
if (input != null) { if (input != null) {
@@ -425,7 +427,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
LESS_THAN("<", "%1$s < %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() { LESS_THAN("lblLessThan", "%1$s < %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() {
@Override @Override
public boolean apply(Integer input, List<Integer> values) { public boolean apply(Integer input, List<Integer> values) {
if (input != null) { if (input != null) {
@@ -434,7 +436,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
GT_OR_EQUAL(">=", "%1$s >= %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() { GT_OR_EQUAL("lblGreaterThanOrEqual", "%1$s >= %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() {
@Override @Override
public boolean apply(Integer input, List<Integer> values) { public boolean apply(Integer input, List<Integer> values) {
if (input != null) { if (input != null) {
@@ -443,7 +445,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
LT_OR_EQUAL("<=", "%1$s <= %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() { LT_OR_EQUAL("lblLessThanOrEqual", "%1$s <= %2$d", FilterValueCount.ONE, new OperatorEvaluator<Integer>() {
@Override @Override
public boolean apply(Integer input, List<Integer> values) { public boolean apply(Integer input, List<Integer> values) {
if (input != null) { if (input != null) {
@@ -452,7 +454,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
BETWEEN_INCLUSIVE("<=|<=", "%2$d <= %1$s <= %3$d", FilterValueCount.TWO, new OperatorEvaluator<Integer>() { BETWEEN_INCLUSIVE("lblBetweenInclusive", "%2$d <= %1$s <= %3$d", FilterValueCount.TWO, new OperatorEvaluator<Integer>() {
@Override @Override
public boolean apply(Integer input, List<Integer> values) { public boolean apply(Integer input, List<Integer> values) {
if (input != null) { if (input != null) {
@@ -462,7 +464,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
BETWEEN_EXCLUSIVE("<|<", "%2$d < %1$s < %3$d", FilterValueCount.TWO, new OperatorEvaluator<Integer>() { BETWEEN_EXCLUSIVE("lblBetweenExclusive", "%2$d < %1$s < %3$d", FilterValueCount.TWO, new OperatorEvaluator<Integer>() {
@Override @Override
public boolean apply(Integer input, List<Integer> values) { public boolean apply(Integer input, List<Integer> values) {
if (input != null) { if (input != null) {
@@ -474,7 +476,7 @@ public class AdvancedSearch {
}), }),
//String operators //String operators
CONTAINS("contains", "%1$s contains '%2$s'", FilterValueCount.ONE, new OperatorEvaluator<String>() { CONTAINS("lblContains", "%1$s contains '%2$s'", FilterValueCount.ONE, new OperatorEvaluator<String>() {
@Override @Override
public boolean apply(String input, List<String> values) { public boolean apply(String input, List<String> values) {
if (input != null) { if (input != null) {
@@ -483,7 +485,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
STARTS_WITH("starts with", "%1$s starts with '%2$s'", FilterValueCount.ONE, new OperatorEvaluator<String>() { STARTS_WITH("lblStartsWith", "%1$s starts with '%2$s'", FilterValueCount.ONE, new OperatorEvaluator<String>() {
@Override @Override
public boolean apply(String input, List<String> values) { public boolean apply(String input, List<String> values) {
if (input != null) { if (input != null) {
@@ -492,7 +494,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
ENDS_WITH("ends with", "%1$s ends with '%2$s'", FilterValueCount.ONE, new OperatorEvaluator<String>() { ENDS_WITH("lblEndsWith", "%1$s ends with '%2$s'", FilterValueCount.ONE, new OperatorEvaluator<String>() {
@Override @Override
public boolean apply(String input, List<String> values) { public boolean apply(String input, List<String> values) {
if (input != null) { if (input != null) {
@@ -503,7 +505,7 @@ public class AdvancedSearch {
}), }),
//Custom list operators //Custom list operators
IS_EXACTLY("is exactly", "%1$s is %2$s", FilterValueCount.MANY, new OperatorEvaluator<Object>() { IS_EXACTLY("lblIsExactly", "%1$s is %2$s", FilterValueCount.MANY, new OperatorEvaluator<Object>() {
@Override @Override
public boolean apply(Object input, List<Object> values) { public boolean apply(Object input, List<Object> values) {
if (input != null && values.size() == 1) { if (input != null && values.size() == 1) {
@@ -524,7 +526,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
IS_ANY("is any of", "%1$s is %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator<Object>() { IS_ANY("lblIsAnyOf", "%1$s is %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator<Object>() {
@Override @Override
public boolean apply(Object input, List<Object> values) { public boolean apply(Object input, List<Object> values) {
if (input != null) { if (input != null) {
@@ -548,7 +550,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
CONTAINS_ANY("contains any of", "%1$s contains %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator<Object>() { CONTAINS_ANY("lblContainsAnyOf", "%1$s contains %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator<Object>() {
@Override @Override
public boolean apply(Object input, List<Object> values) { public boolean apply(Object input, List<Object> values) {
if (input != null) { if (input != null) {
@@ -572,7 +574,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
CONTAINS_ALL("contains all of", "%1$s contains %2$s", FilterValueCount.MANY_AND, new OperatorEvaluator<Object>() { CONTAINS_ALL("lblContainsAllOf", "%1$s contains %2$s", FilterValueCount.MANY_AND, new OperatorEvaluator<Object>() {
@Override @Override
public boolean apply(Object input, List<Object> values) { public boolean apply(Object input, List<Object> values) {
if (input != null && values.size() == 1) { if (input != null && values.size() == 1) {
@@ -593,7 +595,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
CONTAIN_ANY("contain any of", "%1$s contain %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator<Object>() { CONTAIN_ANY("lblContainAnyOf", "%1$s contain %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator<Object>() {
@Override @Override
public boolean apply(Object input, List<Object> values) { public boolean apply(Object input, List<Object> values) {
throw new RuntimeException("shouldn't be called with a single input"); throw new RuntimeException("shouldn't be called with a single input");
@@ -610,7 +612,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
CONTAIN_ALL("contain all of", "%1$s contain %2$s", FilterValueCount.MANY_AND, new OperatorEvaluator<Object>() { CONTAIN_ALL("lblContainAllOf", "%1$s contain %2$s", FilterValueCount.MANY_AND, new OperatorEvaluator<Object>() {
@Override @Override
public boolean apply(Object input, List<Object> values) { public boolean apply(Object input, List<Object> values) {
throw new RuntimeException("shouldn't be called with a single input"); throw new RuntimeException("shouldn't be called with a single input");
@@ -630,7 +632,7 @@ public class AdvancedSearch {
}), }),
//Deck content operators //Deck content operators
CONTAINS_CARD("contains card", "%1$s contains %2$s", FilterValueCount.ONE, new OperatorEvaluator<Map<PaperCard, Integer>>() { CONTAINS_CARD("lblContainsCard", "%1$s contains %2$s", FilterValueCount.ONE, new OperatorEvaluator<Map<PaperCard, Integer>>() {
@Override @Override
public boolean apply(Map<PaperCard, Integer> input, List<Map<PaperCard, Integer>> values) { public boolean apply(Map<PaperCard, Integer> input, List<Map<PaperCard, Integer>> values) {
if (input != null) { if (input != null) {
@@ -640,7 +642,7 @@ public class AdvancedSearch {
return false; return false;
} }
}), }),
CONTAINS_X_COPIES_OF_CARD("contains X copies of card", "%1$s contains %3$d %2$s", FilterValueCount.TWO, new OperatorEvaluator<Map<PaperCard, Integer>>() { CONTAINS_X_COPIES_OF_CARD("lblContainsXCopiesCard", "%1$s contains %3$d %2$s", FilterValueCount.TWO, new OperatorEvaluator<Map<PaperCard, Integer>>() {
@Override @Override
public boolean apply(Map<PaperCard, Integer> input, List<Map<PaperCard, Integer>> values) { public boolean apply(Map<PaperCard, Integer> input, List<Map<PaperCard, Integer>> values) {
if (input != null) { if (input != null) {
@@ -681,7 +683,7 @@ public class AdvancedSearch {
private final OperatorEvaluator<?> evaluator; private final OperatorEvaluator<?> evaluator;
FilterOperator(String caption0, String formatStr0, FilterValueCount valueCount0, OperatorEvaluator<?> evaluator0) { FilterOperator(String caption0, String formatStr0, FilterValueCount valueCount0, OperatorEvaluator<?> evaluator0) {
caption = caption0; caption = Localizer.getInstance().getMessage(caption0);
formatStr = formatStr0; formatStr = formatStr0;
valueCount = valueCount0; valueCount = valueCount0;
evaluator = evaluator0; evaluator = evaluator0;
@@ -930,7 +932,7 @@ public class AdvancedSearch {
Integer amount = -1; Integer amount = -1;
if (operator == FilterOperator.CONTAINS_X_COPIES_OF_CARD) { //prompt for quantity if needed if (operator == FilterOperator.CONTAINS_X_COPIES_OF_CARD) { //prompt for quantity if needed
amount = SGuiChoose.getInteger("How many copies of " + card.getName() + "?", 0, 4); amount = SGuiChoose.getInteger(Localizer.getInstance().getMessage("lblHowManyCopiesOfN", CardTranslation.getTranslatedName(card.getName())), 0, 4);
if (amount == null) { return null; } if (amount == null) { return null; }
} }
@@ -967,7 +969,7 @@ public class AdvancedSearch {
options.add(opt); options.add(opt);
} }
} }
option = SGuiChoose.oneOrNone("Select a filter type", options, defaultOption, null); option = SGuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblSelectAFilterType"), options, defaultOption, null);
if (option == null) { return editFilter; } if (option == null) { return editFilter; }
} }
else { else {
@@ -979,7 +981,7 @@ public class AdvancedSearch {
final FilterOperator operator; final FilterOperator operator;
if (option.operatorOptions.length > 1) { if (option.operatorOptions.length > 1) {
final FilterOperator defaultOperator = option == defaultOption ? editFilter.operator : null; final FilterOperator defaultOperator = option == defaultOption ? editFilter.operator : null;
operator = SGuiChoose.oneOrNone("Select an operator for " + option.name, option.operatorOptions, defaultOperator, null); operator = SGuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblSelectOperatorFor", option.name), option.operatorOptions, defaultOperator, null);
if (operator == null) { return editFilter; } if (operator == null) { return editFilter; }
} }
else { else {
@@ -1049,7 +1051,7 @@ public class AdvancedSearch {
} }
public static class Model<T extends InventoryItem> { public static class Model<T extends InventoryItem> {
private static final String EMPTY_FILTER_TEXT = "Select Filter..."; private static final String EMPTY_FILTER_TEXT = Localizer.getInstance().getMessage("lblSelectingFilter");
private final List<Object> expression = new ArrayList<>(); private final List<Object> expression = new ArrayList<>();
private final List<IFilterControl<T>> controls = new ArrayList<>(); private final List<IFilterControl<T>> controls = new ArrayList<>();
@@ -1162,7 +1164,7 @@ public class AdvancedSearch {
//the first time the user selects keywords, preload keywords for all cards //the first time the user selects keywords, preload keywords for all cards
Runnable preloadTask = Keyword.getPreloadTask(); Runnable preloadTask = Keyword.getPreloadTask();
if (preloadTask != null) { if (preloadTask != null) {
GuiBase.getInterface().runBackgroundTask("Loading keywords...", preloadTask); GuiBase.getInterface().runBackgroundTask(Localizer.getInstance().getMessage("lblLoadingKeywords"), preloadTask);
} }
} }
} }