Show resize cursor when hover border between columns and while resizing column

This commit is contained in:
drdev
2014-02-12 06:17:17 +00:00
parent b39e0f4052
commit 1606bfa2c5
2 changed files with 45 additions and 2 deletions

View File

@@ -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);
} }
} }

View File

@@ -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