diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java index ba596b84134..b0d371c19dc 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java @@ -168,6 +168,7 @@ public class PickChoiceDialog extends MageDialog { int maxSel = this.listChoices.getModel().getSize() - 1; if(newSel <= maxSel){ this.listChoices.setSelectedIndex(newSel); + this.listChoices.ensureIndexIsVisible(newSel); } } @@ -175,6 +176,7 @@ public class PickChoiceDialog extends MageDialog { int newSel = this.listChoices.getSelectedIndex() - 1; if(newSel >= 0){ this.listChoices.setSelectedIndex(newSel); + this.listChoices.ensureIndexIsVisible(newSel); } } diff --git a/Mage/src/main/java/mage/choices/ChoiceImpl.java b/Mage/src/main/java/mage/choices/ChoiceImpl.java index 56928171b77..233093458b7 100644 --- a/Mage/src/main/java/mage/choices/ChoiceImpl.java +++ b/Mage/src/main/java/mage/choices/ChoiceImpl.java @@ -40,6 +40,8 @@ import java.util.Set; */ public class ChoiceImpl implements Choice, Serializable { + private int ENABLE_SEARCH_FOR_ITEMS_COUNT = 5; // enable search for choices more then X items (for non standard choices) + protected boolean chosen; protected final boolean required; protected String choice; @@ -48,7 +50,7 @@ public class ChoiceImpl implements Choice, Serializable { protected Map keyChoices = new LinkedHashMap<>(); protected String message; protected String subMessage; - protected boolean searchEnabled; + protected boolean searchEnabled = true; protected String searchText; public ChoiceImpl() { @@ -70,6 +72,12 @@ public class ChoiceImpl implements Choice, Serializable { this.keyChoices = choice.keyChoices; // list should never change for the same object so copy by reference } + private void autoSearchEnable(){ + if((this.choices != null) && (this.choices.size() >= ENABLE_SEARCH_FOR_ITEMS_COUNT)){ + this.setSearchEnabled(true); + } + } + @Override public boolean isChosen() { return chosen; @@ -106,6 +114,7 @@ public class ChoiceImpl implements Choice, Serializable { @Override public void setChoices(Set choices) { this.choices = choices; + autoSearchEnable(); } @Override @@ -139,6 +148,7 @@ public class ChoiceImpl implements Choice, Serializable { @Override public void setKeyChoices(Map choices) { keyChoices = choices; + autoSearchEnable(); } @Override