mirror of
https://github.com/correl/mage.git
synced 2024-12-25 11:11:16 +00:00
move feature to the filter already implemented.
This commit is contained in:
parent
e7b9d30f39
commit
e53a9d5f39
9 changed files with 313 additions and 1056 deletions
|
@ -38,7 +38,9 @@
|
||||||
<Component id="tbColor" min="-2" max="-2" attributes="0"/>
|
<Component id="tbColor" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="0" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="0" max="-2" attributes="0"/>
|
||||||
<Component id="tbTypes" min="-2" max="-2" attributes="0"/>
|
<Component id="tbTypes" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||||
<Component id="cardSelectorScrollPane" pref="237" max="32767" attributes="0"/>
|
<Component id="cardSelectorScrollPane" pref="237" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||||
<Component id="cardSelectorBottomPanel" min="-2" pref="31" max="-2" attributes="0"/>
|
<Component id="cardSelectorBottomPanel" min="-2" pref="31" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
|
@ -263,17 +265,6 @@
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnClearActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnClearActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JButton" name="jButton1">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="Filter Set"/>
|
|
||||||
<Property name="focusable" type="boolean" value="false"/>
|
|
||||||
<Property name="horizontalTextPosition" type="int" value="0"/>
|
|
||||||
<Property name="verticalTextPosition" type="int" value="3"/>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Container class="javax.swing.JToolBar" name="tbTypes">
|
<Container class="javax.swing.JToolBar" name="tbTypes">
|
||||||
|
|
|
@ -58,7 +58,6 @@ 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.dialog.CheckBoxList;
|
||||||
import mage.client.util.gui.FastSearchUtil_1;
|
|
||||||
|
|
||||||
import mage.client.util.sets.ConstructedFormats;
|
import mage.client.util.sets.ConstructedFormats;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
@ -73,7 +72,6 @@ import mage.filter.predicate.other.CardTextPredicate;
|
||||||
import mage.filter.predicate.other.ExpansionSetPredicate;
|
import mage.filter.predicate.other.ExpansionSetPredicate;
|
||||||
import mage.view.CardView;
|
import mage.view.CardView;
|
||||||
import mage.view.CardsView;
|
import mage.view.CardsView;
|
||||||
//import org.apache.log4j.helpers.LogLog;
|
|
||||||
import org.mage.card.arcane.ManaSymbolsCellRenderer;
|
import org.mage.card.arcane.ManaSymbolsCellRenderer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -88,12 +86,16 @@ 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();
|
||||||
|
@ -101,7 +103,25 @@ 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() {
|
||||||
this.addComponentListener(this);
|
this.addComponentListener(this);
|
||||||
|
@ -306,12 +326,10 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return filter;
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
private CardCriteria buildCriteria() {
|
private CardCriteria buildCriteria() {
|
||||||
//java.util.List<String> setCodes;
|
|
||||||
CardCriteria criteria = new CardCriteria();
|
CardCriteria criteria = new CardCriteria();
|
||||||
criteria.black(this.tbBlack.isSelected());
|
criteria.black(this.tbBlack.isSelected());
|
||||||
criteria.blue(this.tbBlue.isSelected());
|
criteria.blue(this.tbBlue.isSelected());
|
||||||
|
@ -363,13 +381,33 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.cbExpansionSet.isVisible()) {
|
if (this.cbExpansionSet.isVisible()) {
|
||||||
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
|
if(listCodeSelected.getCheckedIndices().length <= 1)
|
||||||
if (!expansionSelection.equals("- All Sets")) {
|
{
|
||||||
java.util.List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
|
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
|
||||||
|
if (!expansionSelection.equals("- All Sets")) {
|
||||||
|
java.util.List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
|
||||||
|
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]));
|
criteria.setCodes(setCodes.toArray(new String[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(cbSetTag!=null)
|
/*if(cbSetTag!=null)
|
||||||
{
|
{
|
||||||
if(listCodeSelected != null)
|
if(listCodeSelected != null)
|
||||||
{
|
{
|
||||||
|
@ -389,7 +427,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
criteria.setCodes(setCodes.toArray(new String[0]));
|
criteria.setCodes(setCodes.toArray(new String[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
return criteria;
|
return criteria;
|
||||||
}
|
}
|
||||||
|
@ -472,16 +510,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
filteredCards.add(card);
|
filteredCards.add(card);
|
||||||
if(cbSetTag==null)
|
|
||||||
{
|
|
||||||
cbSetTag = new javax.swing.JComboBox<>();
|
|
||||||
fist_time = true;
|
|
||||||
}
|
|
||||||
if(fist_time == true)
|
|
||||||
{
|
|
||||||
cbSetTag.addItem(cardInfo.getSetCode());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -558,7 +587,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
chkPennyDreadful = new javax.swing.JCheckBox();
|
chkPennyDreadful = new javax.swing.JCheckBox();
|
||||||
btnBooster = new javax.swing.JButton();
|
btnBooster = new javax.swing.JButton();
|
||||||
btnClear = new javax.swing.JButton();
|
btnClear = new javax.swing.JButton();
|
||||||
jButton1 = new javax.swing.JButton();
|
|
||||||
tbTypes = new javax.swing.JToolBar();
|
tbTypes = new javax.swing.JToolBar();
|
||||||
tbLand = new javax.swing.JToggleButton();
|
tbLand = new javax.swing.JToggleButton();
|
||||||
tbCreatures = new javax.swing.JToggleButton();
|
tbCreatures = new javax.swing.JToggleButton();
|
||||||
|
@ -761,17 +789,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
});
|
});
|
||||||
tbColor.add(btnClear);
|
tbColor.add(btnClear);
|
||||||
|
|
||||||
jButton1.setText("Filter Set");
|
|
||||||
jButton1.setFocusable(false);
|
|
||||||
jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
||||||
jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
||||||
jButton1.addActionListener(new java.awt.event.ActionListener() {
|
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
||||||
jButton1ActionPerformed(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
tbColor.add(jButton1);
|
|
||||||
|
|
||||||
tbTypes.setFloatable(false);
|
tbTypes.setFloatable(false);
|
||||||
tbTypes.setRollover(true);
|
tbTypes.setRollover(true);
|
||||||
tbTypes.setToolTipText("Hold the ALT-key while clicking to deselect all other card types or hold the CTRL-key to only select all other card types."); // NOI18N
|
tbTypes.setToolTipText("Hold the ALT-key while clicking to deselect all other card types or hold the CTRL-key to only select all other card types."); // NOI18N
|
||||||
|
@ -1193,7 +1210,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
.addComponent(cardCountLabel)
|
.addComponent(cardCountLabel)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(cardCount, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(cardCount, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(139, Short.MAX_VALUE))
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
cardSelectorBottomPanelLayout.setVerticalGroup(
|
cardSelectorBottomPanelLayout.setVerticalGroup(
|
||||||
cardSelectorBottomPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
cardSelectorBottomPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
@ -1238,12 +1255,32 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
.addComponent(tbColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(tbColor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGap(0, 0, 0)
|
.addGap(0, 0, 0)
|
||||||
.addComponent(tbTypes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(tbTypes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addGap(0, 0, 0)
|
||||||
.addComponent(cardSelectorScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 237, Short.MAX_VALUE)
|
.addComponent(cardSelectorScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 237, Short.MAX_VALUE)
|
||||||
|
.addGap(0, 0, 0)
|
||||||
.addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
);
|
);
|
||||||
}// </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
|
||||||
|
|
||||||
|
@ -1425,7 +1462,46 @@ 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
|
||||||
|
@ -1448,14 +1524,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
filterCardsRarity(evt.getModifiers(), evt.getActionCommand());
|
filterCardsRarity(evt.getModifiers(), evt.getActionCommand());
|
||||||
}//GEN-LAST:event_tbSpecialActionPerformed
|
}//GEN-LAST:event_tbSpecialActionPerformed
|
||||||
|
|
||||||
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
|
|
||||||
|
|
||||||
CheckBoxList testList;
|
|
||||||
listCodeSelected = FastSearchUtil_1.showFastSearchForStringComboBox(cbSetTag, FastSearchUtil_1.DEFAULT_EXPANSION_SEARCH_MESSAGE);
|
|
||||||
filterCards();
|
|
||||||
|
|
||||||
}//GEN-LAST:event_jButton1ActionPerformed
|
|
||||||
|
|
||||||
private void toggleViewMode() {
|
private void toggleViewMode() {
|
||||||
if (currentView instanceof CardGrid) {
|
if (currentView instanceof CardGrid) {
|
||||||
jToggleListView.setSelected(true);
|
jToggleListView.setSelected(true);
|
||||||
|
@ -1494,6 +1562,7 @@ 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 CheckBoxList listCodeSelected;
|
||||||
private javax.swing.JComboBox<String> cbSetTag;
|
private javax.swing.JComboBox<String> cbSetTag;
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
@ -1513,7 +1582,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
||||||
private javax.swing.JCheckBox chkRules;
|
private javax.swing.JCheckBox chkRules;
|
||||||
private javax.swing.JCheckBox chkTypes;
|
private javax.swing.JCheckBox chkTypes;
|
||||||
private javax.swing.JCheckBox chkUnique;
|
private javax.swing.JCheckBox chkUnique;
|
||||||
private javax.swing.JButton jButton1;
|
|
||||||
private javax.swing.JButton jButtonAddToMain;
|
private javax.swing.JButton jButtonAddToMain;
|
||||||
private javax.swing.JButton jButtonAddToSideboard;
|
private javax.swing.JButton jButtonAddToSideboard;
|
||||||
private javax.swing.JButton jButtonClean;
|
private javax.swing.JButton jButtonClean;
|
||||||
|
|
|
@ -552,7 +552,7 @@ public class CheckBoxList extends JList {
|
||||||
int index = locationToIndex(e.getPoint());
|
int index = locationToIndex(e.getPoint());
|
||||||
|
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
setChecked(index, !getChecked(index));
|
setChecked(index, !getChecked(index));
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -665,4 +665,16 @@ public class CheckBoxList extends JList {
|
||||||
|
|
||||||
return result;
|
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="246" max="32767" attributes="0"/>
|
<Component id="scrollList" pref="240" 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="210" max="32767" attributes="0"/>
|
<Component id="labelMessage" alignment="1" pref="0" max="32767" attributes="0"/>
|
||||||
<Component id="labelSubMessage" alignment="1" pref="210" max="32767" attributes="0"/>
|
<Component id="labelSubMessage" alignment="1" 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="-2" attributes="0"/>
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
<Component id="labelMessage" max="32767" attributes="0"/>
|
<Component id="labelMessage" max="32767" attributes="0"/>
|
||||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="labelSubMessage" max="32767" attributes="0"/>
|
<Component id="labelSubMessage" pref="30" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
|
@ -158,12 +158,14 @@
|
||||||
<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" attributes="0">
|
<Group type="102" alignment="0" 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>
|
||||||
|
@ -174,6 +176,7 @@
|
||||||
<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>
|
||||||
|
@ -200,6 +203,20 @@
|
||||||
<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,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
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;
|
||||||
|
@ -32,6 +33,7 @@ import mage.client.util.gui.MageDialogState;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author JayDi85
|
* @author JayDi85
|
||||||
|
* @author Salco
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class PickChoiceDialog extends MageDialog {
|
public class PickChoiceDialog extends MageDialog {
|
||||||
|
@ -39,9 +41,29 @@ 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);
|
||||||
}
|
}
|
||||||
|
@ -56,7 +78,9 @@ 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());
|
||||||
|
|
||||||
|
@ -68,11 +92,25 @@ 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()) {
|
||||||
this.allItems.add(new KeyValueItem(entry.getKey(), entry.getValue()));
|
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);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (String value: choice.getChoices()){
|
for (String value: choice.getChoices()){
|
||||||
this.allItems.add(new KeyValueItem(value, value));
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,8 +119,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.Key);
|
Integer n1 = choice.getSortData().get(o1.getKey());
|
||||||
Integer n2 = choice.getSortData().get(o2.Key);
|
Integer n2 = choice.getSortData().get(o2.getKey());
|
||||||
return n1.compareTo(n2);
|
return n1.compareTo(n2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -184,18 +222,24 @@ 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)this.listChoices.getModel().getElementAt(i);
|
//KeyValueItem listItem = (KeyValueItem)currentlistChoices.getModel().getElementAt(i);
|
||||||
if (listItem.Key.equals(startSelectionValue)){
|
String elementOfList = currentlistChoices.getModel().getElementAt(i).toString();
|
||||||
|
if (elementOfList.equals(startSelectionValue)){
|
||||||
selectIndex = i;
|
selectIndex = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(selectIndex >= 0){
|
if(selectIndex >= 0){
|
||||||
this.listChoices.setSelectedIndex(selectIndex);
|
// currentlistChoices=this.get_a_Jlist_from_ScrollListView();
|
||||||
this.listChoices.ensureIndexIsVisible(selectIndex);
|
/*currentlistChoices = this.listChoices;*/
|
||||||
|
currentlistChoices.setSelectedIndex(selectIndex);
|
||||||
|
currentlistChoices.ensureIndexIsVisible(selectIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,14 +252,16 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
|
|
||||||
private void loadData(){
|
private void loadData(){
|
||||||
// load data to datamodel after filter or on startup
|
// load data to datamodel after filter or on startup
|
||||||
String filter = choice.getSearchText();
|
String filter = choice.getSearchText();
|
||||||
if (filter == null){ filter = ""; }
|
if (filter == null){ filter = ""; }
|
||||||
filter = filter.toLowerCase();
|
filter = filter.toLowerCase();
|
||||||
|
|
||||||
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().contains(filter)){
|
if(!choice.isSearchEnabled() || item.Value.toLowerCase().contains(filter)){
|
||||||
this.dataModel.addElement(item);
|
this.dataModel.addElement(item);
|
||||||
|
this.m_dataModel.addElement(item.getObjectValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,7 +294,9 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doChoose(){
|
private void doChoose(){
|
||||||
if(setChoice()){
|
if((tList != null)||(setChoice())){
|
||||||
|
this.m_dataModel.clear();
|
||||||
|
restoreData(this.m_dataModel);
|
||||||
this.hideDialog();
|
this.hideDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -261,11 +309,33 @@ public class PickChoiceDialog extends MageDialog {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates new form PickChoiceDialog
|
* Creates new form PickChoiceDialog
|
||||||
|
* @param list
|
||||||
*/
|
*/
|
||||||
public PickChoiceDialog() {
|
public PickChoiceDialog(CheckBoxList list) {
|
||||||
initComponents();
|
initComponents();
|
||||||
|
tList=list;
|
||||||
|
|
||||||
this.listChoices.setModel(dataModel);
|
this.listChoices.setModel(dataModel);
|
||||||
this.setModal(true);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setChoice() {
|
public boolean setChoice() {
|
||||||
|
@ -294,19 +364,31 @@ 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, String label) {
|
|
||||||
|
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) {
|
||||||
this.Key = value;
|
this.Key = value;
|
||||||
this.Value = label;
|
this.Value = label;
|
||||||
|
this.objectValue = object;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getKey() {
|
public String getKey() {
|
||||||
return this.Key;
|
return this.Key;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
return this.Value;
|
return this.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Object getObjectValue(){
|
||||||
|
return (CheckBoxList.CheckBoxListItem)this.objectValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
@ -334,6 +416,7 @@ 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>");
|
||||||
|
@ -348,17 +431,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.DEFAULT_SIZE, 210, Short.MAX_VALUE)
|
.addComponent(labelMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
|
||||||
.addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE))
|
.addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING))
|
||||||
.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, 0)
|
.addGap(0, 0, Short.MAX_VALUE)
|
||||||
.addComponent(labelMessage)
|
.addComponent(labelMessage)
|
||||||
.addGap(0, 0, 0)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(labelSubMessage))
|
.addComponent(labelSubMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
|
|
||||||
labelSearch.setText("Search:");
|
labelSearch.setText("Search:");
|
||||||
|
@ -407,30 +490,39 @@ 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, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(btCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap())
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
|
|
||||||
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());
|
||||||
|
@ -454,7 +546,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, 246, Short.MAX_VALUE)
|
.addComponent(scrollList, javax.swing.GroupLayout.DEFAULT_SIZE, 240, 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())
|
||||||
|
@ -478,8 +570,16 @@ 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;
|
||||||
|
|
|
@ -1,206 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
|
|
||||||
<Form version="1.9" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JInternalFrameFormInfo">
|
|
||||||
<SyntheticProperties>
|
|
||||||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
|
||||||
</SyntheticProperties>
|
|
||||||
<AuxValues>
|
|
||||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
|
|
||||||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
|
||||||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
|
||||||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
|
|
||||||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
|
|
||||||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
|
||||||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
|
||||||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
|
||||||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
|
||||||
</AuxValues>
|
|
||||||
|
|
||||||
<Layout>
|
|
||||||
<DimensionLayout dim="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="1" attributes="0">
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="1" attributes="0">
|
|
||||||
<Component id="scrollList" alignment="1" max="32767" attributes="0"/>
|
|
||||||
<Component id="panelCommands" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="panelHeader" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="panelSearch" alignment="1" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
<DimensionLayout dim="1">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="1" attributes="0">
|
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="panelHeader" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="panelSearch" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="scrollList" min="-2" pref="246" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="panelCommands" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
</Layout>
|
|
||||||
<SubComponents>
|
|
||||||
<Container class="javax.swing.JPanel" name="panelHeader">
|
|
||||||
|
|
||||||
<Layout>
|
|
||||||
<DimensionLayout dim="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Component id="labelMessage" alignment="1" pref="210" max="32767" attributes="0"/>
|
|
||||||
<Component id="labelSubMessage" alignment="1" pref="210" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
<DimensionLayout dim="1">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
|
||||||
<Component id="labelMessage" max="32767" attributes="0"/>
|
|
||||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
|
||||||
<Component id="labelSubMessage" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
</Layout>
|
|
||||||
<SubComponents>
|
|
||||||
<Component class="javax.swing.JLabel" name="labelMessage">
|
|
||||||
<Properties>
|
|
||||||
<Property name="horizontalAlignment" type="int" value="0"/>
|
|
||||||
<Property name="text" type="java.lang.String" value="<html><div style='text-align: center;'>example long message example long message example long message example long message example long message</div></html>"/>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="labelSubMessage">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
|
|
||||||
<FontInfo relative="true">
|
|
||||||
<Font bold="true" component="labelSubMessage" italic="true" property="font" relativeSize="true" size="0"/>
|
|
||||||
</FontInfo>
|
|
||||||
</Property>
|
|
||||||
<Property name="horizontalAlignment" type="int" value="0"/>
|
|
||||||
<Property name="text" type="java.lang.String" value="<html><div style='text-align: center;'>example long message example long</div></html>"/>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
|
||||||
</Container>
|
|
||||||
<Container class="javax.swing.JPanel" name="panelSearch">
|
|
||||||
|
|
||||||
<Layout>
|
|
||||||
<DimensionLayout dim="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
|
||||||
<Component id="labelSearch" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="editSearch" max="32767" attributes="0"/>
|
|
||||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
<DimensionLayout dim="1">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<EmptySpace min="-2" pref="3" max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
|
||||||
<Component id="labelSearch" alignment="3" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="editSearch" alignment="3" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace min="-2" pref="3" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
</Layout>
|
|
||||||
<SubComponents>
|
|
||||||
<Component class="javax.swing.JLabel" name="labelSearch">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="Search:"/>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JTextField" name="editSearch">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="sample search text"/>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
|
||||||
</Container>
|
|
||||||
<Container class="javax.swing.JScrollPane" name="scrollList">
|
|
||||||
|
|
||||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
|
||||||
<SubComponents>
|
|
||||||
<Component class="javax.swing.JList" name="listChoices">
|
|
||||||
<Properties>
|
|
||||||
<Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor">
|
|
||||||
<StringArray count="3">
|
|
||||||
<StringItem index="0" value="item1"/>
|
|
||||||
<StringItem index="1" value="item2"/>
|
|
||||||
<StringItem index="2" value="item3"/>
|
|
||||||
</StringArray>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
<AuxValues>
|
|
||||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value=""/>
|
|
||||||
</AuxValues>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
|
||||||
</Container>
|
|
||||||
<Container class="javax.swing.JPanel" name="panelCommands">
|
|
||||||
|
|
||||||
<Layout>
|
|
||||||
<DimensionLayout dim="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" 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>
|
|
||||||
</DimensionLayout>
|
|
||||||
<DimensionLayout dim="1">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
|
||||||
<Component id="btCancel" alignment="3" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="btOK" alignment="3" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
</Layout>
|
|
||||||
<SubComponents>
|
|
||||||
<Component class="javax.swing.JButton" name="btOK">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="Choose"/>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btOKActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
<AuxValues>
|
|
||||||
<AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="getRootPane().setDefaultButton(btOK);"/>
|
|
||||||
</AuxValues>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JButton" name="btCancel">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="Cancel"/>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btCancelActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
|
||||||
</Container>
|
|
||||||
</SubComponents>
|
|
||||||
</Form>
|
|
|
@ -1,654 +0,0 @@
|
||||||
/*
|
|
||||||
* To change this license header, choose License Headers in Project Properties.
|
|
||||||
* To change this template file, choose Tools | Templates
|
|
||||||
* and open the template in the editor.
|
|
||||||
*/
|
|
||||||
package mage.client.dialog;
|
|
||||||
|
|
||||||
import java.awt.Dimension;
|
|
||||||
import java.awt.Point;
|
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.KeyEvent;
|
|
||||||
import java.awt.event.KeyListener;
|
|
||||||
import java.awt.event.MouseAdapter;
|
|
||||||
import java.awt.event.MouseEvent;
|
|
||||||
import java.util.*;
|
|
||||||
import javax.swing.AbstractAction;
|
|
||||||
import javax.swing.ActionMap;
|
|
||||||
import javax.swing.DefaultListModel;
|
|
||||||
import javax.swing.InputMap;
|
|
||||||
import javax.swing.JComponent;
|
|
||||||
import javax.swing.JLabel;
|
|
||||||
import javax.swing.JLayeredPane;
|
|
||||||
//import javax.swing.JList;
|
|
||||||
import javax.swing.KeyStroke;
|
|
||||||
import javax.swing.event.DocumentEvent;
|
|
||||||
import javax.swing.event.DocumentListener;
|
|
||||||
import mage.choices.Choice;
|
|
||||||
import mage.client.MageFrame;
|
|
||||||
import mage.client.util.SettingsManager;
|
|
||||||
import mage.client.util.gui.GuiDisplayUtil;
|
|
||||||
import mage.client.util.gui.MageDialogState;
|
|
||||||
import org.apache.log4j.helpers.LogLog;
|
|
||||||
import mage.client.dialog.CheckBoxList;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author JayDi85
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class PickChoiceDialog_1<T> extends MageDialog {
|
|
||||||
|
|
||||||
Choice choice;
|
|
||||||
ArrayList<KeyValueItem> allItems = new ArrayList<>();
|
|
||||||
//ArrayList<?> allItems = new ArrayList<>();
|
|
||||||
DefaultListModel<KeyValueItem> dataModel =new DefaultListModel();
|
|
||||||
CheckBoxList.CheckBoxListModel m_dataModel;
|
|
||||||
|
|
||||||
CheckBoxList tList;
|
|
||||||
T tListChoices;
|
|
||||||
|
|
||||||
final private static String HTML_TEMPLATE = "<html><div style='text-align: center;'>%s</div></html>";
|
|
||||||
|
|
||||||
public void setList(T t) { this.tList = (CheckBoxList)t; }
|
|
||||||
public T getList() { return (T)tList; }
|
|
||||||
|
|
||||||
private void setFocus(T obj){
|
|
||||||
//((JList)obj).setModel(dataModel);
|
|
||||||
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 castAsJList(Object anObject){
|
|
||||||
return ((javax.swing.JList)anObject);
|
|
||||||
}
|
|
||||||
private javax.swing.JList get_a_Jlist_from_ScrollListView(){
|
|
||||||
return ((javax.swing.JList)this.scrollList.getViewport().getView());
|
|
||||||
}
|
|
||||||
private void backupData(Object model){
|
|
||||||
KeyValueItem item;
|
|
||||||
int indexInTList;
|
|
||||||
String name;
|
|
||||||
|
|
||||||
int maxLenght = this.allItems.size();//(((CheckBoxList.CheckBoxListModel)model).size());
|
|
||||||
for(int index=0;index < maxLenght;index++){
|
|
||||||
item= this.allItems.get(index);
|
|
||||||
name=item.getKey();//((CheckBoxList.CheckBoxListModel)model).getElementAt(index).toString();
|
|
||||||
indexInTList = ((CheckBoxList.CheckBoxListModel)model).indexOf(item.getKey());
|
|
||||||
|
|
||||||
if(indexInTList>=0){
|
|
||||||
|
|
||||||
|
|
||||||
//if(item.getKey().equals(((CheckBoxList.CheckBoxListModel)model).get(index).toString())){
|
|
||||||
if( !(item.getObjectValue().equals(((CheckBoxList.CheckBoxListModel)model).getElementAt(indexInTList)))){
|
|
||||||
LogLog.warn(String.format("%s change",((CheckBoxList.CheckBoxListModel)model).getElementAt(indexInTList).toString()));
|
|
||||||
//this.allItems.get(indexInTList)
|
|
||||||
}
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void restoreData(Object dataFrom){
|
|
||||||
/* KeyValueItem item;
|
|
||||||
int maxLenght = this.allItems.size();//((CheckBoxList.CheckBoxListModel)dataFrom).size());
|
|
||||||
for(int index=0;index < maxLenght;index++){
|
|
||||||
item= this.allItems.get(index);
|
|
||||||
if(item.getKey().equals(((CheckBoxList.CheckBoxListModel)dataFrom).get(index).toString())){
|
|
||||||
if( !(item.getObjectValue().equals(((CheckBoxList.CheckBoxListModel)dataFrom).getElementAt(index)))){
|
|
||||||
LogLog.warn(String.format("%s change",((CheckBoxList.CheckBoxListModel)dataFrom).getElementAt(index).toString()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
for(KeyValueItem item: this.allItems){
|
|
||||||
((CheckBoxList.CheckBoxListModel)dataFrom).addElement(item.getObjectValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showDialog(Choice choice) {
|
|
||||||
showDialog(choice, null, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showDialog(Choice choice, String startSelectionValue) {
|
|
||||||
showDialog(choice, null, null, startSelectionValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showDialog(Choice choice, UUID objectId, MageDialogState mageDialogState) {
|
|
||||||
showDialog(choice, objectId, mageDialogState, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showDialog(Choice choice, UUID objectId, MageDialogState mageDialogState, String startSelectionValue) {
|
|
||||||
this.choice = choice;
|
|
||||||
|
|
||||||
setLabelText(this.labelMessage, choice.getMessage());
|
|
||||||
setLabelText(this.labelSubMessage, choice.getSubMessage());
|
|
||||||
|
|
||||||
btCancel.setEnabled(!choice.isRequired());
|
|
||||||
|
|
||||||
// 2 modes: string or key-values
|
|
||||||
// sore data in allItems for inremental filtering
|
|
||||||
// http://logicbig.com/tutorials/core-java-tutorial/swing/list-filter/
|
|
||||||
this.allItems.clear();
|
|
||||||
KeyValueItem tempKeyValue;
|
|
||||||
int indexInTList;
|
|
||||||
|
|
||||||
if (choice.isKeyChoice()){
|
|
||||||
for (Map.Entry<String, String> entry: choice.getKeyChoices().entrySet()) {
|
|
||||||
|
|
||||||
if(tList != null){
|
|
||||||
/*for(int index=0;index<this.allItems.size();index++)
|
|
||||||
{
|
|
||||||
|
|
||||||
}*/
|
|
||||||
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 {
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// sorting
|
|
||||||
if(choice.isSortEnabled()){
|
|
||||||
Collections.sort(this.allItems, new Comparator<KeyValueItem>() {
|
|
||||||
@Override
|
|
||||||
public int compare(KeyValueItem o1, KeyValueItem o2) {
|
|
||||||
Integer n1 = choice.getSortData().get(o1.Key);
|
|
||||||
Integer n2 = choice.getSortData().get(o2.Key);
|
|
||||||
return n1.compareTo(n2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// search
|
|
||||||
if(choice.isSearchEnabled())
|
|
||||||
{
|
|
||||||
panelSearch.setVisible(true);
|
|
||||||
this.editSearch.setText(choice.getSearchText());
|
|
||||||
}else{
|
|
||||||
panelSearch.setVisible(false);
|
|
||||||
this.editSearch.setText("");
|
|
||||||
}
|
|
||||||
|
|
||||||
// listeners for inremental filtering
|
|
||||||
editSearch.getDocument().addDocumentListener(new DocumentListener() {
|
|
||||||
@Override
|
|
||||||
public void insertUpdate(DocumentEvent e) {
|
|
||||||
choice.setSearchText(editSearch.getText());
|
|
||||||
loadData();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removeUpdate(DocumentEvent e) {
|
|
||||||
choice.setSearchText(editSearch.getText());
|
|
||||||
loadData();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void changedUpdate(DocumentEvent e) {
|
|
||||||
choice.setSearchText(editSearch.getText());
|
|
||||||
loadData();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// listeners for select up and down without edit focus lost
|
|
||||||
editSearch.addKeyListener(new KeyListener() {
|
|
||||||
@Override
|
|
||||||
public void keyTyped(KeyEvent e) {
|
|
||||||
//System.out.println("types");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void keyPressed(KeyEvent e) {
|
|
||||||
if(e.getKeyCode() == KeyEvent.VK_UP){
|
|
||||||
doPrevSelect();
|
|
||||||
}else if(e.getKeyCode() == KeyEvent.VK_DOWN){
|
|
||||||
doNextSelect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void keyReleased(KeyEvent e) {
|
|
||||||
//System.out.println("released");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// listeners double click choose
|
|
||||||
listChoices.addMouseListener(new MouseAdapter() {
|
|
||||||
@Override
|
|
||||||
public void mouseClicked(MouseEvent e) {
|
|
||||||
if(e.getClickCount() == 2){
|
|
||||||
doChoose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// listeners for ESC close
|
|
||||||
if(!choice.isRequired()){
|
|
||||||
String cancelName = "cancel";
|
|
||||||
InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
|
||||||
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), cancelName);
|
|
||||||
ActionMap actionMap = getRootPane().getActionMap();
|
|
||||||
actionMap.put(cancelName, new AbstractAction() {
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
doCancel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// window settings
|
|
||||||
if (this.isModal()){
|
|
||||||
MageFrame.getDesktop().add(this, JLayeredPane.MODAL_LAYER);
|
|
||||||
}else{
|
|
||||||
MageFrame.getDesktop().add(this, JLayeredPane.PALETTE_LAYER);
|
|
||||||
}
|
|
||||||
if (mageDialogState != null) {
|
|
||||||
mageDialogState.setStateToDialog(this);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Point centered = SettingsManager.instance.getComponentPosition(getWidth(), getHeight());
|
|
||||||
this.setLocation(centered.x, centered.y);
|
|
||||||
GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
// final load
|
|
||||||
loadData();
|
|
||||||
|
|
||||||
// start selection
|
|
||||||
if((startSelectionValue != null)){
|
|
||||||
int selectIndex = -1;
|
|
||||||
|
|
||||||
for(int i = 0; i < this.get_a_Jlist_from_ScrollListView().getModel().getSize(); i++){
|
|
||||||
String elementOfList = this.get_a_Jlist_from_ScrollListView().getModel().getElementAt(i).toString();
|
|
||||||
|
|
||||||
if (elementOfList.equals(startSelectionValue)){
|
|
||||||
selectIndex = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(selectIndex >= 0){
|
|
||||||
this.get_a_Jlist_from_ScrollListView().setSelectedIndex(selectIndex);
|
|
||||||
this.get_a_Jlist_from_ScrollListView().ensureIndexIsVisible(selectIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setVisible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWindowSize(int width, int heigth){
|
|
||||||
this.setSize(new Dimension(width, heigth));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadData(){
|
|
||||||
// load data to datamodel after filter or on startup
|
|
||||||
String filter = choice.getSearchText();
|
|
||||||
if (filter == null){ filter = ""; }
|
|
||||||
filter = filter.toLowerCase();
|
|
||||||
|
|
||||||
backupData(this.m_dataModel);
|
|
||||||
|
|
||||||
this.dataModel.clear();this.m_dataModel.clear();
|
|
||||||
|
|
||||||
for(KeyValueItem item: this.allItems){
|
|
||||||
if(!choice.isSearchEnabled() || item.Value.toLowerCase().contains(filter)){
|
|
||||||
this.dataModel.addElement(item);this.m_dataModel.addElement(item.getObjectValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(this.tList!=null){
|
|
||||||
//((javax.swing.JList)this.tList).setModel(dataModel);
|
|
||||||
//new CheckBoxListModel();
|
|
||||||
//((javax.swing.JList)this.scrollList.getViewport().getView()).setModel(dataModel);setListData(dataModel.toArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setLabelText(JLabel label, String text){
|
|
||||||
if ((text != null) && !text.equals("")){
|
|
||||||
label.setText(String.format(HTML_TEMPLATE, text));
|
|
||||||
label.setVisible(true);
|
|
||||||
}else{
|
|
||||||
label.setText("");
|
|
||||||
label.setVisible(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doNextSelect(){
|
|
||||||
int newSel = this.listChoices.getSelectedIndex() + 1;
|
|
||||||
int maxSel = this.listChoices.getModel().getSize() - 1;
|
|
||||||
if(newSel <= maxSel){
|
|
||||||
this.listChoices.setSelectedIndex(newSel);
|
|
||||||
this.listChoices.ensureIndexIsVisible(newSel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doPrevSelect(){
|
|
||||||
int newSel = this.listChoices.getSelectedIndex() - 1;
|
|
||||||
if(newSel >= 0){
|
|
||||||
this.listChoices.setSelectedIndex(newSel);
|
|
||||||
this.listChoices.ensureIndexIsVisible(newSel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doChoose(){
|
|
||||||
|
|
||||||
if((tList != null)||(setChoice())){
|
|
||||||
this.m_dataModel.clear();
|
|
||||||
restoreData(this.m_dataModel);
|
|
||||||
this.hideDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doCancel(){
|
|
||||||
this.listChoices.clearSelection();
|
|
||||||
this.choice.clearChoice();
|
|
||||||
hideDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates new form PickChoiceDialog_1
|
|
||||||
* @param list
|
|
||||||
*/
|
|
||||||
public PickChoiceDialog_1(CheckBoxList list) {
|
|
||||||
this();
|
|
||||||
setList((T)list);
|
|
||||||
//dataModel = ((javax.swing.JList)tList).getModel();
|
|
||||||
|
|
||||||
this.listChoices.setVisible(false);
|
|
||||||
//tList.getModel()
|
|
||||||
//this.tListChoices = new list.getClass();
|
|
||||||
m_dataModel= ( CheckBoxList.CheckBoxListModel )tList.getModel();
|
|
||||||
if(this.tList instanceof javax.swing.JList){
|
|
||||||
setFocus((T)tList);
|
|
||||||
//((javax.swing.JList)tList).setModel(dataModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* else if(tList instanceof javax.swing.JComboBox){
|
|
||||||
((javax.swing.JComboBox)tList).setModel(dataModel);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/*if((this.panelListChoices.getViewport().getView())!=null){
|
|
||||||
//((T)tList.setListData(dataModel.toArray());
|
|
||||||
}*/
|
|
||||||
/* if ((tList instanceof javax.swing.JList)) {
|
|
||||||
//throw new IllegalArgumentException("Must be a java.awt.Component!");
|
|
||||||
|
|
||||||
((javax.swing.JList)tList).setModel(((javax.swing.ListModel)dataModel));
|
|
||||||
} */
|
|
||||||
}
|
|
||||||
public PickChoiceDialog_1() {
|
|
||||||
initComponents();
|
|
||||||
tList=null;
|
|
||||||
|
|
||||||
|
|
||||||
this.listChoices.setModel(dataModel);
|
|
||||||
/*if((this.scrollList.getViewport().getView())!=null){
|
|
||||||
//((CheckBoxList)this.panelListChoices.getViewport().getView()).setListData(dataModel.toArray());
|
|
||||||
((javax.swing.JList)this.scrollList.getViewport().getView()).setListData(dataModel.toArray());
|
|
||||||
|
|
||||||
}*/
|
|
||||||
//test.setModel(dataModel);
|
|
||||||
//item.setModel(dataModel);
|
|
||||||
|
|
||||||
this.setModal(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean setChoice() {
|
|
||||||
KeyValueItem item = (KeyValueItem)this.listChoices.getSelectedValue();
|
|
||||||
|
|
||||||
// auto select one item (after incemental filtering)
|
|
||||||
if((item == null) && (this.listChoices.getModel().getSize() == 1)){
|
|
||||||
this.listChoices.setSelectedIndex(0);
|
|
||||||
item = (KeyValueItem)this.listChoices.getSelectedValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item != null){
|
|
||||||
if(choice.isKeyChoice()){
|
|
||||||
choice.setChoiceByKey(item.getKey());
|
|
||||||
}else{
|
|
||||||
choice.setChoice(item.getKey());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}else{
|
|
||||||
choice.clearChoice();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class KeyValueItem
|
|
||||||
{
|
|
||||||
private /*final*/ String Key;
|
|
||||||
private final String Value;
|
|
||||||
private final CheckBoxList.CheckBoxListItem objectValue;
|
|
||||||
|
|
||||||
public KeyValueItem(String value) {
|
|
||||||
this.Key = value;
|
|
||||||
this.Value = null;
|
|
||||||
this.objectValue = null;
|
|
||||||
}
|
|
||||||
public KeyValueItem(String value, String label) {
|
|
||||||
this.Key = value;
|
|
||||||
this.Value = label;
|
|
||||||
this.objectValue = null;
|
|
||||||
}
|
|
||||||
public KeyValueItem(String value, String label,CheckBoxList.CheckBoxListItem object) {
|
|
||||||
this.Key = value;
|
|
||||||
this.Value = label;
|
|
||||||
this.objectValue = object;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKey() {
|
|
||||||
return this.Key;
|
|
||||||
}
|
|
||||||
public void setKey(String value) {
|
|
||||||
this.Key= value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getValue() {
|
|
||||||
return this.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getObjectValue(){
|
|
||||||
return (CheckBoxList.CheckBoxListItem)this.objectValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return this.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method is called from within the constructor to initialize the form.
|
|
||||||
* WARNING: Do NOT modify this code. The content of this method is always
|
|
||||||
* regenerated by the Form Editor.
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
|
||||||
private void initComponents() {
|
|
||||||
|
|
||||||
panelHeader = new javax.swing.JPanel();
|
|
||||||
labelMessage = new javax.swing.JLabel();
|
|
||||||
labelSubMessage = new javax.swing.JLabel();
|
|
||||||
panelSearch = new javax.swing.JPanel();
|
|
||||||
labelSearch = new javax.swing.JLabel();
|
|
||||||
editSearch = new javax.swing.JTextField();
|
|
||||||
scrollList = new javax.swing.JScrollPane();
|
|
||||||
listChoices = new javax.swing.JList();
|
|
||||||
panelCommands = new javax.swing.JPanel();
|
|
||||||
btOK = new javax.swing.JButton();
|
|
||||||
btCancel = new javax.swing.JButton();
|
|
||||||
|
|
||||||
labelMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
|
||||||
labelMessage.setText("<html><div style='text-align: center;'>example long message example long message example long message example long message example long message</div></html>");
|
|
||||||
|
|
||||||
labelSubMessage.setFont(labelSubMessage.getFont().deriveFont((labelSubMessage.getFont().getStyle() | java.awt.Font.ITALIC) | java.awt.Font.BOLD));
|
|
||||||
labelSubMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
|
||||||
labelSubMessage.setText("<html><div style='text-align: center;'>example long message example long</div></html>");
|
|
||||||
|
|
||||||
javax.swing.GroupLayout panelHeaderLayout = new javax.swing.GroupLayout(panelHeader);
|
|
||||||
panelHeader.setLayout(panelHeaderLayout);
|
|
||||||
panelHeaderLayout.setHorizontalGroup(
|
|
||||||
panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(panelHeaderLayout.createSequentialGroup()
|
|
||||||
.addGroup(panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addComponent(labelMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE)
|
|
||||||
.addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE))
|
|
||||||
.addGap(0, 0, 0))
|
|
||||||
);
|
|
||||||
panelHeaderLayout.setVerticalGroup(
|
|
||||||
panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(panelHeaderLayout.createSequentialGroup()
|
|
||||||
.addGap(0, 0, 0)
|
|
||||||
.addComponent(labelMessage)
|
|
||||||
.addGap(0, 0, 0)
|
|
||||||
.addComponent(labelSubMessage))
|
|
||||||
);
|
|
||||||
|
|
||||||
labelSearch.setText("Search:");
|
|
||||||
|
|
||||||
editSearch.setText("sample search text");
|
|
||||||
|
|
||||||
javax.swing.GroupLayout panelSearchLayout = new javax.swing.GroupLayout(panelSearch);
|
|
||||||
panelSearch.setLayout(panelSearchLayout);
|
|
||||||
panelSearchLayout.setHorizontalGroup(
|
|
||||||
panelSearchLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(panelSearchLayout.createSequentialGroup()
|
|
||||||
.addGap(0, 0, 0)
|
|
||||||
.addComponent(labelSearch)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(editSearch)
|
|
||||||
.addGap(0, 0, 0))
|
|
||||||
);
|
|
||||||
panelSearchLayout.setVerticalGroup(
|
|
||||||
panelSearchLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(panelSearchLayout.createSequentialGroup()
|
|
||||||
.addGap(3, 3, 3)
|
|
||||||
.addGroup(panelSearchLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
|
||||||
.addComponent(labelSearch)
|
|
||||||
.addComponent(editSearch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
||||||
.addGap(3, 3, 3))
|
|
||||||
);
|
|
||||||
|
|
||||||
listChoices.setModel(new javax.swing.AbstractListModel() {
|
|
||||||
String[] strings = { "item1", "item2", "item3" };
|
|
||||||
public int getSize() { return strings.length; }
|
|
||||||
public Object getElementAt(int i) { return strings[i]; }
|
|
||||||
});
|
|
||||||
scrollList.setViewportView(listChoices);
|
|
||||||
|
|
||||||
btOK.setText("Choose");
|
|
||||||
btOK.addActionListener(new java.awt.event.ActionListener() {
|
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
||||||
btOKActionPerformed(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
btCancel.setText("Cancel");
|
|
||||||
btCancel.addActionListener(new java.awt.event.ActionListener() {
|
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
||||||
btCancelActionPerformed(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
javax.swing.GroupLayout panelCommandsLayout = new javax.swing.GroupLayout(panelCommands);
|
|
||||||
panelCommands.setLayout(panelCommandsLayout);
|
|
||||||
panelCommandsLayout.setHorizontalGroup(
|
|
||||||
panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(panelCommandsLayout.createSequentialGroup()
|
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
||||||
.addComponent(btOK)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(btCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addContainerGap())
|
|
||||||
);
|
|
||||||
|
|
||||||
panelCommandsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btCancel, btOK});
|
|
||||||
|
|
||||||
panelCommandsLayout.setVerticalGroup(
|
|
||||||
panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(panelCommandsLayout.createSequentialGroup()
|
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
||||||
.addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
|
||||||
.addComponent(btCancel)
|
|
||||||
.addComponent(btOK))
|
|
||||||
.addContainerGap())
|
|
||||||
);
|
|
||||||
|
|
||||||
getRootPane().setDefaultButton(btOK);
|
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
|
||||||
getContentPane().setLayout(layout);
|
|
||||||
layout.setHorizontalGroup(
|
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
|
||||||
.addContainerGap()
|
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
|
||||||
.addComponent(scrollList)
|
|
||||||
.addComponent(panelCommands, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
||||||
.addComponent(panelHeader, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
||||||
.addComponent(panelSearch, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
||||||
.addContainerGap())
|
|
||||||
);
|
|
||||||
layout.setVerticalGroup(
|
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
|
||||||
.addContainerGap()
|
|
||||||
.addComponent(panelHeader, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(panelSearch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(scrollList, javax.swing.GroupLayout.PREFERRED_SIZE, 246, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addContainerGap())
|
|
||||||
);
|
|
||||||
|
|
||||||
pack();
|
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
|
||||||
|
|
||||||
private void btOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOKActionPerformed
|
|
||||||
doChoose();
|
|
||||||
}//GEN-LAST:event_btOKActionPerformed
|
|
||||||
|
|
||||||
private void btCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelActionPerformed
|
|
||||||
doCancel();
|
|
||||||
}//GEN-LAST:event_btCancelActionPerformed
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Closes the dialog
|
|
||||||
*/
|
|
||||||
private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
|
|
||||||
doCancel();
|
|
||||||
}//GEN-LAST:event_closeDialog
|
|
||||||
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
|
||||||
private javax.swing.JButton btCancel;
|
|
||||||
private javax.swing.JButton btOK;
|
|
||||||
private javax.swing.JTextField editSearch;
|
|
||||||
private javax.swing.JLabel labelMessage;
|
|
||||||
private javax.swing.JLabel labelSearch;
|
|
||||||
private javax.swing.JLabel labelSubMessage;
|
|
||||||
private javax.swing.JList listChoices;
|
|
||||||
private javax.swing.JPanel panelCommands;
|
|
||||||
private javax.swing.JPanel panelHeader;
|
|
||||||
private javax.swing.JPanel panelSearch;
|
|
||||||
private javax.swing.JScrollPane scrollList;
|
|
||||||
// End of variables declaration//GEN-END:variables
|
|
||||||
}
|
|
|
@ -3,54 +3,60 @@ 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_SEARCH_MESSAGE = "Select set or expansion";
|
public static String DEFAULT_EXPANSION_TOOLTIP_MESSAGE = "Fast search set(s) or expansion(s)";
|
||||||
public static String DEFAULT_EXPANSION_TOOLTIP_MESSAGE = "Fast search set or expansion";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show fast choice modal dialog with incremental searching for any string combobox components
|
* Show fast choice modal dialog with incremental searching for any string CheckBoxList components
|
||||||
* @param combo combobox control with default data model
|
* @param combo CheckBoxList control with default data model
|
||||||
* @param chooseMessage caption message for dialog
|
* @param chooseMessage caption message for dialog
|
||||||
*/
|
*/
|
||||||
public static void showFastSearchForStringComboBox(JComboBox combo, String chooseMessage){
|
public static void showFastSearchForStringComboBox(CheckBoxList 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)
|
||||||
DefaultComboBoxModel comboModel = (DefaultComboBoxModel)combo.getModel();
|
DefaultListModel comboModel = (DefaultListModel)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.getSize(); i++){
|
for(int i = 0; i < comboModel.size(); 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
|
||||||
}
|
}
|
||||||
|
|
||||||
choice.setKeyChoices(choiceItems);
|
choice.setKeyChoices(choiceItems);
|
||||||
choice.setSortData(choiceSorting);
|
choice.setSortData(choiceSorting);
|
||||||
choice.setMessage(chooseMessage);
|
choice.setMessage(chooseMessage);
|
||||||
|
|
||||||
// current selection value restore
|
// current selection value restore
|
||||||
String needSelectValue;
|
String needSelectValue;
|
||||||
needSelectValue = comboModel.getSelectedItem().toString();
|
needSelectValue = comboModel.firstElement().toString();
|
||||||
|
|
||||||
// ask for new value
|
// ask for new value
|
||||||
PickChoiceDialog dlg = new PickChoiceDialog();
|
PickChoiceDialog dlg = new PickChoiceDialog(combo);
|
||||||
dlg.setWindowSize(300, 500);
|
dlg.setWindowSize(300, 500);
|
||||||
dlg.showDialog(choice, needSelectValue);
|
dlg.showDialog(choice, needSelectValue);
|
||||||
if(choice.isChosen()){
|
if(choice.isChosen()){
|
||||||
item = choice.getChoiceKey();
|
item = choice.getChoiceKey();
|
||||||
|
|
||||||
// compatible select for object's models (use setSelectedIndex instead setSelectedObject)
|
// compatible select for object's models (use setSelectedIndex instead setSelectedObject)
|
||||||
|
@ -60,5 +66,14 @@ 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()));
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
package mage.client.util.gui;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import mage.choices.ChoiceImpl;
|
|
||||||
import mage.client.dialog.PickChoiceDialog_1;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import mage.client.dialog.CheckBoxList;
|
|
||||||
//import org.apache.log4j.helpers.LogLog;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author JayDi85
|
|
||||||
*/
|
|
||||||
public class FastSearchUtil_1 {
|
|
||||||
|
|
||||||
public static String DEFAULT_EXPANSION_SEARCH_MESSAGE = "Select set or expansion";
|
|
||||||
public static String DEFAULT_EXPANSION_TOOLTIP_MESSAGE = "Fast search set or expansion";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show fast choice modal dialog with incremental searching for any string combobox components
|
|
||||||
* @param combo combobox control with default data model
|
|
||||||
* @param chooseMessage caption message for dialog
|
|
||||||
* @return The list of all item
|
|
||||||
*/
|
|
||||||
public static CheckBoxList showFastSearchForStringComboBox(JComboBox combo, String chooseMessage){
|
|
||||||
// fast search/choice dialog for string combobox
|
|
||||||
|
|
||||||
CheckBoxList langList= new CheckBoxList();
|
|
||||||
java.util.List<String> myList = new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mage.choices.Choice choice = new ChoiceImpl(false);
|
|
||||||
|
|
||||||
// collect data from expansion combobox (String)
|
|
||||||
DefaultComboBoxModel comboModel = (DefaultComboBoxModel)combo.getModel();
|
|
||||||
Map<String, String> choiceItems = new HashMap<>(comboModel.getSize());
|
|
||||||
Map<String, Integer> choiceSorting = new HashMap<>(comboModel.getSize());
|
|
||||||
String item;
|
|
||||||
|
|
||||||
for(int i = 0; i < comboModel.getSize(); i++){
|
|
||||||
item = comboModel.getElementAt(i).toString();
|
|
||||||
myList.add(item);
|
|
||||||
choiceItems.put(item, item);
|
|
||||||
choiceSorting.put(item, i); // need so sorting
|
|
||||||
}
|
|
||||||
|
|
||||||
langList.setListData(myList.toArray());
|
|
||||||
langList.setChecked(0, true);
|
|
||||||
langList.setChecked(3, true);
|
|
||||||
choice.setKeyChoices(choiceItems);
|
|
||||||
choice.setSortData(choiceSorting);
|
|
||||||
choice.setMessage(chooseMessage);
|
|
||||||
|
|
||||||
// current selection value restore
|
|
||||||
String needSelectValue;
|
|
||||||
needSelectValue = comboModel.getSelectedItem().toString();
|
|
||||||
|
|
||||||
// ask for new value
|
|
||||||
PickChoiceDialog_1<CheckBoxList> dlg = new PickChoiceDialog_1(langList);
|
|
||||||
dlg.setWindowSize(300, 500);
|
|
||||||
//dlg.set(langList.);
|
|
||||||
dlg.showDialog(choice, needSelectValue);
|
|
||||||
/*int[] choiseValue=langList.getCheckedIndices();
|
|
||||||
LogLog.warn("selected:");
|
|
||||||
for(int itemIndex: choiseValue){
|
|
||||||
|
|
||||||
LogLog.warn(String.format("%d",itemIndex));
|
|
||||||
}*/
|
|
||||||
if(choice.isChosen()){
|
|
||||||
item = choice.getChoiceKey();
|
|
||||||
|
|
||||||
// compatible select for object's models (use setSelectedIndex instead setSelectedObject)
|
|
||||||
for(int i = 0; i < comboModel.getSize(); i++){
|
|
||||||
if(comboModel.getElementAt(i).toString().equals(item)){
|
|
||||||
combo.setSelectedIndex(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return langList;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue