You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by rw...@apache.org on 2020/05/11 21:57:06 UTC

svn commit: r1877611 - in /pivot/trunk/wtk/src/org/apache/pivot/wtk: Cursor.java Mouse.java

Author: rwhitcomb
Date: Mon May 11 21:57:06 2020
New Revision: 1877611

URL: http://svn.apache.org/viewvc?rev=1877611&view=rev
Log:
Do a better job encapsulating the correspondence between our
Cursor values and the AWT equivalents by moving the code into
the Cursor enum itself.


Modified:
    pivot/trunk/wtk/src/org/apache/pivot/wtk/Cursor.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/Mouse.java

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Cursor.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Cursor.java?rev=1877611&r1=1877610&r2=1877611&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Cursor.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Cursor.java Mon May 11 21:57:06 2020
@@ -16,22 +16,59 @@
  */
 package org.apache.pivot.wtk;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
- * Enumeration defining the supported mouse cursor types.
+ * Enumeration defining the supported mouse cursor types, and
+ * providing a mapping to the underlying {@link java.awt.Cursor} values.
  */
 public enum Cursor {
-    DEFAULT,
-    HAND,
-    TEXT,
-    WAIT,
-    CROSSHAIR,
-    MOVE,
-    RESIZE_NORTH,
-    RESIZE_SOUTH,
-    RESIZE_EAST,
-    RESIZE_WEST,
-    RESIZE_NORTH_EAST,
-    RESIZE_NORTH_WEST,
-    RESIZE_SOUTH_EAST,
-    RESIZE_SOUTH_WEST
+    DEFAULT(java.awt.Cursor.DEFAULT_CURSOR),
+    HAND(java.awt.Cursor.HAND_CURSOR),
+    TEXT(java.awt.Cursor.TEXT_CURSOR),
+    WAIT(java.awt.Cursor.WAIT_CURSOR),
+    CROSSHAIR(java.awt.Cursor.CROSSHAIR_CURSOR),
+    MOVE(java.awt.Cursor.MOVE_CURSOR),
+    RESIZE_NORTH(java.awt.Cursor.N_RESIZE_CURSOR),
+    RESIZE_SOUTH(java.awt.Cursor.S_RESIZE_CURSOR),
+    RESIZE_EAST(java.awt.Cursor.E_RESIZE_CURSOR),
+    RESIZE_WEST(java.awt.Cursor.W_RESIZE_CURSOR),
+    RESIZE_NORTH_EAST(java.awt.Cursor.NE_RESIZE_CURSOR),
+    RESIZE_NORTH_WEST(java.awt.Cursor.NW_RESIZE_CURSOR),
+    RESIZE_SOUTH_EAST(java.awt.Cursor.SE_RESIZE_CURSOR),
+    RESIZE_SOUTH_WEST(java.awt.Cursor.SW_RESIZE_CURSOR);
+
+    private int cursorID;
+
+    /** Facilitate lookup of one of our values given the AWT equivalent. */
+    private static class Lookup {
+        /** Correspondence from the AWT cursor ID to our own. */
+        private static Map<Integer, Cursor> map = new HashMap<>();
+    }
+
+    Cursor(final int id) {
+        this.cursorID = id;
+        Lookup.map.put(id, this);
+    }
+
+    /**
+     * @return A {@link java.awt.Cursor} object corresponding to this {@code Cursor}.
+     */
+    public java.awt.Cursor getAWTCursor() {
+        return new java.awt.Cursor(cursorID);
+    }
+
+    /**
+     * @return One of our {@code Cursor} values given the {@link java.awt.Cursor} ID value.
+     * @param cursorID One of the {@link java.awt.Cursor} ID values to lookup.
+     */
+    public static Cursor getCursor(final int cursorID) {
+        Cursor cursor = Lookup.map.get(cursorID);
+        if (cursor != null) {
+            return cursor;
+        }
+        throw new IllegalArgumentException("Unknown mouse cursor type " + cursorID);
+
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Mouse.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Mouse.java?rev=1877611&r1=1877610&r2=1877611&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Mouse.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Mouse.java Mon May 11 21:57:06 2020
@@ -25,7 +25,7 @@ import org.apache.pivot.util.Utils;
  */
 public final class Mouse {
     /**
-     * Private constructor for utility class.
+     * Private constructor since this is a utility class (all static methods).
      */
     private Mouse() {
     }
@@ -156,74 +156,10 @@ public final class Mouse {
             throw new IllegalStateException("Mouse is not currently captured.");
         }
 
-        Cursor cursor = null;
-
         Display display = capturer.getDisplay();
         ApplicationContext.DisplayHost displayHost = display.getDisplayHost();
 
-        int cursorID = displayHost.getCursor().getType();
-        switch (cursorID) {
-            case java.awt.Cursor.DEFAULT_CURSOR:
-                cursor = Cursor.DEFAULT;
-                break;
-
-            case java.awt.Cursor.HAND_CURSOR:
-                cursor = Cursor.HAND;
-                break;
-
-            case java.awt.Cursor.TEXT_CURSOR:
-                cursor = Cursor.TEXT;
-                break;
-
-            case java.awt.Cursor.WAIT_CURSOR:
-                cursor = Cursor.WAIT;
-                break;
-
-            case java.awt.Cursor.CROSSHAIR_CURSOR:
-                cursor = Cursor.CROSSHAIR;
-                break;
-
-            case java.awt.Cursor.MOVE_CURSOR:
-                cursor = Cursor.MOVE;
-                break;
-
-            case java.awt.Cursor.N_RESIZE_CURSOR:
-                cursor = Cursor.RESIZE_NORTH;
-                break;
-
-            case java.awt.Cursor.S_RESIZE_CURSOR:
-                cursor = Cursor.RESIZE_SOUTH;
-                break;
-
-            case java.awt.Cursor.E_RESIZE_CURSOR:
-                cursor = Cursor.RESIZE_EAST;
-                break;
-
-            case java.awt.Cursor.W_RESIZE_CURSOR:
-                cursor = Cursor.RESIZE_WEST;
-                break;
-
-            case java.awt.Cursor.NE_RESIZE_CURSOR:
-                cursor = Cursor.RESIZE_NORTH_EAST;
-                break;
-
-            case java.awt.Cursor.SW_RESIZE_CURSOR:
-                cursor = Cursor.RESIZE_SOUTH_WEST;
-                break;
-
-            case java.awt.Cursor.NW_RESIZE_CURSOR:
-                cursor = Cursor.RESIZE_NORTH_WEST;
-                break;
-
-            case java.awt.Cursor.SE_RESIZE_CURSOR:
-                cursor = Cursor.RESIZE_SOUTH_EAST;
-                break;
-
-            default:
-                throw new IllegalArgumentException("Unknown mouse cursor type " + cursorID);
-        }
-
-        return cursor;
+        return Cursor.getCursor(displayHost.getCursor().getType());
     }
 
     /**
@@ -242,7 +178,7 @@ public final class Mouse {
 
         Display display = capturer.getDisplay();
         ApplicationContext.DisplayHost displayHost = display.getDisplayHost();
-        displayHost.setCursor(getCursor(cursor));
+        displayHost.setCursor(cursor.getAWTCursor());
     }
 
     /**
@@ -277,74 +213,7 @@ public final class Mouse {
             Display display = componentOrParent.getDisplay();
             ApplicationContext.DisplayHost displayHost = display.getDisplayHost();
             displayHost.setCursor((cursor == null) ? java.awt.Cursor.getDefaultCursor()
-                : getCursor(cursor));
+                : cursor.getAWTCursor());
         }
     }
-
-    private static java.awt.Cursor getCursor(final Cursor cursor) {
-        int cursorID = -1;
-
-        switch (cursor) {
-            case DEFAULT:
-                cursorID = java.awt.Cursor.DEFAULT_CURSOR;
-                break;
-
-            case HAND:
-                cursorID = java.awt.Cursor.HAND_CURSOR;
-                break;
-
-            case TEXT:
-                cursorID = java.awt.Cursor.TEXT_CURSOR;
-                break;
-
-            case WAIT:
-                cursorID = java.awt.Cursor.WAIT_CURSOR;
-                break;
-
-            case CROSSHAIR:
-                cursorID = java.awt.Cursor.CROSSHAIR_CURSOR;
-                break;
-
-            case MOVE:
-                cursorID = java.awt.Cursor.MOVE_CURSOR;
-                break;
-
-            case RESIZE_NORTH:
-                cursorID = java.awt.Cursor.N_RESIZE_CURSOR;
-                break;
-
-            case RESIZE_SOUTH:
-                cursorID = java.awt.Cursor.S_RESIZE_CURSOR;
-                break;
-
-            case RESIZE_EAST:
-                cursorID = java.awt.Cursor.E_RESIZE_CURSOR;
-                break;
-
-            case RESIZE_WEST:
-                cursorID = java.awt.Cursor.W_RESIZE_CURSOR;
-                break;
-
-            case RESIZE_NORTH_EAST:
-                cursorID = java.awt.Cursor.NE_RESIZE_CURSOR;
-                break;
-
-            case RESIZE_SOUTH_WEST:
-                cursorID = java.awt.Cursor.SW_RESIZE_CURSOR;
-                break;
-
-            case RESIZE_NORTH_WEST:
-                cursorID = java.awt.Cursor.NW_RESIZE_CURSOR;
-                break;
-
-            case RESIZE_SOUTH_EAST:
-                cursorID = java.awt.Cursor.SE_RESIZE_CURSOR;
-                break;
-
-            default:
-                throw new IllegalArgumentException("Unknown mouse cursor type " + cursor.toString());
-        }
-
-        return new java.awt.Cursor(cursorID);
-    }
 }