Lock resize cursors when resizing dock panes

This commit is contained in:
drdev
2014-02-12 06:50:16 +00:00
parent 73e835df10
commit f94fcfc997
8 changed files with 34 additions and 44 deletions

View File

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

View File

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

View File

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

View File

@@ -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 &emsp; {@link java.awt.event.MouseEvent} */ /** @param e &emsp; {@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 &emsp; {@link java.awt.event.MouseEvent} */ /** @param e &emsp; {@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);
} }

View File

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

View File

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

View File

@@ -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() {

View File

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