diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java index d7bfcd1bba6..cdbacef68c1 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java @@ -28,6 +28,8 @@ import javax.swing.JPanel; import javax.swing.JViewport; import javax.swing.ScrollPaneConstants; import javax.swing.SwingUtilities; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import forge.ImageCache; import forge.assets.FSkinProp; @@ -46,15 +48,10 @@ import forge.itemmanager.SItemManagerUtil; import forge.model.FModel; import forge.properties.ForgePreferences; import forge.screens.match.controllers.CDetailPicture; -import forge.toolbox.FComboBoxWrapper; -import forge.toolbox.FLabel; -import forge.toolbox.FMouseAdapter; -import forge.toolbox.FScrollPane; -import forge.toolbox.FSkin; +import forge.toolbox.*; import forge.toolbox.FSkin.SkinColor; import forge.toolbox.FSkin.SkinFont; import forge.toolbox.FSkin.SkinImage; -import forge.toolbox.FTextField; import forge.toolbox.special.CardZoomer; import forge.util.Localizer; import forge.view.arcane.CardPanel; @@ -84,7 +81,6 @@ public class ImageView extends ItemView { private ItemInfo focalItem; private final List orderedItems = new ArrayList(); private final List groups = new ArrayList(); - final Localizer localizer = Localizer.getInstance(); private static boolean isPreferenceEnabled(final ForgePreferences.FPref preferenceName) { return FModel.getPreferences().getPrefBoolean(preferenceName); @@ -211,14 +207,6 @@ public class ImageView extends ItemView { } }); - getPnlOptions().add(btnExpandCollapseAll, "w " + FTextField.HEIGHT + "px, h " + FTextField.HEIGHT + "px"); - getPnlOptions().add(new FLabel.Builder().text(localizer.getMessage("lblGroupby") +":").fontSize(12).build()); - cbGroupByOptions.addTo(getPnlOptions(), "pushx, growx"); - getPnlOptions().add(new FLabel.Builder().text(localizer.getMessage("lblPileby") +":").fontSize(12).build()); - cbPileByOptions.addTo(getPnlOptions(), "pushx, growx"); - getPnlOptions().add(new FLabel.Builder().text(localizer.getMessage("lblColumns") +":").fontSize(12).build()); - cbColumnCount.addTo(getPnlOptions(), "w 38px!"); - //setup display display = new CardViewDisplay(); display.addMouseListener(new FMouseAdapter() { @@ -349,11 +337,28 @@ public class ImageView extends ItemView { @Override public void setup(ItemManagerConfig config, Map colOverrides) { + setPanelOptions(config.getShowUniqueCardsOption()); setGroupBy(config.getGroupBy(), true); setPileBy(config.getPileBy(), true); setColumnCount(config.getImageColumnCount(), true); } + private void setPanelOptions(boolean showUniqueCardsOption) { + // Collapse all groups first + getPnlOptions().add(btnExpandCollapseAll, "w " + FTextField.HEIGHT + "px, h " + FTextField.HEIGHT + "px"); + // Show Unique Cards Only Option + if (showUniqueCardsOption) { + setUniqueCardsOnlyFilter(); + } + // GroupBy, Pile by, Columns + getPnlOptions().add(new FLabel.Builder().text(localizer.getMessage("lblGroupby") +":").fontSize(12).build()); + cbGroupByOptions.addTo(getPnlOptions(), "pushx, growx"); + getPnlOptions().add(new FLabel.Builder().text(localizer.getMessage("lblPileby") +":").fontSize(12).build()); + cbPileByOptions.addTo(getPnlOptions(), "pushx, growx"); + getPnlOptions().add(new FLabel.Builder().text(localizer.getMessage("lblColumns") +":").fontSize(12).build()); + cbColumnCount.addTo(getPnlOptions(), "w 38px!"); + } + public GroupDef getGroupBy() { return groupBy; } diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemListView.java b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemListView.java index c7dc42ba265..9e6abfcc1a9 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemListView.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemListView.java @@ -109,7 +109,6 @@ public final class ItemListView extends ItemView { private final ItemTable table = new ItemTable(); private final ItemTableModel tableModel; - final Localizer localizer = Localizer.getInstance(); public ItemTableModel getTableModel() { return this.tableModel; } @@ -177,22 +176,7 @@ public final class ItemListView extends ItemView { getPnlOptions().removeAll(); if (config.getShowUniqueCardsOption()) { - final FCheckBox chkBox = new FCheckBox(localizer.getMessage("lblUniqueCardsOnly"), this.itemManager.getWantUnique()); - chkBox.setFont(ROW_FONT); - chkBox.setToolTipText("Toggle whether to show unique cards only"); - chkBox.addChangeListener(new ChangeListener() { - @Override public void stateChanged(final ChangeEvent arg0) { - final boolean wantUnique = chkBox.isSelected(); - if (itemManager.getWantUnique() == wantUnique) { return; } - itemManager.setWantUnique(wantUnique); - itemManager.refresh(); - - if (itemManager.getConfig() != null) { - itemManager.getConfig().setUniqueCardsOnly(wantUnique); - } - } - }); - getPnlOptions().add(chkBox); + this.setUniqueCardsOnlyFilter(); } int modelIndex = 0; @@ -203,7 +187,7 @@ public final class ItemListView extends ItemView { if (!hideHeader) { final FCheckBox chkBox = new FCheckBox(StringUtils.isEmpty(col.getShortName()) ? col.getLongName() : col.getShortName(), col.isVisible()); - chkBox.setFont(ROW_FONT); + chkBox.setFont(ItemView.ROW_FONT); chkBox.setToolTipText(col.getLongName()); chkBox.addChangeListener(new ChangeListener() { @Override public void stateChanged(final ChangeEvent arg0) { diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemView.java b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemView.java index aaff5a98c15..76b593c2de2 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemView.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ItemView.java @@ -28,9 +28,13 @@ import javax.swing.ScrollPaneConstants; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.Timer; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import forge.toolbox.*; +import forge.util.Localizer; import net.miginfocom.swing.MigLayout; import org.apache.commons.lang3.CharUtils; @@ -41,17 +45,16 @@ import forge.itemmanager.ColumnDef; import forge.itemmanager.ItemManager; import forge.itemmanager.ItemManagerConfig; import forge.itemmanager.ItemManagerModel; -import forge.toolbox.FLabel; -import forge.toolbox.FScrollPane; -import forge.toolbox.FScrollPanel; -import forge.toolbox.FSkin; import forge.toolbox.FSkin.SkinColor; import forge.toolbox.FSkin.SkinImage; -import forge.toolbox.ToolTipListener; public abstract class ItemView { private static final SkinColor BORDER_COLOR = FSkin.getColor(FSkin.Colors.CLR_TEXT); + // UniqueCards Options Added + static final FSkin.SkinFont ROW_FONT = FSkin.getFont(); + protected final Localizer localizer = Localizer.getInstance(); + protected final ItemManager itemManager; protected final ItemManagerModel model; private final FScrollPane scroller; @@ -60,6 +63,7 @@ public abstract class ItemView { new MigLayout("insets 3 1 0 1, gap 3 4, hidemode 3"), true, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); + protected FCheckBox uniqueCardsOnlyChkBox; private int heightBackup; private boolean isIncrementalSearchActive = false; @@ -88,6 +92,9 @@ public abstract class ItemView { .iconScaleAuto(false) .tooltip(getCaption()) .build(); + + this.uniqueCardsOnlyChkBox = new FCheckBox(localizer.getMessage("lblUniqueCardsOnly"), + this.itemManager.getWantUnique()); } public void initialize(final int index) { @@ -159,9 +166,31 @@ public abstract class ItemView { this.model.refreshSort(); onRefresh(); fixSelection(itemsToSelect, backupIndexToSelect, scrollValueToRestore); + this.uniqueCardsOnlyChkBox.setSelected(this.itemManager.getWantUnique()); } protected abstract void onResize(); protected abstract void onRefresh(); + /* + + */ + protected void setUniqueCardsOnlyFilter() { + this.uniqueCardsOnlyChkBox.setFont(ROW_FONT); + this.uniqueCardsOnlyChkBox.setToolTipText("Toggle whether to show unique cards only"); + this.uniqueCardsOnlyChkBox.addChangeListener(new ChangeListener() { + @Override public void stateChanged(final ChangeEvent arg0) { + final boolean wantUnique = uniqueCardsOnlyChkBox.isSelected(); + if (itemManager.getWantUnique() == wantUnique) { return; } + itemManager.setWantUnique(wantUnique); + itemManager.refresh(); + + if (itemManager.getConfig() != null) { + itemManager.getConfig().setUniqueCardsOnly(wantUnique); + } + } + }); + getPnlOptions().add(uniqueCardsOnlyChkBox); + } + protected void fixSelection(final Iterable itemsToSelect, final int backupIndexToSelect, final int scrollValueToRestore) { if (itemsToSelect == null) { setSelectedIndex(0, false); //select first item if no items to select