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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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