diff --git a/Mage.Client/src/main/java/mage/client/components/ability/AbilityPicker.java b/Mage.Client/src/main/java/mage/client/components/ability/AbilityPicker.java index 98881758dbb..90eff9c8ec5 100644 --- a/Mage.Client/src/main/java/mage/client/components/ability/AbilityPicker.java +++ b/Mage.Client/src/main/java/mage/client/components/ability/AbilityPicker.java @@ -1,9 +1,8 @@ package mage.client.components.ability; import mage.client.SessionHandler; +import mage.client.dialog.MageDialog; import mage.client.util.ImageHelper; -import mage.client.util.SettingsManager; -import mage.client.util.gui.GuiDisplayUtil; import mage.remote.Session; import mage.view.AbilityPickerView; import org.apache.log4j.Logger; @@ -17,8 +16,8 @@ import org.mage.card.arcane.UI; import javax.swing.*; import java.awt.*; import java.awt.event.*; -import java.util.*; import java.util.List; +import java.util.*; /** * Dialog for choosing abilities. @@ -112,10 +111,7 @@ public class AbilityPicker extends JXPanel implements MouseWheelListener { this.selected = false; // back to false - waiting for selection setVisible(true); - Point centered = SettingsManager.instance.getComponentPosition(DIALOG_WIDTH, DIALOG_HEIGHT); - this.setLocation(centered.x, centered.y); - GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, this); - + MageDialog.makeWindowCentered(this, DIALOG_WIDTH, DIALOG_HEIGHT); //startModal(); } @@ -188,28 +184,28 @@ public class AbilityPicker extends JXPanel implements MouseWheelListener { GroupLayout.TRAILING, layout.createSequentialGroup().addContainerGap().add( layout.createParallelGroup(GroupLayout.TRAILING).add(GroupLayout.LEADING, jScrollPane2, GroupLayout.DEFAULT_SIZE, 422, Short.MAX_VALUE).add(GroupLayout.LEADING, - layout.createSequentialGroup().add(jLabel1).addPreferredGap(LayoutStyle.RELATED, 175, Short.MAX_VALUE).add(1, 1, 1)).add( - GroupLayout.LEADING, - layout.createSequentialGroup().add(layout.createParallelGroup(GroupLayout.LEADING) - ) - .addPreferredGap(LayoutStyle.RELATED) - .add( - layout.createParallelGroup(GroupLayout.TRAILING) - .add( - GroupLayout.LEADING, layout.createParallelGroup(GroupLayout.LEADING))))).add(10, 10, 10))); + layout.createSequentialGroup().add(jLabel1).addPreferredGap(LayoutStyle.RELATED, 175, Short.MAX_VALUE).add(1, 1, 1)).add( + GroupLayout.LEADING, + layout.createSequentialGroup().add(layout.createParallelGroup(GroupLayout.LEADING) + ) + .addPreferredGap(LayoutStyle.RELATED) + .add( + layout.createParallelGroup(GroupLayout.TRAILING) + .add( + GroupLayout.LEADING, layout.createParallelGroup(GroupLayout.LEADING))))).add(10, 10, 10))); layout.setVerticalGroup(layout.createParallelGroup(GroupLayout.LEADING).add( layout.createSequentialGroup().add( layout.createParallelGroup(GroupLayout.LEADING).add( - layout.createSequentialGroup().add(jLabel1, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE) - .add(5, 5, 5) - .add( - layout.createParallelGroup(GroupLayout.BASELINE) - ) - ).add(layout.createSequentialGroup().add(8, 8, 8))) - .addPreferredGap(LayoutStyle.RELATED).add(layout.createParallelGroup(GroupLayout.BASELINE)).addPreferredGap(LayoutStyle.RELATED).add( - layout.createParallelGroup(GroupLayout.BASELINE)).addPreferredGap(LayoutStyle.RELATED).add(layout.createParallelGroup(GroupLayout.LEADING)).addPreferredGap( - LayoutStyle.RELATED).add(jScrollPane2, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE).addContainerGap(23, Short.MAX_VALUE))); + layout.createSequentialGroup().add(jLabel1, GroupLayout.PREFERRED_SIZE, 36, GroupLayout.PREFERRED_SIZE) + .add(5, 5, 5) + .add( + layout.createParallelGroup(GroupLayout.BASELINE) + ) + ).add(layout.createSequentialGroup().add(8, 8, 8))) + .addPreferredGap(LayoutStyle.RELATED).add(layout.createParallelGroup(GroupLayout.BASELINE)).addPreferredGap(LayoutStyle.RELATED).add( + layout.createParallelGroup(GroupLayout.BASELINE)).addPreferredGap(LayoutStyle.RELATED).add(layout.createParallelGroup(GroupLayout.LEADING)).addPreferredGap( + LayoutStyle.RELATED).add(jScrollPane2, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE).addContainerGap(23, Short.MAX_VALUE))); } @Override diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickCheckBoxDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickCheckBoxDialog.java index a9d86c20444..1fccfa75335 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickCheckBoxDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickCheckBoxDialog.java @@ -1,37 +1,17 @@ -/* - * 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.Color; -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.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 javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import java.awt.*; +import java.awt.event.*; +import java.util.*; + /** - * * @author JayDi85 * @author Salco */ @@ -42,28 +22,29 @@ public class PickCheckBoxDialog extends MageDialog { ArrayList allItems = new ArrayList<>(); DefaultListModel dataModel = new DefaultListModel(); CheckBoxList.CheckBoxListModel m_dataModel; - + CheckBoxList tList; - + final private static String HTML_TEMPLATE = "
%s
"; - private void setFocus(CheckBoxList obj){ - + 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()); + this.scrollList.setViewportView((java.awt.Component) obj); } - private void restoreData(Object dataFrom){ + 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()); + ((CheckBoxList.CheckBoxListModel) dataFrom).addElement(item.getObjectValue()); }); } - + public void showDialog(Choice choice) { showDialog(choice, null, null, null); } @@ -75,47 +56,45 @@ public class PickCheckBoxDialog extends MageDialog { 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; KeyValueItem tempKeyValue; int indexInTList; - + 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(); - if (choice.isKeyChoice()){ - for (Map.Entry entry: choice.getKeyChoices().entrySet()) { - if(tList != null){ + if (choice.isKeyChoice()) { + for (Map.Entry entry : choice.getKeyChoices().entrySet()) { + if (tList != null) { indexInTList = m_dataModel.indexOf(entry.getKey()); - tempKeyValue=new KeyValueItem(entry.getKey(), entry.getValue(),(CheckBoxList.CheckBoxListItem) this.tList.getModel().getElementAt(indexInTList)); - } - else{ - tempKeyValue=new KeyValueItem(entry.getKey(), entry.getValue()); + 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){ + 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); + 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()){ + if (choice.isSortEnabled()) { Collections.sort(this.allItems, new Comparator() { @Override public int compare(KeyValueItem o1, KeyValueItem o2) { @@ -125,38 +104,37 @@ public class PickCheckBoxDialog extends MageDialog { } }); } - + // search - if(choice.isSearchEnabled()) - { + if (choice.isSearchEnabled()) { panelSearch.setVisible(true); this.editSearch.setText(choice.getSearchText()); - }else{ + } 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 insertUpdate(DocumentEvent e) { + choice.setSearchText(editSearch.getText()); + loadData(); + } - @Override - public void removeUpdate(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(); - } + @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 @@ -165,10 +143,10 @@ public class PickCheckBoxDialog extends MageDialog { } @Override - public void keyPressed(KeyEvent e) { - if(e.getKeyCode() == KeyEvent.VK_UP){ + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_UP) { doPrevSelect(); - }else if(e.getKeyCode() == KeyEvent.VK_DOWN){ + } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { doNextSelect(); } } @@ -178,19 +156,19 @@ public class PickCheckBoxDialog extends MageDialog { //System.out.println("released"); } }); - + // listeners double click choose listChoices.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if(e.getClickCount() == 2){ + if (e.getClickCount() == 2) { doChoose(); } } }); - + // listeners for ESC close - if(!choice.isRequired()){ + 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); @@ -201,107 +179,106 @@ public class PickCheckBoxDialog extends MageDialog { } }); } - + // window settings - if (this.isModal()){ + if (this.isModal()) { MageFrame.getDesktop().add(this, JLayeredPane.MODAL_LAYER); - }else{ + } 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); + this.makeWindowCentered(); } // final load loadData(); // 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.get_a_Jlist_from_ScrollListView(); /*currentlistChoices = this.listChoices;*/ 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); String elementOfList = currentlistChoices.getModel().getElementAt(i).toString(); - if (elementOfList.equals(startSelectionValue)){ + if (elementOfList.equals(startSelectionValue)) { selectIndex = i; break; } } - if(selectIndex >= 0){ - // currentlistChoices=this.get_a_Jlist_from_ScrollListView(); + if (selectIndex >= 0) { + // currentlistChoices=this.get_a_Jlist_from_ScrollListView(); /*currentlistChoices = this.listChoices;*/ - currentlistChoices.setSelectedIndex(selectIndex); - currentlistChoices.ensureIndexIsVisible(selectIndex); + currentlistChoices.setSelectedIndex(selectIndex); + currentlistChoices.ensureIndexIsVisible(selectIndex); } } this.setVisible(true); } - - public void setWindowSize(int width, int heigth){ + + public void setWindowSize(int width, int heigth) { this.setSize(new Dimension(width, heigth)); } - - private void loadData(){ + + private void loadData() { // load data to datamodel after filter or on startup - String filter = choice.getSearchText(); - if (filter == null){ filter = ""; } + String filter = choice.getSearchText(); + if (filter == null) { + filter = ""; + } filter = filter.toLowerCase(); - + this.dataModel.clear(); this.m_dataModel.clear(); - for(KeyValueItem item: this.allItems){ - if(!choice.isSearchEnabled() || item.Value.toLowerCase().contains(filter)){ + for (KeyValueItem item : this.allItems) { + if (!choice.isSearchEnabled() || item.Value.toLowerCase().contains(filter)) { this.dataModel.addElement(item); this.m_dataModel.addElement(item.getObjectValue()); } } } - - private void setLabelText(JLabel label, String text){ - if ((text != null) && !text.equals("")){ + + private void setLabelText(JLabel label, String text) { + if ((text != null) && !text.equals("")) { label.setText(String.format(HTML_TEMPLATE, text)); label.setVisible(true); - }else{ + } 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){ + + 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 doChoose(){ - if((tList != null)||(setChoice())){ + 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(){ + + private void doCancel() { this.listChoices.clearSelection(); this.choice.clearChoice(); hideDialog(); @@ -309,91 +286,93 @@ public class PickCheckBoxDialog extends MageDialog { /** * Creates new form PickChoiceDialog - * @param list + * + * @param list */ public PickCheckBoxDialog(CheckBoxList list) { initComponents(); - tList=list; - + tList = list; + this.listChoices.setModel(dataModel); this.setModal(true); - if(tList != null) - { + if (tList != null) { this.listChoices.setVisible(false); - - m_dataModel= ( CheckBoxList.CheckBoxListModel )tList.getModel(); + + m_dataModel = (CheckBoxList.CheckBoxListModel) tList.getModel(); tList.setSelectionForeground(Color.BLUE); - - if(this.tList instanceof javax.swing.JList){ - setFocus(tList); - } - + + if (this.tList instanceof javax.swing.JList) { + setFocus(tList); + } + } } + /** * Creates new form PickChoiceDialog */ public PickCheckBoxDialog() { this(null); } - + public boolean setChoice() { - KeyValueItem item = (KeyValueItem)this.listChoices.getSelectedValue(); - + KeyValueItem item = (KeyValueItem) this.listChoices.getSelectedValue(); + // auto select one item (after incemental filtering) - if((item == null) && (this.listChoices.getModel().getSize() == 1)){ + if ((item == null) && (this.listChoices.getModel().getSize() == 1)) { this.listChoices.setSelectedIndex(0); - item = (KeyValueItem)this.listChoices.getSelectedValue(); + item = (KeyValueItem) this.listChoices.getSelectedValue(); } - - if(item != null){ - if(choice.isKeyChoice()){ + + if (item != null) { + if (choice.isKeyChoice()) { choice.setChoiceByKey(item.getKey()); - }else{ + } else { choice.setChoice(item.getKey()); } return true; - }else{ + } else { choice.clearChoice(); return false; } } - - class KeyValueItem - { + + class KeyValueItem { private final String Key; private final String Value; private final CheckBoxList.CheckBoxListItem objectValue; - - public KeyValueItem(String value) { - this(value,null,null); - } - public KeyValueItem(String value, String label) { - this(value,label,null); + + public KeyValueItem(String value) { + this(value, null, null); } - public KeyValueItem(String value, String label,CheckBoxList.CheckBoxListItem object) { + + public KeyValueItem(String value, String label) { + this(value, label, null); + } + + public KeyValueItem(String value, String label, CheckBoxList.CheckBoxListItem object) { this.Key = value; this.Value = label; - this.objectValue = object; + this.objectValue = object; } public String getKey() { return this.Key; - } + } public String getValue() { return this.Value; } - - public Object getObjectValue(){ - return (CheckBoxList.CheckBoxListItem)this.objectValue; + + public Object getObjectValue() { + return (CheckBoxList.CheckBoxListItem) this.objectValue; } @Override public String toString() { return this.Value; - } + } } /** @@ -428,20 +407,20 @@ public class PickCheckBoxDialog extends MageDialog { 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.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING)) - .addGap(0, 0, 0)) + panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelHeaderLayout.createSequentialGroup() + .addGroup(panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(labelSubMessage, javax.swing.GroupLayout.Alignment.TRAILING)) + .addGap(0, 0, 0)) ); panelHeaderLayout.setVerticalGroup( - panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelHeaderLayout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(labelMessage) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(labelSubMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)) + panelHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelHeaderLayout.createSequentialGroup() + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(labelMessage) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(labelSubMessage, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)) ); labelSearch.setText("Search:"); @@ -451,28 +430,34 @@ public class PickCheckBoxDialog extends MageDialog { 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.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)) + 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]; } + String[] strings = {"item1", "item2", "item3"}; + + public int getSize() { + return strings.length; + } + + public Object getElementAt(int i) { + return strings[i]; + } }); scrollList.setViewportView(listChoices); @@ -501,25 +486,25 @@ public class PickCheckBoxDialog extends MageDialog { javax.swing.GroupLayout panelCommandsLayout = new javax.swing.GroupLayout(panelCommands); panelCommands.setLayout(panelCommandsLayout); panelCommandsLayout.setHorizontalGroup( - panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelCommandsLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(btClear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btOK) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelCommandsLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btClear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btOK) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); panelCommandsLayout.setVerticalGroup( - panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelCommandsLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(btCancel) - .addComponent(btOK) - .addComponent(btClear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) + panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelCommandsLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btCancel) + .addComponent(btOK) + .addComponent(btClear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) ); getRootPane().setDefaultButton(btOK); @@ -528,28 +513,28 @@ public class PickCheckBoxDialog extends MageDialog { javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(scrollList, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(panelCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelHeader, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelSearch, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(scrollList, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(panelCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelHeader, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelSearch, javax.swing.GroupLayout.Alignment.TRAILING, 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.DEFAULT_SIZE, 240, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) + 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.DEFAULT_SIZE, 240, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) ); pack(); diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java index 9a73c93a9bb..28bf5227eee 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java @@ -1,36 +1,17 @@ -/* - * 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.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 javax.swing.*; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import java.awt.*; +import java.awt.event.*; +import java.util.*; + /** - * * @author JayDi85 */ @@ -39,7 +20,7 @@ public class PickChoiceDialog extends MageDialog { Choice choice; ArrayList allItems = new ArrayList<>(); DefaultListModel dataModel = new DefaultListModel(); - + final private static String HTML_TEMPLATE = "
%s
"; public void showDialog(Choice choice) { @@ -53,31 +34,31 @@ public class PickChoiceDialog extends MageDialog { 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(); - if (choice.isKeyChoice()){ - for (Map.Entry entry: choice.getKeyChoices().entrySet()) { - this.allItems.add(new KeyValueItem(entry.getKey(), entry.getValue())); + if (choice.isKeyChoice()) { + for (Map.Entry entry : choice.getKeyChoices().entrySet()) { + this.allItems.add(new KeyValueItem(entry.getKey(), entry.getValue())); } } else { - for (String value: choice.getChoices()){ - this.allItems.add(new KeyValueItem(value, value)); + for (String value : choice.getChoices()) { + this.allItems.add(new KeyValueItem(value, value)); } } // sorting - if(choice.isSortEnabled()){ + if (choice.isSortEnabled()) { Collections.sort(this.allItems, new Comparator() { @Override public int compare(KeyValueItem o1, KeyValueItem o2) { @@ -87,38 +68,37 @@ public class PickChoiceDialog extends MageDialog { } }); } - + // search - if(choice.isSearchEnabled()) - { + if (choice.isSearchEnabled()) { panelSearch.setVisible(true); this.editSearch.setText(choice.getSearchText()); - }else{ + } 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 insertUpdate(DocumentEvent e) { + choice.setSearchText(editSearch.getText()); + loadData(); + } - @Override - public void removeUpdate(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(); - } + @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 @@ -127,10 +107,10 @@ public class PickChoiceDialog extends MageDialog { } @Override - public void keyPressed(KeyEvent e) { - if(e.getKeyCode() == KeyEvent.VK_UP){ + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_UP) { doPrevSelect(); - }else if(e.getKeyCode() == KeyEvent.VK_DOWN){ + } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { doNextSelect(); } } @@ -140,19 +120,19 @@ public class PickChoiceDialog extends MageDialog { //System.out.println("released"); } }); - + // listeners double click choose listChoices.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if(e.getClickCount() == 2){ + if (e.getClickCount() == 2) { doChoose(); } } }); - + // listeners for ESC close - if(!choice.isRequired()){ + 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); @@ -163,37 +143,35 @@ public class PickChoiceDialog extends MageDialog { } }); } - + // window settings - if (this.isModal()){ + if (this.isModal()) { MageFrame.getDesktop().add(this, JLayeredPane.MODAL_LAYER); - }else{ + } 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); + this.makeWindowCentered(); } // final load loadData(); // start selection - if((startSelectionValue != null)){ + if ((startSelectionValue != null)) { int selectIndex = -1; - for(int i = 0; i < this.listChoices.getModel().getSize(); i++){ - KeyValueItem listItem = (KeyValueItem)this.listChoices.getModel().getElementAt(i); - if (listItem.Key.equals(startSelectionValue)){ + for (int i = 0; i < this.listChoices.getModel().getSize(); i++) { + KeyValueItem listItem = (KeyValueItem) this.listChoices.getModel().getElementAt(i); + if (listItem.Key.equals(startSelectionValue)) { selectIndex = i; break; } } - if(selectIndex >= 0){ + if (selectIndex >= 0) { this.listChoices.setSelectedIndex(selectIndex); this.listChoices.ensureIndexIsVisible(selectIndex); } @@ -201,59 +179,61 @@ public class PickChoiceDialog extends MageDialog { this.setVisible(true); } - - public void setWindowSize(int width, int heigth){ + + public void setWindowSize(int width, int heigth) { this.setSize(new Dimension(width, heigth)); } - - private void loadData(){ + + private void loadData() { // load data to datamodel after filter or on startup String filter = choice.getSearchText(); - if (filter == null){ filter = ""; } + if (filter == null) { + filter = ""; + } filter = filter.toLowerCase(Locale.ENGLISH); - + this.dataModel.clear(); - for(KeyValueItem item: this.allItems){ - if(!choice.isSearchEnabled() || item.Value.toLowerCase(Locale.ENGLISH).contains(filter)){ + for (KeyValueItem item : this.allItems) { + if (!choice.isSearchEnabled() || item.Value.toLowerCase(Locale.ENGLISH).contains(filter)) { this.dataModel.addElement(item); } } } - - private void setLabelText(JLabel label, String text){ - if ((text != null) && !text.equals("")){ + + private void setLabelText(JLabel label, String text) { + if ((text != null) && !text.equals("")) { label.setText(String.format(HTML_TEMPLATE, text)); label.setVisible(true); - }else{ + } 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){ + + 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 doChoose(){ - if(setChoice()){ + private void doPrevSelect() { + int newSel = this.listChoices.getSelectedIndex() - 1; + if (newSel >= 0) { + this.listChoices.setSelectedIndex(newSel); + this.listChoices.ensureIndexIsVisible(newSel); + } + } + + private void doChoose() { + if (setChoice()) { this.hideDialog(); } } - - private void doCancel(){ + + private void doCancel() { this.listChoices.clearSelection(); this.choice.clearChoice(); hideDialog(); @@ -267,34 +247,33 @@ public class PickChoiceDialog extends MageDialog { this.listChoices.setModel(dataModel); this.setModal(true); } - + public boolean setChoice() { - KeyValueItem item = (KeyValueItem)this.listChoices.getSelectedValue(); - + KeyValueItem item = (KeyValueItem) this.listChoices.getSelectedValue(); + // auto select one item (after incemental filtering) - if((item == null) && (this.listChoices.getModel().getSize() == 1)){ + if ((item == null) && (this.listChoices.getModel().getSize() == 1)) { this.listChoices.setSelectedIndex(0); - item = (KeyValueItem)this.listChoices.getSelectedValue(); + item = (KeyValueItem) this.listChoices.getSelectedValue(); } - - if(item != null){ - if(choice.isKeyChoice()){ + + if (item != null) { + if (choice.isKeyChoice()) { choice.setChoiceByKey(item.getKey()); - }else{ + } else { choice.setChoice(item.getKey()); } return true; - }else{ + } else { choice.clearChoice(); return false; } } - - class KeyValueItem - { + + class KeyValueItem { private final String Key; private final String Value; - + public KeyValueItem(String value, String label) { this.Key = value; this.Value = label; @@ -311,7 +290,7 @@ public class PickChoiceDialog extends MageDialog { @Override public String toString() { return this.Value; - } + } } /** @@ -345,20 +324,20 @@ public class PickChoiceDialog extends MageDialog { 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.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)) + 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:"); @@ -368,28 +347,34 @@ public class PickChoiceDialog extends MageDialog { 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.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)) + 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]; } + String[] strings = {"item1", "item2", "item3"}; + + public int getSize() { + return strings.length; + } + + public Object getElementAt(int i) { + return strings[i]; + } }); scrollList.setViewportView(listChoices); @@ -410,25 +395,25 @@ public class PickChoiceDialog extends MageDialog { 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.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.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()) + 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); @@ -436,28 +421,28 @@ public class PickChoiceDialog extends MageDialog { javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(scrollList, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(panelCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelHeader, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelSearch, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(scrollList, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(panelCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelHeader, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelSearch, javax.swing.GroupLayout.Alignment.TRAILING, 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.DEFAULT_SIZE, 246, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) + 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.DEFAULT_SIZE, 246, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) ); pack(); diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickNumberDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickNumberDialog.java index f24f80dc015..4bf068f5538 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickNumberDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickNumberDialog.java @@ -1,31 +1,21 @@ - - -/* - * PickNumberDialog.java - * - * Created on Feb 25, 2010, 12:03:39 PM - */ - package mage.client.dialog; -import java.awt.Point; +import mage.client.MageFrame; + +import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; -import javax.swing.*; - -import mage.client.MageFrame; -import mage.client.util.SettingsManager; -import mage.client.util.gui.GuiDisplayUtil; /** - * * @author BetaSteward_at_googlemail.com */ public class PickNumberDialog extends MageDialog { private boolean cancel; - /** Creates new form PickNumberDialog */ + /** + * Creates new form PickNumberDialog + */ public PickNumberDialog() { initComponents(); this.setModal(true); @@ -40,16 +30,16 @@ public class PickNumberDialog extends MageDialog { this.pack(); // window settings - if (this.isModal()){ + if (this.isModal()) { MageFrame.getDesktop().add(this, JLayeredPane.MODAL_LAYER); - }else{ + } else { MageFrame.getDesktop().add(this, JLayeredPane.PALETTE_LAYER); } this.getRootPane().setDefaultButton(this.btnOk); // restore default button after root panel change (no need actually) // enable spinner's enter key like text (one enter press instead two) // https://stackoverflow.com/questions/3873870/java-keylistener-not-firing-on-jspinner - ((JSpinner.DefaultEditor)this.spnAmount.getEditor()).getTextField().addKeyListener(new KeyListener(){ + ((JSpinner.DefaultEditor) this.spnAmount.getEditor()).getTextField().addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent e) { @@ -68,23 +58,22 @@ public class PickNumberDialog extends MageDialog { }); - Point centered = SettingsManager.instance.getComponentPosition(getWidth(), getHeight()); - this.setLocation(centered.x, centered.y); - GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, this); + this.makeWindowCentered(); // TODO: need to fix focus restore on second popup (it's not focues, test on Manamorphose) this.setVisible(true); } public int getAmount() { - return ((Number)spnAmount.getValue()).intValue(); + return ((Number) spnAmount.getValue()).intValue(); } public boolean isCancel() { return cancel; } - /** This method is called from within the constructor to + /** + * 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. @@ -105,7 +94,7 @@ public class PickNumberDialog extends MageDialog { lblMessage.setEditable(false); lblMessage.setText("long text long text long text long text long text long text long text long text"); - lblMessage.setCursor(null ); + lblMessage.setCursor(null); lblMessage.setFocusable(false); lblMessage.setOpaque(false); jScrollPane1.setViewportView(lblMessage); @@ -129,22 +118,22 @@ public class PickNumberDialog extends MageDialog { 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(btnOk) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnCancel) - .addContainerGap()) + panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelCommandsLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnOk) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnCancel) + .addContainerGap()) ); panelCommandsLayout.setVerticalGroup( - panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelCommandsLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(btnOk) - .addComponent(btnCancel)) - .addContainerGap()) + panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelCommandsLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(btnOk) + .addComponent(btnCancel)) + .addContainerGap()) ); getRootPane().setDefaultButton(btnOk); @@ -152,27 +141,27 @@ public class PickNumberDialog extends MageDialog { javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 183, Short.MAX_VALUE) - .addComponent(panelCommands, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createSequentialGroup() - .addComponent(spnAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 183, Short.MAX_VALUE) + .addComponent(panelCommands, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addComponent(spnAmount, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) ); layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 117, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(spnAmount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 117, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(spnAmount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) ); pack(); diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java index 4bed9829d60..442e8ae49d7 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java @@ -1,23 +1,16 @@ - package mage.client.dialog; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Point; -import java.util.UUID; -import javax.swing.JButton; -import javax.swing.JLayeredPane; -import javax.swing.JPanel; import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.cards.CardArea; -import mage.client.util.SettingsManager; -import mage.client.util.gui.GuiDisplayUtil; import mage.view.CardsView; import org.mage.card.arcane.CardPanel; +import javax.swing.*; +import java.awt.*; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public class PickPileDialog extends MageDialog { @@ -81,18 +74,16 @@ public class PickPileDialog extends MageDialog { } pack(); - Point centered = SettingsManager.instance.getComponentPosition(getWidth(), getHeight()); - this.setLocation(centered.x, centered.y); - GuiDisplayUtil.keepComponentInsideScreen(centered.x, centered.y, this); + this.makeWindowCentered(); this.revalidate(); this.repaint(); this.setModal(true); // window settings - if (this.isModal()){ + if (this.isModal()) { MageFrame.getDesktop().add(this, JLayeredPane.MODAL_LAYER); - }else{ + } else { MageFrame.getDesktop().add(this, JLayeredPane.PALETTE_LAYER); }