mirror of
https://github.com/correl/mage.git
synced 2024-12-26 03:00:11 +00:00
Revert "Feature/Add Set Selection filtering"
This commit is contained in:
parent
054cf4763a
commit
357d126596
6 changed files with 69 additions and 1017 deletions
|
@ -4,12 +4,6 @@
|
||||||
<NonVisualComponents>
|
<NonVisualComponents>
|
||||||
<Component class="javax.swing.ButtonGroup" name="bgView">
|
<Component class="javax.swing.ButtonGroup" name="bgView">
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem1">
|
|
||||||
<Properties>
|
|
||||||
<Property name="selected" type="boolean" value="true"/>
|
|
||||||
<Property name="text" type="java.lang.String" value="jCheckBoxMenuItem1"/>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
</NonVisualComponents>
|
</NonVisualComponents>
|
||||||
<AuxValues>
|
<AuxValues>
|
||||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
|
||||||
|
@ -27,9 +21,9 @@
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="tbColor" alignment="0" max="32767" attributes="0"/>
|
<Component id="tbColor" alignment="0" max="32767" attributes="0"/>
|
||||||
<Component id="tbTypes" alignment="0" pref="1061" max="32767" attributes="0"/>
|
<Component id="tbTypes" alignment="0" pref="1057" max="32767" attributes="0"/>
|
||||||
<Component id="cardSelectorBottomPanel" alignment="0" pref="1061" max="32767" attributes="0"/>
|
|
||||||
<Component id="cardSelectorScrollPane" alignment="0" max="32767" attributes="0"/>
|
<Component id="cardSelectorScrollPane" alignment="0" max="32767" attributes="0"/>
|
||||||
|
<Component id="cardSelectorBottomPanel" alignment="0" pref="1057" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
|
|
|
@ -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 static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_UNIQUE;
|
||||||
import mage.client.util.GUISizeHelper;
|
import mage.client.util.GUISizeHelper;
|
||||||
import mage.client.util.gui.FastSearchUtil;
|
import mage.client.util.gui.FastSearchUtil;
|
||||||
import mage.client.dialog.CheckBoxList;
|
|
||||||
|
|
||||||
import mage.client.util.sets.ConstructedFormats;
|
import mage.client.util.sets.ConstructedFormats;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
|
@ -86,16 +84,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
private final SortSetting sortSetting;
|
private final SortSetting sortSetting;
|
||||||
private static final Map<String, Integer> pdAllowed = new HashMap<>();
|
private static final Map<String, Integer> pdAllowed = new HashMap<>();
|
||||||
|
|
||||||
private final String TEST_MULTI_SET="Multiple Sets selected";
|
|
||||||
|
|
||||||
private final ActionListener searchAction = evt -> jButtonSearchActionPerformed(evt);
|
private final ActionListener searchAction = evt -> jButtonSearchActionPerformed(evt);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates new form CardSelector
|
* Creates new form CardSelector
|
||||||
*/
|
*/
|
||||||
public CardSelector() {
|
public CardSelector() {
|
||||||
|
|
||||||
|
|
||||||
sortSetting = SortSettingBase.getInstance();
|
sortSetting = SortSettingBase.getInstance();
|
||||||
initComponents();
|
initComponents();
|
||||||
cardGrid = new CardGrid();
|
cardGrid = new CardGrid();
|
||||||
|
@ -103,24 +97,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
initListViewComponents();
|
initListViewComponents();
|
||||||
setGUISize();
|
setGUISize();
|
||||||
currentView = mainModel; // by default we use List View
|
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<String> result = new ArrayList<>();
|
|
||||||
|
|
||||||
for(int i=0; (i<setCodes.length)&&(!is_removeFinish);i++)
|
|
||||||
{
|
|
||||||
String item = setCodes[i];
|
|
||||||
if(!item.equals(ConstructedFormats.ALL))
|
|
||||||
{
|
|
||||||
result.add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
listCodeSelected.setListData(result.toArray());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void makeTransparent() {
|
private void makeTransparent() {
|
||||||
|
@ -326,6 +302,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return filter;
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -381,53 +358,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.cbExpansionSet.isVisible()) {
|
if (this.cbExpansionSet.isVisible()) {
|
||||||
if(listCodeSelected.getCheckedIndices().length <= 1)
|
|
||||||
{
|
|
||||||
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
|
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
|
||||||
if (!expansionSelection.equals("- All Sets")) {
|
if (!expansionSelection.equals("- All Sets")) {
|
||||||
java.util.List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
|
java.util.List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
|
||||||
criteria.setCodes(setCodes.toArray(new String[0]));
|
criteria.setCodes(setCodes.toArray(new String[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
java.util.List<String> setCodes = new ArrayList<>() ;
|
|
||||||
//java.util.List<String> listReceived=new ArrayList<>() ;
|
|
||||||
|
|
||||||
int[] choiseValue=listCodeSelected.getCheckedIndices();
|
|
||||||
ListModel x= listCodeSelected.getModel();
|
|
||||||
|
|
||||||
for(int itemIndex: choiseValue){
|
|
||||||
|
|
||||||
java.util.List<String> listReceived=ConstructedFormats.getSetsByFormat(x.getElementAt(itemIndex).toString());
|
|
||||||
listReceived.stream().filter((item) -> (setCodes.contains(item)==false)).forEachOrdered((item) -> {
|
|
||||||
setCodes.add(item);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
criteria.setCodes(setCodes.toArray(new String[0]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*if(cbSetTag!=null)
|
|
||||||
{
|
|
||||||
if(listCodeSelected != null)
|
|
||||||
{
|
|
||||||
boolean isAtLeastOneSelected=false;
|
|
||||||
java.util.List<String> 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;
|
return criteria;
|
||||||
}
|
}
|
||||||
|
@ -483,7 +419,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
}
|
}
|
||||||
|
|
||||||
private void filterCards() {
|
private void filterCards() {
|
||||||
boolean fist_time =false;
|
|
||||||
FilterCard filter = buildFilter();
|
FilterCard filter = buildFilter();
|
||||||
try {
|
try {
|
||||||
java.util.List<Card> filteredCards = new ArrayList<>();
|
java.util.List<Card> filteredCards = new ArrayList<>();
|
||||||
|
@ -572,7 +507,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
|
|
||||||
bgView = new javax.swing.ButtonGroup();
|
bgView = new javax.swing.ButtonGroup();
|
||||||
jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();
|
|
||||||
tbColor = new javax.swing.JToolBar();
|
tbColor = new javax.swing.JToolBar();
|
||||||
tbRed = new javax.swing.JToggleButton();
|
tbRed = new javax.swing.JToggleButton();
|
||||||
tbGreen = 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();
|
cardCountLabel = new javax.swing.JLabel();
|
||||||
cardCount = new javax.swing.JLabel();
|
cardCount = new javax.swing.JLabel();
|
||||||
|
|
||||||
jCheckBoxMenuItem1.setSelected(true);
|
|
||||||
jCheckBoxMenuItem1.setText("jCheckBoxMenuItem1");
|
|
||||||
|
|
||||||
tbColor.setFloatable(false);
|
tbColor.setFloatable(false);
|
||||||
tbColor.setRollover(true);
|
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.");
|
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.setHorizontalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(tbColor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.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(tbTypes, javax.swing.GroupLayout.DEFAULT_SIZE, 1057, Short.MAX_VALUE)
|
||||||
.addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1061, Short.MAX_VALUE)
|
|
||||||
.addComponent(cardSelectorScrollPane)
|
.addComponent(cardSelectorScrollPane)
|
||||||
|
.addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1057, Short.MAX_VALUE)
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
@ -1263,24 +1194,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
private void cbExpansionSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbExpansionSetActionPerformed
|
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();
|
filterCards();
|
||||||
}//GEN-LAST:event_cbExpansionSetActionPerformed
|
}//GEN-LAST:event_cbExpansionSetActionPerformed
|
||||||
|
|
||||||
|
@ -1462,46 +1375,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
}//GEN-LAST:event_chkRulesActionPerformed
|
}//GEN-LAST:event_chkRulesActionPerformed
|
||||||
|
|
||||||
private void btnExpansionSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExpansionSearchActionPerformed
|
private void btnExpansionSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExpansionSearchActionPerformed
|
||||||
|
FastSearchUtil.showFastSearchForStringComboBox(cbExpansionSet, "Select set or expansion");
|
||||||
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();
|
|
||||||
}//GEN-LAST:event_btnExpansionSearchActionPerformed
|
}//GEN-LAST:event_btnExpansionSearchActionPerformed
|
||||||
|
|
||||||
private void tbCommonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbCommonActionPerformed
|
private void tbCommonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbCommonActionPerformed
|
||||||
|
@ -1562,9 +1436,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
private JTable mainTable;
|
private JTable mainTable;
|
||||||
private ICardGrid currentView;
|
private ICardGrid currentView;
|
||||||
|
|
||||||
static boolean isFirstTimeHere=true;
|
|
||||||
private CheckBoxList listCodeSelected;
|
|
||||||
private javax.swing.JComboBox<String> cbSetTag;
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private javax.swing.ButtonGroup bgView;
|
private javax.swing.ButtonGroup bgView;
|
||||||
private javax.swing.JButton btnBooster;
|
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 jButtonRemoveFromMain;
|
||||||
private javax.swing.JButton jButtonRemoveFromSideboard;
|
private javax.swing.JButton jButtonRemoveFromSideboard;
|
||||||
private javax.swing.JButton jButtonSearch;
|
private javax.swing.JButton jButtonSearch;
|
||||||
private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
|
|
||||||
private javax.swing.JToolBar.Separator jSeparator1;
|
private javax.swing.JToolBar.Separator jSeparator1;
|
||||||
private javax.swing.JToolBar.Separator jSeparator2;
|
private javax.swing.JToolBar.Separator jSeparator2;
|
||||||
private javax.swing.JToolBar.Separator jSeparator3;
|
private javax.swing.JToolBar.Separator jSeparator3;
|
||||||
|
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 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<Integer> list;
|
|
||||||
int[] result;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
// traverse over model
|
|
||||||
list = new Vector<Integer>();
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -39,7 +39,7 @@
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="panelSearch" min="-2" max="-2" attributes="0"/>
|
<Component id="panelSearch" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="scrollList" pref="240" max="32767" attributes="0"/>
|
<Component id="scrollList" pref="246" max="32767" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="panelCommands" min="-2" max="-2" attributes="0"/>
|
<Component id="panelCommands" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||||
|
@ -55,8 +55,8 @@
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="labelMessage" alignment="1" pref="0" max="32767" attributes="0"/>
|
<Component id="labelMessage" alignment="1" pref="210" max="32767" attributes="0"/>
|
||||||
<Component id="labelSubMessage" alignment="1" max="32767" attributes="0"/>
|
<Component id="labelSubMessage" alignment="1" pref="210" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
|
@ -65,10 +65,10 @@
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||||
<Component id="labelMessage" max="32767" attributes="0"/>
|
<Component id="labelMessage" max="32767" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||||
<Component id="labelSubMessage" pref="30" max="32767" attributes="0"/>
|
<Component id="labelSubMessage" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
|
@ -158,14 +158,12 @@
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
|
||||||
<Component id="btClear" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="btOK" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="btCancel" min="-2" pref="83" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Component id="btOK" linkSize="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="btCancel" linkSize="3" min="-2" pref="70" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
|
@ -176,7 +174,6 @@
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="btCancel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="btCancel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="btOK" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="btOK" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="btClear" alignment="3" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
|
@ -203,20 +200,6 @@
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btCancelActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btCancelActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JButton" name="btClear">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="Clear"/>
|
|
||||||
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
|
||||||
<Dimension value="[30, 25]"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btClearActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
<AuxValues>
|
|
||||||
<AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="getRootPane().setDefaultButton(btOK);"/>
|
|
||||||
</AuxValues>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.client.dialog;
|
package mage.client.dialog;
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
|
@ -33,7 +32,6 @@ import mage.client.util.gui.MageDialogState;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author JayDi85
|
* @author JayDi85
|
||||||
* @author Salco
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class PickChoiceDialog extends MageDialog {
|
public class PickChoiceDialog extends MageDialog {
|
||||||
|
@ -41,29 +39,9 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
Choice choice;
|
Choice choice;
|
||||||
ArrayList<KeyValueItem> allItems = new ArrayList<>();
|
ArrayList<KeyValueItem> allItems = new ArrayList<>();
|
||||||
DefaultListModel<KeyValueItem> dataModel = new DefaultListModel();
|
DefaultListModel<KeyValueItem> dataModel = new DefaultListModel();
|
||||||
CheckBoxList.CheckBoxListModel m_dataModel;
|
|
||||||
|
|
||||||
CheckBoxList tList;
|
|
||||||
|
|
||||||
final private static String HTML_TEMPLATE = "<html><div style='text-align: center;'>%s</div></html>";
|
final private static String HTML_TEMPLATE = "<html><div style='text-align: center;'>%s</div></html>";
|
||||||
|
|
||||||
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) {
|
public void showDialog(Choice choice) {
|
||||||
showDialog(choice, null, null, null);
|
showDialog(choice, null, null, null);
|
||||||
}
|
}
|
||||||
|
@ -78,8 +56,6 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
|
|
||||||
public void showDialog(Choice choice, UUID objectId, MageDialogState mageDialogState, String startSelectionValue) {
|
public void showDialog(Choice choice, UUID objectId, MageDialogState mageDialogState, String startSelectionValue) {
|
||||||
this.choice = choice;
|
this.choice = choice;
|
||||||
KeyValueItem tempKeyValue;
|
|
||||||
int indexInTList;
|
|
||||||
|
|
||||||
setLabelText(this.labelMessage, choice.getMessage());
|
setLabelText(this.labelMessage, choice.getMessage());
|
||||||
setLabelText(this.labelSubMessage, choice.getSubMessage());
|
setLabelText(this.labelSubMessage, choice.getSubMessage());
|
||||||
|
@ -92,25 +68,11 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
this.allItems.clear();
|
this.allItems.clear();
|
||||||
if (choice.isKeyChoice()){
|
if (choice.isKeyChoice()){
|
||||||
for (Map.Entry<String, String> entry: choice.getKeyChoices().entrySet()) {
|
for (Map.Entry<String, String> entry: choice.getKeyChoices().entrySet()) {
|
||||||
if(tList != null){
|
this.allItems.add(new KeyValueItem(entry.getKey(), entry.getValue()));
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (String value: choice.getChoices()){
|
for (String value: choice.getChoices()){
|
||||||
if(tList != null){
|
this.allItems.add(new KeyValueItem(value, value));
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,8 +81,8 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
Collections.sort(this.allItems, new Comparator<KeyValueItem>() {
|
Collections.sort(this.allItems, new Comparator<KeyValueItem>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(KeyValueItem o1, KeyValueItem o2) {
|
public int compare(KeyValueItem o1, KeyValueItem o2) {
|
||||||
Integer n1 = choice.getSortData().get(o1.getKey());
|
Integer n1 = choice.getSortData().get(o1.Key);
|
||||||
Integer n2 = choice.getSortData().get(o2.getKey());
|
Integer n2 = choice.getSortData().get(o2.Key);
|
||||||
return n1.compareTo(n2);
|
return n1.compareTo(n2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -222,24 +184,18 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
|
|
||||||
// start selection
|
// start selection
|
||||||
if((startSelectionValue != null)){
|
if((startSelectionValue != null)){
|
||||||
javax.swing.JList currentlistChoices;// = new javax.swing.JList();
|
|
||||||
currentlistChoices=this.get_a_Jlist_from_ScrollListView();
|
|
||||||
/*currentlistChoices = this.listChoices;*/
|
|
||||||
int selectIndex = -1;
|
int selectIndex = -1;
|
||||||
for(int i = 0; i < this.listChoices.getModel().getSize(); i++){
|
for(int i = 0; i < this.listChoices.getModel().getSize(); i++){
|
||||||
//KeyValueItem listItem = (KeyValueItem)currentlistChoices.getModel().getElementAt(i);
|
KeyValueItem listItem = (KeyValueItem)this.listChoices.getModel().getElementAt(i);
|
||||||
String elementOfList = currentlistChoices.getModel().getElementAt(i).toString();
|
if (listItem.Key.equals(startSelectionValue)){
|
||||||
if (elementOfList.equals(startSelectionValue)){
|
|
||||||
selectIndex = i;
|
selectIndex = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(selectIndex >= 0){
|
if(selectIndex >= 0){
|
||||||
// currentlistChoices=this.get_a_Jlist_from_ScrollListView();
|
this.listChoices.setSelectedIndex(selectIndex);
|
||||||
/*currentlistChoices = this.listChoices;*/
|
this.listChoices.ensureIndexIsVisible(selectIndex);
|
||||||
currentlistChoices.setSelectedIndex(selectIndex);
|
|
||||||
currentlistChoices.ensureIndexIsVisible(selectIndex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,11 +213,9 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
filter = filter.toLowerCase(Locale.ENGLISH);
|
filter = filter.toLowerCase(Locale.ENGLISH);
|
||||||
|
|
||||||
this.dataModel.clear();
|
this.dataModel.clear();
|
||||||
this.m_dataModel.clear();
|
|
||||||
for(KeyValueItem item: this.allItems){
|
for(KeyValueItem item: this.allItems){
|
||||||
if(!choice.isSearchEnabled() || item.Value.toLowerCase(Locale.ENGLISH).contains(filter)){
|
if(!choice.isSearchEnabled() || item.Value.toLowerCase(Locale.ENGLISH).contains(filter)){
|
||||||
this.dataModel.addElement(item);
|
this.dataModel.addElement(item);
|
||||||
this.m_dataModel.addElement(item.getObjectValue());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -294,9 +248,7 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doChoose(){
|
private void doChoose(){
|
||||||
if((tList != null)||(setChoice())){
|
if(setChoice()){
|
||||||
this.m_dataModel.clear();
|
|
||||||
restoreData(this.m_dataModel);
|
|
||||||
this.hideDialog();
|
this.hideDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -307,35 +259,13 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
hideDialog();
|
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
|
* Creates new form PickChoiceDialog
|
||||||
*/
|
*/
|
||||||
public PickChoiceDialog() {
|
public PickChoiceDialog() {
|
||||||
this(null);
|
initComponents();
|
||||||
|
this.listChoices.setModel(dataModel);
|
||||||
|
this.setModal(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setChoice() {
|
public boolean setChoice() {
|
||||||
|
@ -364,18 +294,10 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
{
|
{
|
||||||
private final String Key;
|
private final String Key;
|
||||||
private final String Value;
|
private final String Value;
|
||||||
private final CheckBoxList.CheckBoxListItem objectValue;
|
|
||||||
|
|
||||||
public KeyValueItem(String value) {
|
|
||||||
this(value,null,null);
|
|
||||||
}
|
|
||||||
public KeyValueItem(String value, String label) {
|
public KeyValueItem(String value, String label) {
|
||||||
this(value,label,null);
|
|
||||||
}
|
|
||||||
public KeyValueItem(String value, String label,CheckBoxList.CheckBoxListItem object) {
|
|
||||||
this.Key = value;
|
this.Key = value;
|
||||||
this.Value = label;
|
this.Value = label;
|
||||||
this.objectValue = object;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getKey() {
|
public String getKey() {
|
||||||
|
@ -386,10 +308,6 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
return this.Value;
|
return this.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object getObjectValue(){
|
|
||||||
return (CheckBoxList.CheckBoxListItem)this.objectValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return this.Value;
|
return this.Value;
|
||||||
|
@ -416,7 +334,6 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
panelCommands = new javax.swing.JPanel();
|
panelCommands = new javax.swing.JPanel();
|
||||||
btOK = new javax.swing.JButton();
|
btOK = new javax.swing.JButton();
|
||||||
btCancel = new javax.swing.JButton();
|
btCancel = new javax.swing.JButton();
|
||||||
btClear = new javax.swing.JButton();
|
|
||||||
|
|
||||||
labelMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
labelMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
labelMessage.setText("<html><div style='text-align: center;'>example long message example long message example long message example long message example long message</div></html>");
|
labelMessage.setText("<html><div style='text-align: center;'>example long message example long message example long message example long message example long message</div></html>");
|
||||||
|
@ -431,17 +348,17 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(panelHeaderLayout.createSequentialGroup()
|
.addGroup(panelHeaderLayout.createSequentialGroup()
|
||||||
.addGroup(panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.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(labelMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE)
|
||||||
.addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING))
|
.addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE))
|
||||||
.addGap(0, 0, 0))
|
.addGap(0, 0, 0))
|
||||||
);
|
);
|
||||||
panelHeaderLayout.setVerticalGroup(
|
panelHeaderLayout.setVerticalGroup(
|
||||||
panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(panelHeaderLayout.createSequentialGroup()
|
.addGroup(panelHeaderLayout.createSequentialGroup()
|
||||||
.addGap(0, 0, Short.MAX_VALUE)
|
.addGap(0, 0, 0)
|
||||||
.addComponent(labelMessage)
|
.addComponent(labelMessage)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addGap(0, 0, 0)
|
||||||
.addComponent(labelSubMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE))
|
.addComponent(labelSubMessage))
|
||||||
);
|
);
|
||||||
|
|
||||||
labelSearch.setText("Search:");
|
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);
|
javax.swing.GroupLayout panelCommandsLayout = new javax.swing.GroupLayout(panelCommands);
|
||||||
panelCommands.setLayout(panelCommandsLayout);
|
panelCommands.setLayout(panelCommandsLayout);
|
||||||
panelCommandsLayout.setHorizontalGroup(
|
panelCommandsLayout.setHorizontalGroup(
|
||||||
panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(panelCommandsLayout.createSequentialGroup()
|
.addGroup(panelCommandsLayout.createSequentialGroup()
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.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)
|
.addComponent(btOK)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(btCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(btCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
panelCommandsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btCancel, btOK});
|
||||||
|
|
||||||
panelCommandsLayout.setVerticalGroup(
|
panelCommandsLayout.setVerticalGroup(
|
||||||
panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(panelCommandsLayout.createSequentialGroup()
|
.addGroup(panelCommandsLayout.createSequentialGroup()
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(btCancel)
|
.addComponent(btCancel)
|
||||||
.addComponent(btOK)
|
.addComponent(btOK))
|
||||||
.addComponent(btClear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
||||||
.addContainerGap())
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
|
|
||||||
getRootPane().setDefaultButton(btOK);
|
|
||||||
getRootPane().setDefaultButton(btOK);
|
getRootPane().setDefaultButton(btOK);
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
@ -546,7 +454,7 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(panelSearch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(panelSearch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.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)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap())
|
.addContainerGap())
|
||||||
|
@ -570,16 +478,8 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
doCancel();
|
doCancel();
|
||||||
}//GEN-LAST:event_closeDialog
|
}//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
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private javax.swing.JButton btCancel;
|
private javax.swing.JButton btCancel;
|
||||||
private javax.swing.JButton btClear;
|
|
||||||
private javax.swing.JButton btOK;
|
private javax.swing.JButton btOK;
|
||||||
private javax.swing.JTextField editSearch;
|
private javax.swing.JTextField editSearch;
|
||||||
private javax.swing.JLabel labelMessage;
|
private javax.swing.JLabel labelMessage;
|
||||||
|
|
|
@ -3,43 +3,37 @@ package mage.client.util.gui;
|
||||||
import mage.choices.ChoiceImpl;
|
import mage.choices.ChoiceImpl;
|
||||||
import mage.client.dialog.PickChoiceDialog;
|
import mage.client.dialog.PickChoiceDialog;
|
||||||
|
|
||||||
//import java.util.ArrayList;
|
|
||||||
import mage.client.dialog.CheckBoxList;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
//import javax.swing.text.Position;
|
|
||||||
|
|
||||||
//import org.apache.log4j.helpers.LogLog;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author JayDi85
|
* @author JayDi85
|
||||||
*/
|
*/
|
||||||
public class FastSearchUtil {
|
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 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
|
* Show fast choice modal dialog with incremental searching for any string combobox components
|
||||||
* @param combo CheckBoxList control with default data model
|
* @param combo combobox control with default data model
|
||||||
* @param chooseMessage caption message for dialog
|
* @param chooseMessage caption message for dialog
|
||||||
*/
|
*/
|
||||||
public static void showFastSearchForStringComboBox(CheckBoxList combo, String chooseMessage){
|
public static void showFastSearchForStringComboBox(JComboBox combo, String chooseMessage){
|
||||||
// fast search/choice dialog for string combobox
|
// fast search/choice dialog for string combobox
|
||||||
|
|
||||||
mage.choices.Choice choice = new ChoiceImpl(false);
|
mage.choices.Choice choice = new ChoiceImpl(false);
|
||||||
|
|
||||||
// collect data from expansion combobox (String)
|
// collect data from expansion combobox (String)
|
||||||
DefaultListModel comboModel = (DefaultListModel)combo.getModel();
|
DefaultComboBoxModel comboModel = (DefaultComboBoxModel)combo.getModel();
|
||||||
Map<String, String> choiceItems = new HashMap<>(comboModel.getSize());
|
Map<String, String> choiceItems = new HashMap<>(comboModel.getSize());
|
||||||
Map<String, Integer> choiceSorting = new HashMap<>(comboModel.getSize());
|
Map<String, Integer> choiceSorting = new HashMap<>(comboModel.getSize());
|
||||||
String item;
|
String item;
|
||||||
|
|
||||||
for(int i = 0; i < comboModel.size(); i++){
|
for(int i = 0; i < comboModel.getSize(); i++){
|
||||||
item = comboModel.getElementAt(i).toString();
|
item = comboModel.getElementAt(i).toString();
|
||||||
|
|
||||||
choiceItems.put(item, item);
|
choiceItems.put(item, item);
|
||||||
choiceSorting.put(item, i); // need so sorting
|
choiceSorting.put(item, i); // need so sorting
|
||||||
}
|
}
|
||||||
|
@ -50,10 +44,10 @@ public class FastSearchUtil {
|
||||||
|
|
||||||
// current selection value restore
|
// current selection value restore
|
||||||
String needSelectValue;
|
String needSelectValue;
|
||||||
needSelectValue = comboModel.firstElement().toString();
|
needSelectValue = comboModel.getSelectedItem().toString();
|
||||||
|
|
||||||
// ask for new value
|
// ask for new value
|
||||||
PickChoiceDialog dlg = new PickChoiceDialog(combo);
|
PickChoiceDialog dlg = new PickChoiceDialog();
|
||||||
dlg.setWindowSize(300, 500);
|
dlg.setWindowSize(300, 500);
|
||||||
dlg.showDialog(choice, needSelectValue);
|
dlg.showDialog(choice, needSelectValue);
|
||||||
if(choice.isChosen()){
|
if(choice.isChosen()){
|
||||||
|
@ -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()));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue