mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Lock resize cursors when resizing dock panes
This commit is contained in:
@@ -7,27 +7,6 @@ import java.awt.event.MouseAdapter;
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
|
|
||||||
public final class MouseUtil {
|
public final class MouseUtil {
|
||||||
private MouseUtil() { }
|
|
||||||
|
|
||||||
// Add existing Cursor values as needed.
|
|
||||||
public enum MouseCursor {
|
|
||||||
WAIT_CURSOR (Cursor.WAIT_CURSOR),
|
|
||||||
DEFAULT_CURSOR (Cursor.DEFAULT_CURSOR),
|
|
||||||
HAND_CURSOR (Cursor.HAND_CURSOR);
|
|
||||||
// Scaffolding...
|
|
||||||
private int value;
|
|
||||||
private MouseCursor(int value) { this.value = value; }
|
|
||||||
public int toInt() { return value; }
|
|
||||||
public static MouseCursor fromInt(int value){
|
|
||||||
for (final MouseCursor c : MouseCursor.values()) {
|
|
||||||
if (c.value == value) {
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new IllegalArgumentException("No Enum specified for this int");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private static Cursor cursor;
|
private static Cursor cursor;
|
||||||
private static int cursorLockCount;
|
private static int cursorLockCount;
|
||||||
|
|
||||||
@@ -50,8 +29,11 @@ public final class MouseUtil {
|
|||||||
*
|
*
|
||||||
* @param mouseCursor one of the predefined {@code Cursor} types.
|
* @param mouseCursor one of the predefined {@code Cursor} types.
|
||||||
*/
|
*/
|
||||||
public static void setMouseCursor(MouseCursor cursor0) {
|
public static void resetCursor() {
|
||||||
setCursor(Cursor.getPredefinedCursor(cursor0.toInt()));
|
setCursor(Cursor.getDefaultCursor());
|
||||||
|
}
|
||||||
|
public static void setCursor(int cursorType) {
|
||||||
|
setCursor(Cursor.getPredefinedCursor(cursorType));
|
||||||
}
|
}
|
||||||
public static void setCursor(Cursor cursor0) {
|
public static void setCursor(Cursor cursor0) {
|
||||||
if (cursor == cursor0) { return; }
|
if (cursor == cursor0) { return; }
|
||||||
@@ -60,6 +42,9 @@ public final class MouseUtil {
|
|||||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(cursor);
|
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setComponentCursor(final Component comp, final int cursorType) {
|
||||||
|
setComponentCursor(comp, Cursor.getPredefinedCursor(cursorType));
|
||||||
|
}
|
||||||
public static void setComponentCursor(final Component comp, final Cursor cursor0) {
|
public static void setComponentCursor(final Component comp, final Cursor cursor0) {
|
||||||
comp.addMouseListener(new MouseAdapter() {
|
comp.addMouseListener(new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
@@ -69,7 +54,7 @@ public final class MouseUtil {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseExited(MouseEvent e) {
|
public void mouseExited(MouseEvent e) {
|
||||||
setCursor(Cursor.getDefaultCursor());
|
resetCursor();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
package forge.gui.deckchooser;
|
package forge.gui.deckchooser;
|
||||||
|
|
||||||
import forge.gui.MouseUtil;
|
import forge.gui.MouseUtil;
|
||||||
import forge.gui.MouseUtil.MouseCursor;
|
|
||||||
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
||||||
import forge.gui.toolbox.FComboBox.TextAlignment;
|
import forge.gui.toolbox.FComboBox.TextAlignment;
|
||||||
import forge.gui.toolbox.FComboBoxWrapper;
|
import forge.gui.toolbox.FComboBoxWrapper;
|
||||||
import forge.gui.toolbox.FSkin;
|
import forge.gui.toolbox.FSkin;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
|
import java.awt.Cursor;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -58,13 +59,13 @@ public class DecksComboBox extends FComboBoxWrapper<DeckType> {
|
|||||||
return new ActionListener() {
|
return new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
MouseUtil.setMouseCursor(MouseCursor.WAIT_CURSOR);
|
MouseUtil.setCursor(Cursor.WAIT_CURSOR);
|
||||||
DeckType newDeckType = (DeckType)getSelectedItem();
|
DeckType newDeckType = (DeckType)getSelectedItem();
|
||||||
if (newDeckType != selectedDeckType) {
|
if (newDeckType != selectedDeckType) {
|
||||||
notifyDeckTypeSelected(newDeckType);
|
notifyDeckTypeSelected(newDeckType);
|
||||||
selectedDeckType = newDeckType;
|
selectedDeckType = newDeckType;
|
||||||
}
|
}
|
||||||
MouseUtil.setMouseCursor(MouseCursor.DEFAULT_CURSOR);
|
MouseUtil.resetCursor();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package forge.gui.framework;
|
package forge.gui.framework;
|
||||||
|
|
||||||
|
import forge.gui.MouseUtil;
|
||||||
import forge.gui.toolbox.FSkin;
|
import forge.gui.toolbox.FSkin;
|
||||||
import forge.gui.toolbox.FSkin.SkinCursor;
|
import forge.gui.toolbox.FSkin.SkinCursor;
|
||||||
import forge.gui.toolbox.FSkin.SkinnedLayeredPane;
|
import forge.gui.toolbox.FSkin.SkinnedLayeredPane;
|
||||||
import forge.view.FView;
|
import forge.view.FView;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -188,7 +190,7 @@ public final class SRearrangingUtil {
|
|||||||
}
|
}
|
||||||
else if (cellTarget.equals(cellSrc)) {
|
else if (cellTarget.equals(cellSrc)) {
|
||||||
dropzone = Dropzone.NONE;
|
dropzone = Dropzone.NONE;
|
||||||
pnlDocument.setCursor(Cursor.getDefaultCursor());
|
MouseUtil.resetCursor();
|
||||||
pnlPreview.setBounds(0, 0, 0, 0);
|
pnlPreview.setBounds(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -210,7 +212,7 @@ public final class SRearrangingUtil {
|
|||||||
*/
|
*/
|
||||||
private static void endRearrange() {
|
private static void endRearrange() {
|
||||||
// Resize preview panel in preparation for next event.
|
// Resize preview panel in preparation for next event.
|
||||||
pnlDocument.setCursor(Cursor.getDefaultCursor());
|
MouseUtil.resetCursor();
|
||||||
pnlPreview.setVisible(false);
|
pnlPreview.setVisible(false);
|
||||||
pnlPreview.setBounds(0, 0, 0, 0);
|
pnlPreview.setBounds(0, 0, 0, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package forge.gui.framework;
|
package forge.gui.framework;
|
||||||
|
|
||||||
import forge.gui.FNetOverlay;
|
import forge.gui.FNetOverlay;
|
||||||
|
import forge.gui.MouseUtil;
|
||||||
import forge.gui.toolbox.FAbsolutePositioner;
|
import forge.gui.toolbox.FAbsolutePositioner;
|
||||||
import forge.gui.toolbox.FOverlay;
|
import forge.gui.toolbox.FOverlay;
|
||||||
import forge.view.FDialog;
|
import forge.view.FDialog;
|
||||||
@@ -9,6 +10,7 @@ import forge.view.FNavigationBar;
|
|||||||
import forge.view.FView;
|
import forge.view.FView;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -39,12 +41,12 @@ public final class SResizingUtil {
|
|||||||
private static final MouseListener MAD_RESIZE_X = new MouseAdapter() {
|
private static final MouseListener MAD_RESIZE_X = new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseEntered(final MouseEvent e) {
|
public void mouseEntered(final MouseEvent e) {
|
||||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
|
MouseUtil.setCursor(Cursor.E_RESIZE_CURSOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseExited(final MouseEvent e) {
|
public void mouseExited(final MouseEvent e) {
|
||||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
MouseUtil.resetCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,12 +63,12 @@ public final class SResizingUtil {
|
|||||||
private static final MouseListener MAD_RESIZE_Y = new MouseAdapter() {
|
private static final MouseListener MAD_RESIZE_Y = new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseEntered(final MouseEvent e) {
|
public void mouseEntered(final MouseEvent e) {
|
||||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
|
MouseUtil.setCursor(Cursor.N_RESIZE_CURSOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseExited(final MouseEvent e) {
|
public void mouseExited(final MouseEvent e) {
|
||||||
FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
MouseUtil.resetCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -252,6 +254,8 @@ public final class SResizingUtil {
|
|||||||
|
|
||||||
/** @param e   {@link java.awt.event.MouseEvent} */
|
/** @param e   {@link java.awt.event.MouseEvent} */
|
||||||
public static void startResizeX(final MouseEvent e) {
|
public static void startResizeX(final MouseEvent e) {
|
||||||
|
MouseUtil.lockCursor(); //lock cursor while resizing
|
||||||
|
|
||||||
evtX = (int) e.getLocationOnScreen().getX();
|
evtX = (int) e.getLocationOnScreen().getX();
|
||||||
LEFT_PANELS.clear();
|
LEFT_PANELS.clear();
|
||||||
RIGHT_PANELS.clear();
|
RIGHT_PANELS.clear();
|
||||||
@@ -317,6 +321,8 @@ public final class SResizingUtil {
|
|||||||
|
|
||||||
/** @param e   {@link java.awt.event.MouseEvent} */
|
/** @param e   {@link java.awt.event.MouseEvent} */
|
||||||
public static void startResizeY(final MouseEvent e) {
|
public static void startResizeY(final MouseEvent e) {
|
||||||
|
MouseUtil.lockCursor(); //lock cursor while resizing
|
||||||
|
|
||||||
evtY = (int) e.getLocationOnScreen().getY();
|
evtY = (int) e.getLocationOnScreen().getY();
|
||||||
TOP_PANELS.clear();
|
TOP_PANELS.clear();
|
||||||
BOTTOM_PANELS.clear();
|
BOTTOM_PANELS.clear();
|
||||||
@@ -380,6 +386,7 @@ public final class SResizingUtil {
|
|||||||
|
|
||||||
/** */
|
/** */
|
||||||
public static void endResize() {
|
public static void endResize() {
|
||||||
|
MouseUtil.unlockCursor();
|
||||||
SLayoutIO.saveLayout(null);
|
SLayoutIO.saveLayout(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package forge.gui.match;
|
package forge.gui.match;
|
||||||
|
|
||||||
import forge.gui.MouseUtil;
|
import forge.gui.MouseUtil;
|
||||||
import forge.gui.MouseUtil.MouseCursor;
|
|
||||||
import forge.gui.toolbox.FScrollPane;
|
import forge.gui.toolbox.FScrollPane;
|
||||||
import forge.gui.toolbox.FSkin;
|
import forge.gui.toolbox.FSkin;
|
||||||
import forge.gui.toolbox.FSkin.SkinFont;
|
import forge.gui.toolbox.FSkin.SkinFont;
|
||||||
@@ -204,11 +203,11 @@ public class GameLogPanel extends JPanel {
|
|||||||
switch (e.getID()) {
|
switch (e.getID()) {
|
||||||
case MouseEvent.MOUSE_ENTERED:
|
case MouseEvent.MOUSE_ENTERED:
|
||||||
if (isScrollBarRequired && isHoveringOverLogEntry) {
|
if (isScrollBarRequired && isHoveringOverLogEntry) {
|
||||||
MouseUtil.setMouseCursor(MouseCursor.HAND_CURSOR);
|
MouseUtil.setCursor(Cursor.HAND_CURSOR);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MouseEvent.MOUSE_EXITED:
|
case MouseEvent.MOUSE_EXITED:
|
||||||
MouseUtil.setMouseCursor(MouseCursor.DEFAULT_CURSOR);
|
MouseUtil.resetCursor();
|
||||||
break;
|
break;
|
||||||
case MouseEvent.MOUSE_RELEASED:
|
case MouseEvent.MOUSE_RELEASED:
|
||||||
if (e.getButton() == 1 && isHoveringOverLogEntry) {
|
if (e.getButton() == 1 && isHoveringOverLogEntry) {
|
||||||
@@ -217,9 +216,6 @@ public class GameLogPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package forge.gui.menus;
|
|||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.gui.GuiChoose;
|
import forge.gui.GuiChoose;
|
||||||
import forge.gui.MouseUtil;
|
import forge.gui.MouseUtil;
|
||||||
import forge.gui.MouseUtil.MouseCursor;
|
|
||||||
import forge.gui.framework.FScreen;
|
import forge.gui.framework.FScreen;
|
||||||
import forge.gui.match.controllers.CDock;
|
import forge.gui.match.controllers.CDock;
|
||||||
import forge.gui.toolbox.FSkin;
|
import forge.gui.toolbox.FSkin;
|
||||||
@@ -88,9 +87,9 @@ public final class LayoutMenu {
|
|||||||
private static final ActionListener changeSkin = new ActionListener() {
|
private static final ActionListener changeSkin = new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
MouseUtil.setMouseCursor(MouseCursor.WAIT_CURSOR);
|
MouseUtil.setCursor(Cursor.WAIT_CURSOR);
|
||||||
FSkin.changeSkin(e.getActionCommand());
|
FSkin.changeSkin(e.getActionCommand());
|
||||||
MouseUtil.setMouseCursor(MouseCursor.DEFAULT_CURSOR);
|
MouseUtil.resetCursor();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class FTextField extends SkinnedTextField {
|
|||||||
this.setToolTipText(builder.toolTip);
|
this.setToolTipText(builder.toolTip);
|
||||||
this.setFocusable(true);
|
this.setFocusable(true);
|
||||||
if (this.isEditable()) {
|
if (this.isEditable()) {
|
||||||
MouseUtil.setComponentCursor(this, Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
|
MouseUtil.setComponentCursor(this, Cursor.TEXT_CURSOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
addFocusListener(new FocusAdapter() {
|
addFocusListener(new FocusAdapter() {
|
||||||
|
|||||||
@@ -550,7 +550,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMouseExit(MouseEvent e) {
|
public void onMouseExit(MouseEvent e) {
|
||||||
MouseUtil.setCursor(Cursor.getDefaultCursor());
|
MouseUtil.resetCursor();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user