diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form index 37cec160ac..9bc0fefed7 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form +++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form @@ -4,12 +4,6 @@ - - - - - - @@ -27,9 +21,9 @@ - - + + diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java index 1325653560..eb4bae9fad 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java @@ -57,8 +57,6 @@ import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_TYPES; import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_UNIQUE; import mage.client.util.GUISizeHelper; import mage.client.util.gui.FastSearchUtil; -import mage.client.dialog.CheckBoxList; - import mage.client.util.sets.ConstructedFormats; import mage.constants.CardType; import mage.constants.Rarity; @@ -86,16 +84,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene private final SortSetting sortSetting; private static final Map pdAllowed = new HashMap<>(); - private final String TEST_MULTI_SET="Multiple Sets selected"; - private final ActionListener searchAction = evt -> jButtonSearchActionPerformed(evt); /** * Creates new form CardSelector */ public CardSelector() { - - sortSetting = SortSettingBase.getInstance(); initComponents(); cardGrid = new CardGrid(); @@ -103,25 +97,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene initListViewComponents(); setGUISize(); currentView = mainModel; // by default we use List View - - listCodeSelected = new CheckBoxList(); - // remove the all option - boolean is_removeFinish=false; - - String[] setCodes = ConstructedFormats.getTypes(); - java.util.List result = new ArrayList<>(); - - for(int i=0; (i setCodes = ConstructedFormats.getSetsByFormat(expansionSelection); - criteria.setCodes(setCodes.toArray(new String[0])); - } - } - else - { - java.util.List setCodes = new ArrayList<>() ; - //java.util.List listReceived=new ArrayList<>() ; - - int[] choiseValue=listCodeSelected.getCheckedIndices(); - ListModel x= listCodeSelected.getModel(); - - for(int itemIndex: choiseValue){ - - java.util.List listReceived=ConstructedFormats.getSetsByFormat(x.getElementAt(itemIndex).toString()); - listReceived.stream().filter((item) -> (setCodes.contains(item)==false)).forEachOrdered((item) -> { - setCodes.add(item); - }); - } + String expansionSelection = this.cbExpansionSet.getSelectedItem().toString(); + if (!expansionSelection.equals("- All Sets")) { + java.util.List setCodes = ConstructedFormats.getSetsByFormat(expansionSelection); criteria.setCodes(setCodes.toArray(new String[0])); } } - /*if(cbSetTag!=null) - { - if(listCodeSelected != null) - { - boolean isAtLeastOneSelected=false; - java.util.List setCodes = new ArrayList<>() ; - - int[] choiseValue=listCodeSelected.getCheckedIndices(); - ListModel x= listCodeSelected.getModel(); - - for(int itemIndex: choiseValue){ - isAtLeastOneSelected=true; - setCodes.add(x.getElementAt(itemIndex).toString()); - //LogLog.warn(x.getElementAt(itemIndex).toString()); - } - if(isAtLeastOneSelected) - { - criteria.setCodes(setCodes.toArray(new String[0])); - } - } - }*/ return criteria; } @@ -483,7 +419,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene } private void filterCards() { - boolean fist_time =false; FilterCard filter = buildFilter(); try { java.util.List filteredCards = new ArrayList<>(); @@ -510,7 +445,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene continue; } } - filteredCards.add(card); + filteredCards.add(card); } } } @@ -572,7 +507,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene private void initComponents() { bgView = new javax.swing.ButtonGroup(); - jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem(); tbColor = new javax.swing.JToolBar(); tbRed = new javax.swing.JToggleButton(); tbGreen = new javax.swing.JToggleButton(); @@ -625,9 +559,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene cardCountLabel = new javax.swing.JLabel(); cardCount = new javax.swing.JLabel(); - jCheckBoxMenuItem1.setSelected(true); - jCheckBoxMenuItem1.setText("jCheckBoxMenuItem1"); - tbColor.setFloatable(false); tbColor.setRollover(true); tbColor.setToolTipText("Hold the ALT-key while clicking to deselect all other colors or hold the CTRL-key to select only all other colors."); @@ -1245,9 +1176,9 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(tbColor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(tbTypes, javax.swing.GroupLayout.DEFAULT_SIZE, 1061, Short.MAX_VALUE) - .addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1061, Short.MAX_VALUE) + .addComponent(tbTypes, javax.swing.GroupLayout.DEFAULT_SIZE, 1057, Short.MAX_VALUE) .addComponent(cardSelectorScrollPane) + .addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1057, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -1263,24 +1194,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene }// //GEN-END:initComponents private void cbExpansionSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbExpansionSetActionPerformed - - - if(!cbExpansionSet.getSelectedItem().toString().contains(TEST_MULTI_SET)) - { - int index=cbExpansionSet.getSelectedIndex(); - if(cbExpansionSet.getItemAt(0).contains(TEST_MULTI_SET)) - { - cbExpansionSet.removeItemAt(0); - index--; - } - listCodeSelected.uncheckAll(); - if(index > 0) - { - //ofset because all sets is removed from the list - listCodeSelected.setChecked(index-1, true); - } - } - filterCards(); }//GEN-LAST:event_cbExpansionSetActionPerformed @@ -1462,46 +1375,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene }//GEN-LAST:event_chkRulesActionPerformed private void btnExpansionSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExpansionSearchActionPerformed - - FastSearchUtil.showFastSearchForStringComboBox(listCodeSelected, FastSearchUtil.DEFAULT_EXPANSION_SEARCH_MESSAGE); -// - int[] choiseValue=listCodeSelected.getCheckedIndices(); - ListModel x= listCodeSelected.getModel(); - - if(choiseValue.length==0)//none - { - cbExpansionSet.setSelectedIndex(0); - } - else if(choiseValue.length==1)//one - { - String itemSelected=listCodeSelected.getModel().getElementAt(choiseValue[0]).toString(); - for(int index=0;index < cbExpansionSet.getItemCount();index++) - { - if(cbExpansionSet.getItemAt(index).equals(itemSelected)) - { - cbExpansionSet.setSelectedIndex(index); - } - } - - } - else//many - { - String message=String.format("%s:%d",TEST_MULTI_SET,choiseValue.length); - - cbExpansionSet.insertItemAt(message, 0); - cbExpansionSet.setSelectedIndex(0); - - //listCodeSelected.setChecked(index-1, true); - //cbExpansionSet. - } - - /*for(int itemIndex: choiseValue){ - // LogLog.warn(String.format("%d:%s",itemIndex,x.getElementAt(itemIndex).toString())); - } - */ -// - - filterCards(); + FastSearchUtil.showFastSearchForStringComboBox(cbExpansionSet, "Select set or expansion"); }//GEN-LAST:event_btnExpansionSearchActionPerformed private void tbCommonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbCommonActionPerformed @@ -1561,10 +1435,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene private TableModel mainModel; private JTable mainTable; private ICardGrid currentView; - - static boolean isFirstTimeHere=true; - private CheckBoxList listCodeSelected; - private javax.swing.JComboBox cbSetTag; + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup bgView; private javax.swing.JButton btnBooster; @@ -1588,7 +1459,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene private javax.swing.JButton jButtonRemoveFromMain; private javax.swing.JButton jButtonRemoveFromSideboard; private javax.swing.JButton jButtonSearch; - private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1; private javax.swing.JToolBar.Separator jSeparator1; private javax.swing.JToolBar.Separator jSeparator2; private javax.swing.JToolBar.Separator jSeparator3; diff --git a/Mage.Client/src/main/java/mage/client/dialog/CheckBoxList.java b/Mage.Client/src/main/java/mage/client/dialog/CheckBoxList.java deleted file mode 100644 index 49c007c1f0..0000000000 --- a/Mage.Client/src/main/java/mage/client/dialog/CheckBoxList.java +++ /dev/null @@ -1,680 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * CheckBoxList.java - * Copyright (C) 2006-2012 University of Waikato, Hamilton, New Zealand - */ - -package mage.client.dialog; - -import java.awt.Component; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.NoSuchElementException; -import java.util.Vector; - -import javax.swing.DefaultListModel; -import javax.swing.JCheckBox; -import javax.swing.JList; -import javax.swing.ListCellRenderer; -import javax.swing.ListModel; - -/** - * An extended JList that contains CheckBoxes. If necessary a CheckBoxListItem - * wrapper is added around the displayed object in any of the Model methods, - * e.g., addElement. For methods returning objects the opposite takes place, the - * wrapper is removed and only the payload object is returned. - * - * @author fracpete (fracpete at waikato dot ac dot nz) - * @version $Revision: 10219 $ - */ -public class CheckBoxList extends JList { - - /** for serialization */ - private static final long serialVersionUID = -4359573373359270258L; - - /** - * represents an item in the CheckBoxListModel - * - * @author fracpete (fracpete at waikato dot ac dot nz) - * @version $Revision: 10219 $ - */ - protected class CheckBoxListItem { - - /** whether item is checked or not */ - private boolean m_Checked = false; - - /** the actual object */ - private Object m_Content = null; - - /** - * initializes the item with the given object and initially unchecked - * - * @param o the content object - */ - public CheckBoxListItem(Object o) { - this(o, false); - } - - /** - * initializes the item with the given object and whether it's checked - * initially - * - * @param o the content object - * @param checked whether the item should be checked initially - */ - public CheckBoxListItem(Object o, boolean checked) { - m_Checked = checked; - m_Content = o; - } - - /** - * returns the content object - */ - public Object getContent() { - return m_Content; - } - - /** - * sets the checked state of the item - */ - public void setChecked(boolean value) { - m_Checked = value; - } - - /** - * returns the checked state of the item - */ - public boolean getChecked() { - return m_Checked; - } - - /** - * returns the string representation of the content object - */ - @Override - public String toString() { - return m_Content.toString(); - } - - /** - * returns true if the "payload" objects of the current and the given - * CheckBoxListItem are the same. - * - * @param o the CheckBoxListItem to check - * @throws IllegalArgumentException if the provided object is not a - * CheckBoxListItem - */ - @Override - public boolean equals(Object o) { - if (!(o instanceof CheckBoxListItem)) { - throw new IllegalArgumentException("Must be a CheckBoxListItem!"); - } - - return getContent().equals(((CheckBoxListItem) o).getContent()); - } - } - - /** - * A specialized model. - * - * @author fracpete (fracpete at waikato dot ac dot nz) - * @version $Revision: 10219 $ - */ - @SuppressWarnings("rawtypes") - public class CheckBoxListModel extends DefaultListModel { - - /** for serialization */ - private static final long serialVersionUID = 7772455499540273507L; - - /** - * initializes the model with no data. - */ - public CheckBoxListModel() { - super(); - } - - /** - * Constructs a CheckBoxListModel from an array of objects and then applies - * setModel to it. - * - * @param listData the data to use - */ - public CheckBoxListModel(Object[] listData) { - for (Object element : listData) { - addElement(element); - } - } - - /** - * Constructs a CheckBoxListModel from a Vector and then applies setModel to - * it. - */ - public CheckBoxListModel(Vector listData) { - for (int i = 0; i < listData.size(); i++) { - addElement(listData.get(i)); - } - } - - /** - * Inserts the specified element at the specified position in this list. - * - * @param index index at which the specified element is to be inserted - * @param element element to be inserted - */ - @Override - public void add(int index, Object element) { - if (!(element instanceof CheckBoxListItem)) { - super.add(index, new CheckBoxListItem(element)); - } else { - super.add(index, element); - } - } - - /** - * Adds the specified component to the end of this list. - * - * @param obj the component to be added - */ - @Override - public void addElement(Object obj) { - if (!(obj instanceof CheckBoxListItem)) { - super.addElement(new CheckBoxListItem(obj)); - } else { - super.addElement(obj); - } - } - - /** - * Tests whether the specified object is a component in this list. - * - * @param elem the element to check - * @return true if the element is in the list - */ - @Override - public boolean contains(Object elem) { - if (!(elem instanceof CheckBoxListItem)) { - return super.contains(new CheckBoxListItem(elem)); - } else { - return super.contains(elem); - } - } - - /** - * Copies the components of this list into the specified array. - * - * @param anArray the array into which the components get copied - * @throws IndexOutOfBoundsException if the array is not big enough - */ - @Override - public void copyInto(Object[] anArray) { - if (anArray.length < getSize()) { - throw new IndexOutOfBoundsException("Array not big enough!"); - } - - for (int i = 0; i < getSize(); i++) { - anArray[i] = ((CheckBoxListItem) getElementAt(i)).getContent(); - } - } - - /** - * Returns the component at the specified index. Throws an - * ArrayIndexOutOfBoundsException if the index is negative or not less than - * the size of the list. - * - * @param index an index into this list - * @return the component at the specified index - * @throws ArrayIndexOutOfBoundsException - */ - @Override - public Object elementAt(int index) { - return ((CheckBoxListItem) super.elementAt(index)).getContent(); - } - - /** - * Returns the first component of this list. Throws a NoSuchElementException - * if this vector has no components. - * - * @return the first component of this list - * @throws NoSuchElementException - */ - @Override - public Object firstElement() { - return ((CheckBoxListItem) super.firstElement()).getContent(); - } - - /** - * Returns the element at the specified position in this list. - * - * @param index of element to return - * @throws ArrayIndexOutOfBoundsException - */ - @Override - public Object get(int index) { - return ((CheckBoxListItem) super.get(index)).getContent(); - } - - /** - * Returns the component at the specified index. - * - * @param index an index into this list - * @return the component at the specified index - * @throws ArrayIndexOutOfBoundsException - */ - @Override - public Object getElementAt(int index) { - return ((CheckBoxListItem) super.getElementAt(index));//.getContent(); - } - - /** - * Searches for the first occurrence of elem. - * - * @param elem an object - * @return the index of the first occurrence of the argument in this list; - * returns -1 if the object is not found - */ - @Override - public int indexOf(Object elem) { - if (!(elem instanceof CheckBoxListItem)) { - return super.indexOf(new CheckBoxListItem(elem)); - } else { - return super.indexOf(elem); - } - } - - /** - * Searches for the first occurrence of elem, beginning the search at index. - * - * @param elem the desired component - * @param index the index from which to begin searching - * @return the index where the first occurrence of elem is found after - * index; returns -1 if the elem is not found in the list - */ - @Override - public int indexOf(Object elem, int index) { - if (!(elem instanceof CheckBoxListItem)) { - return super.indexOf(new CheckBoxListItem(elem), index); - } else { - return super.indexOf(elem, index); - } - } - - /** - * Inserts the specified object as a component in this list at the specified - * index. - * - * @param obj the component to insert - * @param index where to insert the new component - * @throws ArrayIndexOutOfBoundsException - */ - @Override - public void insertElementAt(Object obj, int index) { - if (!(obj instanceof CheckBoxListItem)) { - super.insertElementAt(new CheckBoxListItem(obj), index); - } else { - super.insertElementAt(obj, index); - } - } - - /** - * Returns the last component of the list. Throws a NoSuchElementException - * if this vector has no components. - * - * @return the last component of the list - * @throws NoSuchElementException - */ - @Override - public Object lastElement() { - return ((CheckBoxListItem) super.lastElement()).getContent(); - } - - /** - * Returns the index of the last occurrence of elem. - * - * @param elem the desired component - * @return the index of the last occurrence of elem in the list; returns -1 - * if the object is not found - */ - @Override - public int lastIndexOf(Object elem) { - if (!(elem instanceof CheckBoxListItem)) { - return super.lastIndexOf(new CheckBoxListItem(elem)); - } else { - return super.lastIndexOf(elem); - } - } - - /** - * Searches backwards for elem, starting from the specified index, and - * returns an index to it. - * - * @param elem the desired component - * @param index the index to start searching from - * @return the index of the last occurrence of the elem in this list at - * position less than index; returns -1 if the object is not found - */ - @Override - public int lastIndexOf(Object elem, int index) { - if (!(elem instanceof CheckBoxListItem)) { - return super.lastIndexOf(new CheckBoxListItem(elem), index); - } else { - return super.lastIndexOf(elem, index); - } - } - - /** - * Removes the element at the specified position in this list. Returns the - * element that was removed from the list. - * - * @param index the index of the element to removed - * @throws ArrayIndexOutOfBoundsException - */ - @Override - public Object remove(int index) { - return ((CheckBoxListItem) super.remove(index)).getContent(); - } - - /** - * Removes the first (lowest-indexed) occurrence of the argument from this - * list. - * - * @param obj the component to be removed - * @return true if the argument was a component of this list; false - * otherwise - */ - @Override - public boolean removeElement(Object obj) { - if (!(obj instanceof CheckBoxListItem)) { - return super.removeElement(new CheckBoxListItem(obj)); - } else { - return super.removeElement(obj); - } - } - - /** - * Replaces the element at the specified position in this list with the - * specified element. - * - * @param index index of element to replace - * @param element element to be stored at the specified position - * @throws ArrayIndexOutOfBoundsException - */ - @Override - public Object set(int index, Object element) { - if (!(element instanceof CheckBoxListItem)) { - return ((CheckBoxListItem) super.set(index, new CheckBoxListItem( - element))).getContent(); - } else { - return ((CheckBoxListItem) super.set(index, element)).getContent(); - } - } - - /** - * Sets the component at the specified index of this list to be the - * specified object. The previous component at that position is discarded. - * - * @param obj what the component is to be set to - * @param index the specified index - * @throws ArrayIndexOutOfBoundsException - */ - @Override - public void setElementAt(Object obj, int index) { - if (!(obj instanceof CheckBoxListItem)) { - super.setElementAt(new CheckBoxListItem(obj), index); - } else { - super.setElementAt(obj, index); - } - } - - /** - * Returns an array containing all of the elements in this list in the - * correct order. - * - * @return an array containing the elements of the list - */ - @Override - public Object[] toArray() { - Object[] result; - Object[] internal; - int i; - - internal = super.toArray(); - result = new Object[internal.length]; - - for (i = 0; i < internal.length; i++) { - result[i] = ((CheckBoxListItem) internal[i]).getContent(); - } - - return result; - } - - /** - * returns the checked state of the element at the given index - * - * @param index the index of the element to return the checked state for - * @return the checked state of the specifed element - */ - public boolean getChecked(int index) { - return ((CheckBoxListItem) super.getElementAt(index)).getChecked(); - } - - /** - * sets the checked state of the element at the given index - * - * @param index the index of the element to set the checked state for - * @param checked the new checked state - */ - public void setChecked(int index, boolean checked) { - ((CheckBoxListItem) super.getElementAt(index)).setChecked(checked); - } - } - - /** - * A specialized CellRenderer for the CheckBoxList - * - * @author fracpete (fracpete at waikato dot ac dot nz) - * @version $Revision: 10219 $ - * @see CheckBoxList - */ - public class CheckBoxListRenderer extends JCheckBox implements - ListCellRenderer { - - /** for serialization */ - private static final long serialVersionUID = 1059591605858524586L; - - /** - * Return a component that has been configured to display the specified - * value. - * - * @param list The JList we're painting. - * @param value The value returned by list.getModel().getElementAt(index). - * @param index The cells index. - * @param isSelected True if the specified cell was selected. - * @param cellHasFocus True if the specified cell has the focus. - * @return A component whose paint() method will render the specified value. - */ - @Override - public Component getListCellRendererComponent(JList list, Object value, - int index, boolean isSelected, boolean cellHasFocus) { - - setText(value.toString()); - setSelected(((CheckBoxList) list).getChecked(index)); - setBackground(isSelected ? list.getSelectionBackground() : list - .getBackground()); - setForeground(isSelected ? list.getSelectionForeground() : list - .getForeground()); - setFocusPainted(false); - - return this; - } - } - - /** - * initializes the list with an empty CheckBoxListModel - */ - public CheckBoxList() { - this(null); - } - - /** - * initializes the list with the given CheckBoxListModel - * - * @param model the model to initialize with - */ - public CheckBoxList(CheckBoxListModel model) { - super(); - - if (model == null) { - model = this.new CheckBoxListModel(); - } - - setModel(model); - setCellRenderer(new CheckBoxListRenderer()); - - addMouseListener(new MouseAdapter() { - @Override - public void mousePressed(MouseEvent e) { - int index = locationToIndex(e.getPoint()); - - if (index != -1) { - setChecked(index, !getChecked(index)); - repaint(); - } - } - }); - - addKeyListener(new KeyAdapter() { - @Override - public void keyTyped(KeyEvent e) { - if ((e.getKeyChar() == ' ') && (e.getModifiers() == 0)) { - int index = getSelectedIndex(); - setChecked(index, !getChecked(index)); - e.consume(); - repaint(); - } - } - }); - } - - /** - * sets the model - must be an instance of CheckBoxListModel - * - * @param model the model to use - * @throws IllegalArgumentException if the model is not an instance of - * CheckBoxListModel - * @see CheckBoxListModel - */ - @Override - public void setModel(ListModel model) { - if (!(model instanceof CheckBoxListModel)) { - if (model instanceof javax.swing.DefaultListModel) { - super.setModel((CheckBoxListModel)model); - } - else { - throw new IllegalArgumentException( - "Model must be an instance of CheckBoxListModel!"); - } - } - else { - super.setModel(model); - } - } - - /*public void setModel(DefaultListModel model) { - throw new IllegalArgumentException( - "Model must be an ins12313tance of CheckBoxListModel!"); - }*/ - /** - * Constructs a CheckBoxListModel from an array of objects and then applies - * setModel to it. - * - * @param listData the data to use - */ - @Override - public void setListData(Object[] listData) { - setModel(new CheckBoxListModel(listData)); - } - - /** - * Constructs a CheckBoxListModel from a Vector and then applies setModel to - * it. - */ - @Override - public void setListData(@SuppressWarnings("rawtypes") Vector listData) { - setModel(new CheckBoxListModel(listData)); - } - - /** - * returns the checked state of the element at the given index - * - * @param index the index of the element to return the checked state for - * @return the checked state of the specifed element - */ - public boolean getChecked(int index) { - return ((CheckBoxListModel) getModel()).getChecked(index); - } - - /** - * sets the checked state of the element at the given index - * - * @param index the index of the element to set the checked state for - * @param checked the new checked state - */ - public void setChecked(int index, boolean checked) { - ((CheckBoxListModel) getModel()).setChecked(index, checked); - } - - /** - * returns an array with the indices of all checked items - * - * @return the indices of all items that are currently checked - */ - public int[] getCheckedIndices() { - Vector list; - int[] result; - int i; - - // traverse over model - list = new Vector(); - for (i = 0; i < getModel().getSize(); i++) { - if (getChecked(i)) { - list.add(new Integer(i)); - } - } - - // generate result array - result = new int[list.size()]; - for (i = 0; i < list.size(); i++) { - result[i] = list.get(i).intValue(); - } - - return result; - } - - public void checkAll() { - for (int i = 0; i < getModel().getSize(); i++) { - this.setChecked(i,true); - } - } - public void uncheckAll() { - int[] choiceToUncheck = this.getCheckedIndices(); - for(int itemIndex: choiceToUncheck){ - this.setChecked(itemIndex,false); - } - } -} diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.form b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.form index de1e7b9612..4b4f2fa981 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.form @@ -39,7 +39,7 @@ - + @@ -55,8 +55,8 @@ - - + + @@ -65,10 +65,10 @@ - + - - + + @@ -158,14 +158,12 @@ - - - - - - - + + + + + @@ -176,7 +174,6 @@ - @@ -203,20 +200,6 @@ - - - - - - - - - - - - - - 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 fcbcc7c5f0..b269843f58 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java @@ -5,7 +5,6 @@ */ package mage.client.dialog; -import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionEvent; @@ -33,7 +32,6 @@ import mage.client.util.gui.MageDialogState; /** * * @author JayDi85 - * @author Salco */ public class PickChoiceDialog extends MageDialog { @@ -41,29 +39,9 @@ public class PickChoiceDialog extends MageDialog { Choice choice; ArrayList allItems = new ArrayList<>(); DefaultListModel dataModel = new DefaultListModel(); - CheckBoxList.CheckBoxListModel m_dataModel; - - CheckBoxList tList; final private static String HTML_TEMPLATE = "
%s
"; - private void setFocus(CheckBoxList obj){ - - if (!(obj instanceof java.awt.Component)) { - throw new IllegalArgumentException("Must be a java.awt.Component!"); - } - this.scrollList.setViewportView((java.awt.Component)obj); - } - private javax.swing.JList get_a_Jlist_from_ScrollListView(){ - return ((javax.swing.JList)this.scrollList.getViewport().getView()); - } - - private void restoreData(Object dataFrom){ - this.allItems.forEach((item) -> { - ((CheckBoxList.CheckBoxListModel)dataFrom).addElement(item.getObjectValue()); - }); - } - public void showDialog(Choice choice) { showDialog(choice, null, null, null); } @@ -78,9 +56,7 @@ public class PickChoiceDialog extends MageDialog { public void showDialog(Choice choice, UUID objectId, MageDialogState mageDialogState, String startSelectionValue) { this.choice = choice; - KeyValueItem tempKeyValue; - int indexInTList; - + setLabelText(this.labelMessage, choice.getMessage()); setLabelText(this.labelSubMessage, choice.getSubMessage()); @@ -92,25 +68,11 @@ public class PickChoiceDialog extends MageDialog { this.allItems.clear(); if (choice.isKeyChoice()){ for (Map.Entry entry: choice.getKeyChoices().entrySet()) { - if(tList != null){ - indexInTList = m_dataModel.indexOf(entry.getKey()); - tempKeyValue=new KeyValueItem(entry.getKey(), entry.getValue(),(CheckBoxList.CheckBoxListItem) this.tList.getModel().getElementAt(indexInTList)); - } - else{ - tempKeyValue=new KeyValueItem(entry.getKey(), entry.getValue()); - } - this.allItems.add(tempKeyValue); + this.allItems.add(new KeyValueItem(entry.getKey(), entry.getValue())); } } else { for (String value: choice.getChoices()){ - if(tList != null){ - indexInTList = m_dataModel.indexOf(value); - tempKeyValue=new KeyValueItem(value, value,(CheckBoxList.CheckBoxListItem) tList.getModel().getElementAt(indexInTList)); - } - else{ - tempKeyValue=new KeyValueItem(value, value); - } - this.allItems.add(tempKeyValue); + this.allItems.add(new KeyValueItem(value, value)); } } @@ -119,8 +81,8 @@ public class PickChoiceDialog extends MageDialog { Collections.sort(this.allItems, new Comparator() { @Override public int compare(KeyValueItem o1, KeyValueItem o2) { - Integer n1 = choice.getSortData().get(o1.getKey()); - Integer n2 = choice.getSortData().get(o2.getKey()); + Integer n1 = choice.getSortData().get(o1.Key); + Integer n2 = choice.getSortData().get(o2.Key); return n1.compareTo(n2); } }); @@ -222,24 +184,18 @@ public class PickChoiceDialog extends MageDialog { // start selection if((startSelectionValue != null)){ - javax.swing.JList currentlistChoices;// = new javax.swing.JList(); - currentlistChoices=this.get_a_Jlist_from_ScrollListView(); - /*currentlistChoices = this.listChoices;*/ int selectIndex = -1; for(int i = 0; i < this.listChoices.getModel().getSize(); i++){ - //KeyValueItem listItem = (KeyValueItem)currentlistChoices.getModel().getElementAt(i); - String elementOfList = currentlistChoices.getModel().getElementAt(i).toString(); - if (elementOfList.equals(startSelectionValue)){ + KeyValueItem listItem = (KeyValueItem)this.listChoices.getModel().getElementAt(i); + if (listItem.Key.equals(startSelectionValue)){ selectIndex = i; break; } } if(selectIndex >= 0){ - // currentlistChoices=this.get_a_Jlist_from_ScrollListView(); - /*currentlistChoices = this.listChoices;*/ - currentlistChoices.setSelectedIndex(selectIndex); - currentlistChoices.ensureIndexIsVisible(selectIndex); + this.listChoices.setSelectedIndex(selectIndex); + this.listChoices.ensureIndexIsVisible(selectIndex); } } @@ -252,16 +208,14 @@ public class PickChoiceDialog extends MageDialog { private void loadData(){ // load data to datamodel after filter or on startup - String filter = choice.getSearchText(); + String filter = choice.getSearchText(); if (filter == null){ filter = ""; } filter = filter.toLowerCase(Locale.ENGLISH); this.dataModel.clear(); - this.m_dataModel.clear(); for(KeyValueItem item: this.allItems){ if(!choice.isSearchEnabled() || item.Value.toLowerCase(Locale.ENGLISH).contains(filter)){ this.dataModel.addElement(item); - this.m_dataModel.addElement(item.getObjectValue()); } } } @@ -294,9 +248,7 @@ public class PickChoiceDialog extends MageDialog { } private void doChoose(){ - if((tList != null)||(setChoice())){ - this.m_dataModel.clear(); - restoreData(this.m_dataModel); + if(setChoice()){ this.hideDialog(); } } @@ -307,35 +259,13 @@ public class PickChoiceDialog extends MageDialog { hideDialog(); } - /** - * Creates new form PickChoiceDialog - * @param list - */ - public PickChoiceDialog(CheckBoxList list) { - initComponents(); - tList=list; - - this.listChoices.setModel(dataModel); - this.setModal(true); - - if(tList != null) - { - this.listChoices.setVisible(false); - - m_dataModel= ( CheckBoxList.CheckBoxListModel )tList.getModel(); - tList.setSelectionForeground(Color.BLUE); - - if(this.tList instanceof javax.swing.JList){ - setFocus(tList); - } - - } - } /** * Creates new form PickChoiceDialog */ public PickChoiceDialog() { - this(null); + initComponents(); + this.listChoices.setModel(dataModel); + this.setModal(true); } public boolean setChoice() { @@ -364,31 +294,19 @@ public class PickChoiceDialog extends MageDialog { { private final String Key; private final String Value; - private final CheckBoxList.CheckBoxListItem objectValue; - - public KeyValueItem(String value) { - this(value,null,null); - } - public KeyValueItem(String value, String label) { - this(value,label,null); - } - public KeyValueItem(String value, String label,CheckBoxList.CheckBoxListItem object) { + + public KeyValueItem(String value, String label) { this.Key = value; this.Value = label; - this.objectValue = object; } public String getKey() { return this.Key; - } + } public String getValue() { return this.Value; } - - public Object getObjectValue(){ - return (CheckBoxList.CheckBoxListItem)this.objectValue; - } @Override public String toString() { @@ -416,7 +334,6 @@ public class PickChoiceDialog extends MageDialog { panelCommands = new javax.swing.JPanel(); btOK = new javax.swing.JButton(); btCancel = new javax.swing.JButton(); - btClear = 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
"); @@ -431,17 +348,17 @@ public class PickChoiceDialog extends MageDialog { 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.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING)) + .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, Short.MAX_VALUE) + .addGap(0, 0, 0) .addComponent(labelMessage) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(labelSubMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)) + .addGap(0, 0, 0) + .addComponent(labelSubMessage)) ); labelSearch.setText("Search:"); @@ -490,39 +407,30 @@ public class PickChoiceDialog extends MageDialog { } }); - btClear.setText("Clear"); - btClear.setMinimumSize(new java.awt.Dimension(30, 25)); - btClear.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btClearActionPerformed(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(btClear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btOK) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .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) - .addComponent(btClear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(btOK)) .addContainerGap()) ); - getRootPane().setDefaultButton(btOK); getRootPane().setDefaultButton(btOK); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); @@ -546,7 +454,7 @@ public class PickChoiceDialog extends MageDialog { .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.DEFAULT_SIZE, 240, Short.MAX_VALUE) + .addComponent(scrollList, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) @@ -570,16 +478,8 @@ public class PickChoiceDialog extends MageDialog { doCancel(); }//GEN-LAST:event_closeDialog - private void btClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btClearActionPerformed - // TODO add your handling code here: - this.tList.uncheckAll(); - //this.tList.repaint(); - scrollList.repaint(); - }//GEN-LAST:event_btClearActionPerformed - // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btCancel; - private javax.swing.JButton btClear; private javax.swing.JButton btOK; private javax.swing.JTextField editSearch; private javax.swing.JLabel labelMessage; diff --git a/Mage.Client/src/main/java/mage/client/util/gui/FastSearchUtil.java b/Mage.Client/src/main/java/mage/client/util/gui/FastSearchUtil.java index 9b35be5133..ed54815434 100644 --- a/Mage.Client/src/main/java/mage/client/util/gui/FastSearchUtil.java +++ b/Mage.Client/src/main/java/mage/client/util/gui/FastSearchUtil.java @@ -3,60 +3,54 @@ package mage.client.util.gui; import mage.choices.ChoiceImpl; import mage.client.dialog.PickChoiceDialog; -//import java.util.ArrayList; -import mage.client.dialog.CheckBoxList; - import javax.swing.*; import java.util.HashMap; import java.util.Map; -//import javax.swing.text.Position; - -//import org.apache.log4j.helpers.LogLog; /** * * @author JayDi85 */ -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)"; +public class FastSearchUtil { + + 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 CheckBoxList components - * @param combo CheckBoxList control with default data model + * 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(CheckBoxList combo, String chooseMessage){ - // fast search/choice dialog for string combobox - + */ + 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) - DefaultListModel comboModel = (DefaultListModel)combo.getModel(); + DefaultComboBoxModel comboModel = (DefaultComboBoxModel)combo.getModel(); Map choiceItems = new HashMap<>(comboModel.getSize()); Map choiceSorting = new HashMap<>(comboModel.getSize()); String item; - for(int i = 0; i < comboModel.size(); i++){ + 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.firstElement().toString(); + needSelectValue = comboModel.getSelectedItem().toString(); // ask for new value - PickChoiceDialog dlg = new PickChoiceDialog(combo); + PickChoiceDialog dlg = new PickChoiceDialog(); dlg.setWindowSize(300, 500); dlg.showDialog(choice, needSelectValue); - if(choice.isChosen()){ + if(choice.isChosen()){ item = choice.getChoiceKey(); // compatible select for object's models (use setSelectedIndex instead setSelectedObject) @@ -66,14 +60,5 @@ public class FastSearchUtil { } } } - - /* - int[] choiseValue=combo.getCheckedIndices(); - ListModel x= combo.getModel(); - for(int itemIndex: choiseValue){ - LogLog.warn(String.format("%d:%s",itemIndex,x.getElementAt(itemIndex).toString())); - } - */ } } -