mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Support image view scaling using Ctrl+MouseWheel
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user