Search in sources :

Example 1 with PickChoiceDialog

use of mage.client.dialog.PickChoiceDialog in project mage by magefree.

the class FastSearchUtil method showFastSearchForStringComboBox.

/**
 * 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, int windowWidth, int windowHeight) {
    // 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);
        // need so sorting
        choiceSorting.put(item, i);
    }
    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(windowWidth, windowHeight);
    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);
            }
        }
    }
}
Also used : HashMap(java.util.HashMap) ChoiceImpl(mage.choices.ChoiceImpl) PickChoiceDialog(mage.client.dialog.PickChoiceDialog)

Aggregations

HashMap (java.util.HashMap)1 ChoiceImpl (mage.choices.ChoiceImpl)1 PickChoiceDialog (mage.client.dialog.PickChoiceDialog)1