mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Show resize cursor when hover border between columns and while resizing column
This commit is contained in:
@@ -25,13 +25,36 @@ public final class MouseUtil {
|
||||
throw new IllegalArgumentException("No Enum specified for this int");
|
||||
}
|
||||
};
|
||||
|
||||
private static Cursor cursor;
|
||||
private static int cursorLockCount;
|
||||
|
||||
/**
|
||||
* Lock cursor as it is currently displayed until unlockCursor called
|
||||
*/
|
||||
public static void lockCursor() {
|
||||
cursorLockCount++;
|
||||
}
|
||||
public static void unlockCursor() {
|
||||
if (cursorLockCount == 0) { return; }
|
||||
if (--cursorLockCount == 0) {
|
||||
//update displayed cursor after cursor unlocked
|
||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The only reliable way to ensure the mouse cursor is set properly in Forge.
|
||||
*
|
||||
* @param mouseCursor one of the predefined {@code Cursor} types.
|
||||
*/
|
||||
public static void setMouseCursor(MouseCursor cursor) {
|
||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(cursor.toInt()));
|
||||
public static void setMouseCursor(MouseCursor cursor0) {
|
||||
setCursor(Cursor.getPredefinedCursor(cursor0.toInt()));
|
||||
}
|
||||
public static void setCursor(Cursor cursor0) {
|
||||
if (cursor == cursor0) { return; }
|
||||
cursor = cursor0;
|
||||
if (cursorLockCount > 0) { return; }
|
||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
*/
|
||||
package forge.gui.toolbox.itemmanager.views;
|
||||
|
||||
import forge.gui.MouseUtil;
|
||||
import forge.gui.toolbox.FMouseAdapter;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.gui.toolbox.FSkin.*;
|
||||
@@ -32,11 +33,13 @@ import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
import javax.swing.event.TableModelEvent;
|
||||
import javax.swing.table.*;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseMotionAdapter;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
@@ -502,6 +505,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
if (index >= 0) {
|
||||
resizeColumn = (ItemColumn) colModel.getColumn(index);
|
||||
resizeColumn.startResize();
|
||||
MouseUtil.lockCursor(); //lock resize cursor during resize
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -509,6 +513,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
@Override
|
||||
public void onLeftMouseUp(MouseEvent e) {
|
||||
if (resizeColumn != null) {
|
||||
MouseUtil.unlockCursor();
|
||||
resizeColumn.endResize();
|
||||
resizeColumn = null;
|
||||
}
|
||||
@@ -542,6 +547,18 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
public void onLeftMouseDragDrop(MouseEvent e) { //save preferences after column moved/resized
|
||||
SItemManagerIO.savePreferences(itemManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMouseExit(MouseEvent e) {
|
||||
MouseUtil.setCursor(Cursor.getDefaultCursor());
|
||||
}
|
||||
};
|
||||
|
||||
private final MouseMotionAdapter headerMouseMotionAdapter = new MouseMotionAdapter() {
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent arg0) {
|
||||
MouseUtil.setCursor(table.getTableHeader().getCursor());
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -559,6 +576,9 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
|
||||
table.getTableHeader().removeMouseListener(headerMouseAdapter); //ensure listener not added multiple times
|
||||
table.getTableHeader().addMouseListener(headerMouseAdapter);
|
||||
|
||||
table.getTableHeader().removeMouseMotionListener(headerMouseMotionAdapter); //ensure listener not added multiple times
|
||||
table.getTableHeader().addMouseMotionListener(headerMouseMotionAdapter);
|
||||
}
|
||||
|
||||
//========== Overridden from AbstractTableModel
|
||||
|
||||
Reference in New Issue
Block a user