From 531b5bc5690c667d02aaf071abe27acdb992bc36 Mon Sep 17 00:00:00 2001
From: Oleg Agafonov <jaydi85@gmail.com>
Date: Mon, 25 Dec 2017 09:21:25 +0400
Subject: [PATCH] Added auto enabled search for all pickup dialogs with many
 items;

---
 .../java/mage/client/dialog/PickChoiceDialog.java    |  2 ++
 Mage/src/main/java/mage/choices/ChoiceImpl.java      | 12 +++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

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 ba596b8413..b0d371c19d 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 56928171b7..233093458b 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<String, String> 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<String> choices) {
         this.choices = choices;
+        autoSearchEnable();
     }
 
     @Override
@@ -139,6 +148,7 @@ public class ChoiceImpl implements Choice, Serializable {
     @Override
     public void setKeyChoices(Map<String, String> choices) {
         keyChoices = choices;
+        autoSearchEnable();
     }
 
     @Override