//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ panelHeader = new javax.swing.JPanel();
+ labelMessage = new javax.swing.JLabel();
+ labelSubMessage = new javax.swing.JLabel();
+ panelSearch = new javax.swing.JPanel();
+ labelSearch = new javax.swing.JLabel();
+ editSearch = new javax.swing.JTextField();
+ scrollList = new javax.swing.JScrollPane();
+ listChoices = new javax.swing.JList();
+ panelCommands = new javax.swing.JPanel();
+ btOK = new javax.swing.JButton();
+ btCancel = new javax.swing.JButton();
+
+ labelMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+ labelMessage.setText("example long message example long message example long message example long message example long message
");
+
+ labelSubMessage.setFont(labelSubMessage.getFont().deriveFont((labelSubMessage.getFont().getStyle() | java.awt.Font.ITALIC) | java.awt.Font.BOLD));
+ labelSubMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+ labelSubMessage.setText("example long message example long
");
+
+ javax.swing.GroupLayout panelHeaderLayout = new javax.swing.GroupLayout(panelHeader);
+ panelHeader.setLayout(panelHeaderLayout);
+ panelHeaderLayout.setHorizontalGroup(
+ panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelHeaderLayout.createSequentialGroup()
+ .addGroup(panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(labelMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE)
+ .addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE))
+ .addGap(0, 0, 0))
+ );
+ panelHeaderLayout.setVerticalGroup(
+ panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelHeaderLayout.createSequentialGroup()
+ .addGap(0, 0, 0)
+ .addComponent(labelMessage)
+ .addGap(0, 0, 0)
+ .addComponent(labelSubMessage))
+ );
+
+ labelSearch.setText("Search:");
+
+ editSearch.setText("sample search text");
+
+ javax.swing.GroupLayout panelSearchLayout = new javax.swing.GroupLayout(panelSearch);
+ panelSearch.setLayout(panelSearchLayout);
+ panelSearchLayout.setHorizontalGroup(
+ panelSearchLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelSearchLayout.createSequentialGroup()
+ .addGap(0, 0, 0)
+ .addComponent(labelSearch)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(editSearch)
+ .addGap(0, 0, 0))
+ );
+ panelSearchLayout.setVerticalGroup(
+ panelSearchLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelSearchLayout.createSequentialGroup()
+ .addGap(3, 3, 3)
+ .addGroup(panelSearchLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(labelSearch)
+ .addComponent(editSearch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(3, 3, 3))
+ );
+
+ listChoices.setModel(new javax.swing.AbstractListModel() {
+ String[] strings = { "item1", "item2", "item3" };
+ public int getSize() { return strings.length; }
+ public Object getElementAt(int i) { return strings[i]; }
+ });
+ scrollList.setViewportView(listChoices);
+
+ btOK.setText("Choose");
+ btOK.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btOKActionPerformed(evt);
+ }
+ });
+
+ btCancel.setText("Cancel");
+ btCancel.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btCancelActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout panelCommandsLayout = new javax.swing.GroupLayout(panelCommands);
+ panelCommands.setLayout(panelCommandsLayout);
+ panelCommandsLayout.setHorizontalGroup(
+ panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelCommandsLayout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(btOK)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(btCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
+ );
+
+ panelCommandsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btCancel, btOK});
+
+ panelCommandsLayout.setVerticalGroup(
+ panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(panelCommandsLayout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(btCancel)
+ .addComponent(btOK))
+ .addContainerGap())
+ );
+
+ getRootPane().setDefaultButton(btOK);
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+ getContentPane().setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(scrollList)
+ .addComponent(panelCommands, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(panelHeader, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(panelSearch, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(panelHeader, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(panelSearch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(scrollList, javax.swing.GroupLayout.PREFERRED_SIZE, 246, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
+ );
+
+ pack();
+ }// //GEN-END:initComponents
+
+ private void btOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOKActionPerformed
+ doChoose();
+ }//GEN-LAST:event_btOKActionPerformed
+
+ private void btCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelActionPerformed
+ doCancel();
+ }//GEN-LAST:event_btCancelActionPerformed
+
+ /**
+ * Closes the dialog
+ */
+ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
+ doCancel();
+ }//GEN-LAST:event_closeDialog
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton btCancel;
+ private javax.swing.JButton btOK;
+ private javax.swing.JTextField editSearch;
+ private javax.swing.JLabel labelMessage;
+ private javax.swing.JLabel labelSearch;
+ private javax.swing.JLabel labelSubMessage;
+ private javax.swing.JList listChoices;
+ private javax.swing.JPanel panelCommands;
+ private javax.swing.JPanel panelHeader;
+ private javax.swing.JPanel panelSearch;
+ private javax.swing.JScrollPane scrollList;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/Mage.Client/src/main/java/mage/client/util/gui/FastSearchUtil_1.java b/Mage.Client/src/main/java/mage/client/util/gui/FastSearchUtil_1.java
new file mode 100644
index 00000000000..84816363a31
--- /dev/null
+++ b/Mage.Client/src/main/java/mage/client/util/gui/FastSearchUtil_1.java
@@ -0,0 +1,85 @@
+package mage.client.util.gui;
+
+import java.util.ArrayList;
+import mage.choices.ChoiceImpl;
+import mage.client.dialog.PickChoiceDialog_1;
+
+import javax.swing.*;
+import java.util.HashMap;
+import java.util.Map;
+import mage.client.dialog.CheckBoxList;
+import org.apache.log4j.helpers.LogLog;
+
+/**
+ *
+ * @author JayDi85
+ */
+public class FastSearchUtil_1 {
+
+ public static String DEFAULT_EXPANSION_SEARCH_MESSAGE = "Select set or expansion";
+ public static String DEFAULT_EXPANSION_TOOLTIP_MESSAGE = "Fast search set or expansion";
+
+ /**
+ * 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 CheckBoxList showFastSearchForStringComboBox(JComboBox combo, String chooseMessage){
+ // fast search/choice dialog for string combobox
+
+ CheckBoxList langList= new CheckBoxList();
+ java.util.List