From 028e4bc196e9c6b7e0fb8cb23dcb55c3b159305d Mon Sep 17 00:00:00 2001 From: drdev Date: Thu, 6 Feb 2014 02:28:54 +0000 Subject: [PATCH] Support image view scaling using Ctrl+MouseWheel --- .../toolbox/itemmanager/views/ImageView.java | 31 +++++++++++++++++-- .../toolbox/itemmanager/views/ItemView.java | 16 +++++++++- 2 files changed, 44 insertions(+), 3 deletions(-) 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 fada8434efb..7d415b932d8 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 @@ -13,6 +13,7 @@ import java.awt.RenderingHints; import java.awt.Shape; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; +import java.awt.event.MouseWheelEvent; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; @@ -55,7 +56,7 @@ public class ImageView extends ItemView { private final CardViewDisplay display; private List selectedIndices = new ArrayList(); - private int imageScaleFactor = 3; + private int imageScaleFactor = 5; private boolean allowMultipleSelections; private ColumnDef pileBy = null; private GroupDef groupBy = null; @@ -238,6 +239,32 @@ public class ImageView extends ItemView { } } + @Override + protected void onMouseWheelZoom(MouseWheelEvent e) { + if (e.getWheelRotation() > 0) { + setImageScaleFactor(imageScaleFactor - 1); + } + else { + setImageScaleFactor(imageScaleFactor + 1); + } + } + + public int getImageScaleFactor() { + return imageScaleFactor; + } + + public void setImageScaleFactor(int imageScaleFactor0) { + if (imageScaleFactor0 < 1) { + imageScaleFactor0 = 1; + } + else if (imageScaleFactor0 > 10) { + imageScaleFactor0 = 10; + } + if (imageScaleFactor == imageScaleFactor0) { return; } + imageScaleFactor = imageScaleFactor0; + updateLayout(false); + } + @Override protected void onResize() { updateLayout(false); //need to update layout to adjust wrapping of items @@ -293,7 +320,7 @@ public class ImageView extends ItemView { int pileX = PADDING; int pileWidth = itemAreaWidth - 2 * pileX; - int itemWidth = 50 * imageScaleFactor; + int itemWidth = 50 + 25 * (imageScaleFactor - 1); int gap = Math.round(itemWidth * GAP_SCALE_FACTOR); int dx = itemWidth + gap; int itemsPerRow = (pileWidth + gap) / dx; 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 cb9deeabd92..711eb5d9f8d 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 @@ -13,6 +13,7 @@ import java.awt.event.FocusEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; +import java.awt.event.MouseWheelEvent; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -50,10 +51,20 @@ public abstract class ItemView { private int heightBackup; private boolean isIncrementalSearchActive = false; + @SuppressWarnings("serial") protected ItemView(ItemManager itemManager0, ItemManagerModel model0) { this.itemManager = itemManager0; this.model = model0; - this.scroller = new FScrollPane(false); + this.scroller = new FScrollPane(false) { + @Override + protected void processMouseWheelEvent(MouseWheelEvent e) { + if (e.isControlDown()) { + onMouseWheelZoom(e); + return; + } + super.processMouseWheelEvent(e); + } + }; this.scroller.setBorder(new FSkin.LineSkinBorder(BORDER_COLOR)); this.button = new FLabel.Builder().hoverable().selectable(true) .icon(getIcon()).iconScaleAuto(false) @@ -112,6 +123,9 @@ public abstract class ItemView { scroller.getVerticalScrollBar().setValue(value); } + protected void onMouseWheelZoom(MouseWheelEvent e) { + } + public boolean isIncrementalSearchActive() { return this.isIncrementalSearchActive; }