mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +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;
|
||||
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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<DeckType> {
|
||||
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();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -550,7 +550,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
|
||||
@Override
|
||||
public void onMouseExit(MouseEvent e) {
|
||||
MouseUtil.setCursor(Cursor.getDefaultCursor());
|
||||
MouseUtil.resetCursor();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user