From c7e74b2ddcebecc5b16c6e9822924718a48ead46 Mon Sep 17 00:00:00 2001 From: drdev Date: Sat, 8 Feb 2014 02:54:59 +0000 Subject: [PATCH] Add combo box as way to change column count in addition to Ctrl+MouseWheel --- .../forge/gui/toolbox/FComboBoxWrapper.java | 56 ++++++++++--------- .../toolbox/itemmanager/views/ImageView.java | 18 ++++++ .../toolbox/itemmanager/views/ItemView.java | 2 +- 3 files changed, 49 insertions(+), 27 deletions(-) diff --git a/forge-gui/src/main/java/forge/gui/toolbox/FComboBoxWrapper.java b/forge-gui/src/main/java/forge/gui/toolbox/FComboBoxWrapper.java index 9c916346fd3..45493169d35 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/FComboBoxWrapper.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/FComboBoxWrapper.java @@ -30,101 +30,105 @@ public class FComboBoxWrapper { private FComboBox comboBox; private Object constraints; - + public FComboBoxWrapper() { super(); this.comboBox = new FComboBox(); allWrappers.add(this); } - + public FComboBoxWrapper(E[] items) { super(); this.comboBox = new FComboBox(items); allWrappers.add(this); } - + public FComboBoxWrapper(Vector items) { super(); this.comboBox = new FComboBox(items); allWrappers.add(this); } - + public FComboBoxWrapper(ComboBoxModel aModel) { super(); this.comboBox = new FComboBox(aModel); allWrappers.add(this); } - + public void addItem(E item) { this.comboBox.addItem(item); } - + public void removeItem(E item) { this.comboBox.removeItem(item); } - + public void removeAllItems() { this.comboBox.removeAllItems(); } - + @SuppressWarnings("unchecked") public E getSelectedItem() { Object res = this.comboBox.getSelectedItem(); return res == null ? null : (E) res; } - + public void setSelectedItem(Object item) { this.comboBox.setSelectedItem(item); } - + public int getSelectedIndex() { return this.comboBox.getSelectedIndex(); } - + public void setSelectedIndex(int index) { this.comboBox.setSelectedIndex(index); } - + + public void setMaximumRowCount(int count) { + this.comboBox.setMaximumRowCount(count); + } + public int getItemCount() { return this.comboBox.getItemCount(); } - + public E getItemAt(int index) { return this.comboBox.getItemAt(index); } - + public void addActionListener(ActionListener l) { this.comboBox.addActionListener(l); } - + public void addItemListener(ItemListener l) { this.comboBox.addItemListener(l); } - + public void addKeyListener(KeyListener l) { this.comboBox.addKeyListener(l); } - + public void setRenderer(ListCellRenderer aRenderer) { this.comboBox.setRenderer(aRenderer); } - + public void setModel(ComboBoxModel aModel) { this.comboBox.setModel(aModel); } - + public void setTextAlignment(TextAlignment align) { this.comboBox.setTextAlignment(align); } - + public void setSkinFont(SkinFont skinFont) { this.comboBox.setSkinFont(skinFont); } - + public void setVisible(boolean aFlag) { this.comboBox.setVisible(aFlag); } - + public void setEnabled(boolean aFlag) { this.comboBox.setEnabled(aFlag); } @@ -146,11 +150,11 @@ public class FComboBoxWrapper { public JComponent getComponent() { return this.comboBox; } - + private void refreshSkin() { this.comboBox = refreshComboBoxSkin(this.comboBox, this.constraints); } - + //refresh combo box skin by replacing it with a copy of itself //TODO: Figure out if there's a better way, as calling updateUI doesn't seem to work public static FComboBox refreshComboBoxSkin(FComboBox comboBox) { @@ -167,14 +171,14 @@ public class FComboBoxWrapper { break; } } - + //create copy of combo box FComboBox newComboBox = new FComboBox(); for (int i = 0; i < comboBox.getItemCount(); i++) { newComboBox.addItem(comboBox.getItemAt(i)); } newComboBox.setSelectedIndex(comboBox.getSelectedIndex()); - + ActionListener[] actionListeners = newComboBox.getActionListeners(); for (ActionListener l : actionListeners) { newComboBox.removeActionListener(l); //remove default action listeners to prevent duplicates diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java index dd10b9ff4e7..1e5c48dd14c 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ImageView.java @@ -79,6 +79,7 @@ public class ImageView extends ItemView { private final ArrayList groups = new ArrayList(); private final FComboBoxWrapper cbGroupByOptions = new FComboBoxWrapper(); private final FComboBoxWrapper cbPileByOptions = new FComboBoxWrapper(); + private final FComboBoxWrapper cbColumnCount = new FComboBoxWrapper(); public ImageView(ItemManager itemManager0, ItemManagerModel model0) { super(itemManager0, model0); @@ -94,8 +95,15 @@ public class ImageView extends ItemView { for (ColumnDef option : pileByOptions) { cbPileByOptions.addItem(option); } + for (Integer i = MIN_COLUMN_COUNT; i <= MAX_COLUMN_COUNT; i++) { + cbColumnCount.addItem(i); + } + cbGroupByOptions.setMaximumRowCount(cbGroupByOptions.getItemCount()); + cbPileByOptions.setMaximumRowCount(cbPileByOptions.getItemCount()); + cbColumnCount.setMaximumRowCount(cbColumnCount.getItemCount()); cbGroupByOptions.setSelectedIndex(0); cbPileByOptions.setSelectedIndex(0); + cbColumnCount.setSelectedIndex(columnCount - MIN_COLUMN_COUNT); cbGroupByOptions.addActionListener(new ActionListener() { @Override @@ -121,11 +129,20 @@ public class ImageView extends ItemView { } } }); + cbColumnCount.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + focus(); + setColumnCount(cbColumnCount.getSelectedItem()); + } + }); getPnlOptions().add(new FLabel.Builder().text("Group by:").fontSize(12).build()); cbGroupByOptions.addTo(getPnlOptions(), "pushx, growx"); getPnlOptions().add(new FLabel.Builder().text("Pile by:").fontSize(12).build()); cbPileByOptions.addTo(getPnlOptions(), "pushx, growx"); + getPnlOptions().add(new FLabel.Builder().text("Columns:").fontSize(12).build()); + cbColumnCount.addTo(getPnlOptions(), "w 38px!"); //setup display display = new CardViewDisplay(); @@ -335,6 +352,7 @@ public class ImageView extends ItemView { } if (columnCount == columnCount0) { return; } columnCount = columnCount0; + cbColumnCount.setSelectedIndex(columnCount - MIN_COLUMN_COUNT); //determine item to retain scroll position of following column count change ItemInfo focalItem0 = getFocalItem(); diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java index 761a53d2e9e..f3034c85b72 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemView.java @@ -51,7 +51,7 @@ public abstract class ItemView { protected final ItemManagerModel model; private final FScrollPane scroller; private final FLabel button; - private final SkinnedPanel pnlOptions = new SkinnedPanel(new MigLayout("insets 3 1 0 1, gap 3, hidemode 3")); + private final SkinnedPanel pnlOptions = new SkinnedPanel(new MigLayout("insets 3 1 0 1, gap 3 4, hidemode 3")); private int heightBackup; private boolean isIncrementalSearchActive = false;