diff --git a/forge-gui/src/main/java/forge/gui/MouseUtil.java b/forge-gui/src/main/java/forge/gui/MouseUtil.java index b62b97a4da2..c16170c4de9 100644 --- a/forge-gui/src/main/java/forge/gui/MouseUtil.java +++ b/forge-gui/src/main/java/forge/gui/MouseUtil.java @@ -7,27 +7,6 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; 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 int cursorLockCount; @@ -50,8 +29,11 @@ public final class MouseUtil { * * @param mouseCursor one of the predefined {@code Cursor} types. */ - public static void setMouseCursor(MouseCursor cursor0) { - setCursor(Cursor.getPredefinedCursor(cursor0.toInt())); + public static void resetCursor() { + setCursor(Cursor.getDefaultCursor()); + } + public static void setCursor(int cursorType) { + setCursor(Cursor.getPredefinedCursor(cursorType)); } public static void setCursor(Cursor cursor0) { if (cursor == cursor0) { return; } @@ -60,6 +42,9 @@ public final class MouseUtil { 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) { comp.addMouseListener(new MouseAdapter() { @Override @@ -69,7 +54,7 @@ public final class MouseUtil { @Override public void mouseExited(MouseEvent e) { - setCursor(Cursor.getDefaultCursor()); + resetCursor(); } }); } diff --git a/forge-gui/src/main/java/forge/gui/deckchooser/DecksComboBox.java b/forge-gui/src/main/java/forge/gui/deckchooser/DecksComboBox.java index 682a3f98180..6e94ceeb093 100644 --- a/forge-gui/src/main/java/forge/gui/deckchooser/DecksComboBox.java +++ b/forge-gui/src/main/java/forge/gui/deckchooser/DecksComboBox.java @@ -1,13 +1,14 @@ package forge.gui.deckchooser; import forge.gui.MouseUtil; -import forge.gui.MouseUtil.MouseCursor; import forge.gui.deckchooser.DecksComboBox.DeckType; import forge.gui.toolbox.FComboBox.TextAlignment; import forge.gui.toolbox.FComboBoxWrapper; import forge.gui.toolbox.FSkin; import javax.swing.*; + +import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -58,13 +59,13 @@ public class DecksComboBox extends FComboBoxWrapper { return new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - MouseUtil.setMouseCursor(MouseCursor.WAIT_CURSOR); + MouseUtil.setCursor(Cursor.WAIT_CURSOR); DeckType newDeckType = (DeckType)getSelectedItem(); if (newDeckType != selectedDeckType) { notifyDeckTypeSelected(newDeckType); selectedDeckType = newDeckType; } - MouseUtil.setMouseCursor(MouseCursor.DEFAULT_CURSOR); + MouseUtil.resetCursor(); } }; } diff --git a/forge-gui/src/main/java/forge/gui/framework/SRearrangingUtil.java b/forge-gui/src/main/java/forge/gui/framework/SRearrangingUtil.java index 44896feea50..818a05b9935 100644 --- a/forge-gui/src/main/java/forge/gui/framework/SRearrangingUtil.java +++ b/forge-gui/src/main/java/forge/gui/framework/SRearrangingUtil.java @@ -1,11 +1,13 @@ package forge.gui.framework; +import forge.gui.MouseUtil; import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin.SkinCursor; import forge.gui.toolbox.FSkin.SkinnedLayeredPane; import forge.view.FView; import javax.swing.*; + import java.awt.*; import java.awt.event.*; import java.util.ArrayList; @@ -188,7 +190,7 @@ public final class SRearrangingUtil { } else if (cellTarget.equals(cellSrc)) { dropzone = Dropzone.NONE; - pnlDocument.setCursor(Cursor.getDefaultCursor()); + MouseUtil.resetCursor(); pnlPreview.setBounds(0, 0, 0, 0); } else { @@ -210,7 +212,7 @@ public final class SRearrangingUtil { */ private static void endRearrange() { // Resize preview panel in preparation for next event. - pnlDocument.setCursor(Cursor.getDefaultCursor()); + MouseUtil.resetCursor(); pnlPreview.setVisible(false); pnlPreview.setBounds(0, 0, 0, 0); diff --git a/forge-gui/src/main/java/forge/gui/framework/SResizingUtil.java b/forge-gui/src/main/java/forge/gui/framework/SResizingUtil.java index 7f866ba7b74..3bb1eee2c5b 100644 --- a/forge-gui/src/main/java/forge/gui/framework/SResizingUtil.java +++ b/forge-gui/src/main/java/forge/gui/framework/SResizingUtil.java @@ -1,6 +1,7 @@ package forge.gui.framework; import forge.gui.FNetOverlay; +import forge.gui.MouseUtil; import forge.gui.toolbox.FAbsolutePositioner; import forge.gui.toolbox.FOverlay; import forge.view.FDialog; @@ -9,6 +10,7 @@ import forge.view.FNavigationBar; import forge.view.FView; import javax.swing.*; + import java.awt.*; import java.awt.event.*; import java.util.*; @@ -39,12 +41,12 @@ public final class SResizingUtil { private static final MouseListener MAD_RESIZE_X = new MouseAdapter() { @Override public void mouseEntered(final MouseEvent e) { - FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR)); + MouseUtil.setCursor(Cursor.E_RESIZE_CURSOR); } @Override public void mouseExited(final MouseEvent e) { - FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + MouseUtil.resetCursor(); } @Override @@ -61,12 +63,12 @@ public final class SResizingUtil { private static final MouseListener MAD_RESIZE_Y = new MouseAdapter() { @Override public void mouseEntered(final MouseEvent e) { - FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR)); + MouseUtil.setCursor(Cursor.N_RESIZE_CURSOR); } @Override public void mouseExited(final MouseEvent e) { - FView.SINGLETON_INSTANCE.getLpnDocument().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + MouseUtil.resetCursor(); } @Override @@ -252,6 +254,8 @@ public final class SResizingUtil { /** @param e   {@link java.awt.event.MouseEvent} */ public static void startResizeX(final MouseEvent e) { + MouseUtil.lockCursor(); //lock cursor while resizing + evtX = (int) e.getLocationOnScreen().getX(); LEFT_PANELS.clear(); RIGHT_PANELS.clear(); @@ -317,6 +321,8 @@ public final class SResizingUtil { /** @param e   {@link java.awt.event.MouseEvent} */ public static void startResizeY(final MouseEvent e) { + MouseUtil.lockCursor(); //lock cursor while resizing + evtY = (int) e.getLocationOnScreen().getY(); TOP_PANELS.clear(); BOTTOM_PANELS.clear(); @@ -380,6 +386,7 @@ public final class SResizingUtil { /** */ public static void endResize() { + MouseUtil.unlockCursor(); SLayoutIO.saveLayout(null); } diff --git a/forge-gui/src/main/java/forge/gui/match/GameLogPanel.java b/forge-gui/src/main/java/forge/gui/match/GameLogPanel.java index c68faa25fb0..60752c9d30d 100644 --- a/forge-gui/src/main/java/forge/gui/match/GameLogPanel.java +++ b/forge-gui/src/main/java/forge/gui/match/GameLogPanel.java @@ -1,7 +1,6 @@ package forge.gui.match; import forge.gui.MouseUtil; -import forge.gui.MouseUtil.MouseCursor; import forge.gui.toolbox.FScrollPane; import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin.SkinFont; @@ -204,11 +203,11 @@ public class GameLogPanel extends JPanel { switch (e.getID()) { case MouseEvent.MOUSE_ENTERED: if (isScrollBarRequired && isHoveringOverLogEntry) { - MouseUtil.setMouseCursor(MouseCursor.HAND_CURSOR); + MouseUtil.setCursor(Cursor.HAND_CURSOR); } break; case MouseEvent.MOUSE_EXITED: - MouseUtil.setMouseCursor(MouseCursor.DEFAULT_CURSOR); + MouseUtil.resetCursor(); break; case MouseEvent.MOUSE_RELEASED: if (e.getButton() == 1 && isHoveringOverLogEntry) { @@ -217,9 +216,6 @@ public class GameLogPanel extends JPanel { } break; } - } - } - } diff --git a/forge-gui/src/main/java/forge/gui/menus/LayoutMenu.java b/forge-gui/src/main/java/forge/gui/menus/LayoutMenu.java index b8ce63c8b29..8d760418b1e 100644 --- a/forge-gui/src/main/java/forge/gui/menus/LayoutMenu.java +++ b/forge-gui/src/main/java/forge/gui/menus/LayoutMenu.java @@ -3,7 +3,6 @@ package forge.gui.menus; import forge.Singletons; import forge.gui.GuiChoose; import forge.gui.MouseUtil; -import forge.gui.MouseUtil.MouseCursor; import forge.gui.framework.FScreen; import forge.gui.match.controllers.CDock; import forge.gui.toolbox.FSkin; @@ -88,9 +87,9 @@ public final class LayoutMenu { private static final ActionListener changeSkin = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - MouseUtil.setMouseCursor(MouseCursor.WAIT_CURSOR); + MouseUtil.setCursor(Cursor.WAIT_CURSOR); FSkin.changeSkin(e.getActionCommand()); - MouseUtil.setMouseCursor(MouseCursor.DEFAULT_CURSOR); + MouseUtil.resetCursor(); } }; diff --git a/forge-gui/src/main/java/forge/gui/toolbox/FTextField.java b/forge-gui/src/main/java/forge/gui/toolbox/FTextField.java index d5158b929b1..6cf6cd25509 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/FTextField.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/FTextField.java @@ -73,7 +73,7 @@ public class FTextField extends SkinnedTextField { this.setToolTipText(builder.toolTip); this.setFocusable(true); if (this.isEditable()) { - MouseUtil.setComponentCursor(this, Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR)); + MouseUtil.setComponentCursor(this, Cursor.TEXT_CURSOR); } addFocusListener(new FocusAdapter() { diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemListView.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemListView.java index aa05cd0c117..2dece6aeb07 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemListView.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemListView.java @@ -550,7 +550,7 @@ public final class ItemListView extends ItemView { @Override public void onMouseExit(MouseEvent e) { - MouseUtil.setCursor(Cursor.getDefaultCursor()); + MouseUtil.resetCursor(); } };