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:
@@ -26,12 +26,35 @@ public final class MouseUtil {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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.
|
* The only reliable way to ensure the mouse cursor is set properly in Forge.
|
||||||
*
|
*
|
||||||
* @param mouseCursor one of the predefined {@code Cursor} types.
|
* @param mouseCursor one of the predefined {@code Cursor} types.
|
||||||
*/
|
*/
|
||||||
public static void setMouseCursor(MouseCursor cursor) {
|
public static void setMouseCursor(MouseCursor cursor0) {
|
||||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(cursor.toInt()));
|
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;
|
package forge.gui.toolbox.itemmanager.views;
|
||||||
|
|
||||||
|
import forge.gui.MouseUtil;
|
||||||
import forge.gui.toolbox.FMouseAdapter;
|
import forge.gui.toolbox.FMouseAdapter;
|
||||||
import forge.gui.toolbox.FSkin;
|
import forge.gui.toolbox.FSkin;
|
||||||
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.ListSelectionListener;
|
||||||
import javax.swing.event.TableModelEvent;
|
import javax.swing.event.TableModelEvent;
|
||||||
import javax.swing.table.*;
|
import javax.swing.table.*;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.FocusAdapter;
|
import java.awt.event.FocusAdapter;
|
||||||
import java.awt.event.FocusEvent;
|
import java.awt.event.FocusEvent;
|
||||||
import java.awt.event.FocusListener;
|
import java.awt.event.FocusListener;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseMotionAdapter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
@@ -502,6 +505,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
resizeColumn = (ItemColumn) colModel.getColumn(index);
|
resizeColumn = (ItemColumn) colModel.getColumn(index);
|
||||||
resizeColumn.startResize();
|
resizeColumn.startResize();
|
||||||
|
MouseUtil.lockCursor(); //lock resize cursor during resize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -509,6 +513,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
@Override
|
@Override
|
||||||
public void onLeftMouseUp(MouseEvent e) {
|
public void onLeftMouseUp(MouseEvent e) {
|
||||||
if (resizeColumn != null) {
|
if (resizeColumn != null) {
|
||||||
|
MouseUtil.unlockCursor();
|
||||||
resizeColumn.endResize();
|
resizeColumn.endResize();
|
||||||
resizeColumn = null;
|
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
|
public void onLeftMouseDragDrop(MouseEvent e) { //save preferences after column moved/resized
|
||||||
SItemManagerIO.savePreferences(itemManager);
|
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().removeMouseListener(headerMouseAdapter); //ensure listener not added multiple times
|
||||||
table.getTableHeader().addMouseListener(headerMouseAdapter);
|
table.getTableHeader().addMouseListener(headerMouseAdapter);
|
||||||
|
|
||||||
|
table.getTableHeader().removeMouseMotionListener(headerMouseMotionAdapter); //ensure listener not added multiple times
|
||||||
|
table.getTableHeader().addMouseMotionListener(headerMouseMotionAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
//========== Overridden from AbstractTableModel
|
//========== Overridden from AbstractTableModel
|
||||||
|
|||||||
Reference in New Issue
Block a user