add new function to spawn with combobox or checkboxlist
package mage.client.util.gui;
import mage.choices.ChoiceImpl;
+import mage.client.dialog.PickCheckBoxDialog;
import mage.client.dialog.PickChoiceDialog;
//import java.util.ArrayList;
@@ -21,6 +22,52 @@ public class FastSearchUtil {
public static String DEFAULT_EXPANSION_SEARCH_MESSAGE = "Select set(s) or expansion(s)";
public static String DEFAULT_EXPANSION_TOOLTIP_MESSAGE = "Fast search set(s) or expansion(s)";
+ /**
+ * Show fast choice modal dialog with incremental searching for any string combobox components
+ * @param combo combobox control with default data model
+ * @param chooseMessage caption message for dialog
+ */
+ public static void showFastSearchForStringComboBox(JComboBox combo, String chooseMessage){
+ // fast search/choice dialog for string combobox
+
+ mage.choices.Choice choice = new ChoiceImpl(false);
+
+ // collect data from expansion combobox (String)
+ DefaultComboBoxModel comboModel = (DefaultComboBoxModel)combo.getModel();
+ Map<String, String> choiceItems = new HashMap<>(comboModel.getSize());
+ Map<String, Integer> choiceSorting = new HashMap<>(comboModel.getSize());
+ String item;
+
+ for(int i = 0; i < comboModel.getSize(); i++){
+ item = comboModel.getElementAt(i).toString();
+ choiceItems.put(item, item);
+ choiceSorting.put(item, i); // need so sorting
+ }
+
+ choice.setKeyChoices(choiceItems);
+ choice.setSortData(choiceSorting);
+ choice.setMessage(chooseMessage);
+
+ // current selection value restore
+ String needSelectValue;
+ needSelectValue = comboModel.getSelectedItem().toString();
+
+ // ask for new value
+ PickChoiceDialog dlg = new PickChoiceDialog();
+ dlg.setWindowSize(300, 500);
+ dlg.showDialog(choice, needSelectValue);
+ if(choice.isChosen()){
+ item = choice.getChoiceKey();
+
+ // compatible select for object's models (use setSelectedIndex instead setSelectedObject)
+ for(int i = 0; i < comboModel.getSize(); i++){
+ if(comboModel.getElementAt(i).toString().equals(item)){
+ combo.setSelectedIndex(i);
+ }
+ }
+ }
+ }
+
/**
* Show fast choice modal dialog with incremental searching for any string CheckBoxList components
* @param combo CheckBoxList control with default data model
@@ -53,7 +100,7 @@ public class FastSearchUtil {
needSelectValue = comboModel.firstElement().toString();
// ask for new value
- PickChoiceDialog dlg = new PickChoiceDialog(combo);
+ PickCheckBoxDialog dlg = new PickCheckBoxDialog(combo);
dlg.setWindowSize(300, 500);
dlg.showDialog(choice, needSelectValue);
if(choice.isChosen()){
