Support image view scaling using Ctrl+MouseWheel

This commit is contained in:
drdev
2014-02-06 02:28:54 +00:00
parent 2252b9908b
commit 028e4bc196
2 changed files with 44 additions and 3 deletions

View File

@@ -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<T extends InventoryItem> extends ItemView<T> {
private final CardViewDisplay display;
private List<Integer> selectedIndices = new ArrayList<Integer>();
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<T extends InventoryItem> extends ItemView<T> {
}
}
@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<T extends InventoryItem> extends ItemView<T> {
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;

View File

@@ -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<T extends InventoryItem> {
private int heightBackup;
private boolean isIncrementalSearchActive = false;
@SuppressWarnings("serial")
protected ItemView(ItemManager<T> itemManager0, ItemManagerModel<T> 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<T extends InventoryItem> {
scroller.getVerticalScrollBar().setValue(value);
}
protected void onMouseWheelZoom(MouseWheelEvent e) {
}
public boolean isIncrementalSearchActive() {
return this.isIncrementalSearchActive;
}