temp push
[jalview.git] / src / jalview / util / ShortcutKeyMaskExWrapper.java
index c83da4e..93ce13e 100644 (file)
@@ -1,49 +1,65 @@
 package jalview.util;
 
+import java.awt.Toolkit;
 import java.awt.event.MouseEvent;
 
+/**
+ * retrieve KeyEvent masks for Java 8 or Java 11+
+ * 
+ * @author hansonr
+ *
+ */
 public class ShortcutKeyMaskExWrapper
 {
-
-  private static final Float specversion;
-
-  private static final float modern;
-
   public static final int SHIFT_DOWN_MASK;
 
   public static final int ALT_DOWN_MASK;
 
-  private static final ShortcutKeyMaskExWrapperI wrapper;
+  public static final int SHORTCUT_MASK;
 
   static
   {
-    specversion = Platform.isJS() ? Float.valueOf(8)
-            : Float.parseFloat(
-                    System.getProperty("java.specification.version"));
-    modern = 11;
-
-    if (specversion >= modern)
+    float specversion = Platform.getJavaVersion();
+    String method;
+    // BH technically, these are not masks; they are bits.
+    if (specversion >= 11)
     {
-      wrapper = new jalview.util.ShortcutKeyMaskExWrapper11();
-      SHIFT_DOWN_MASK = jalview.util.ShortcutKeyMaskExWrapper11.SHIFT_DOWN_MASK;
-      ALT_DOWN_MASK = jalview.util.ShortcutKeyMaskExWrapper11.ALT_DOWN_MASK;
+      SHIFT_DOWN_MASK = 0x040; // KeyEvent.SHIFT_DOWN_MASK;
+      ALT_DOWN_MASK = 0x200; // KeyEvent.ALT_DOWN_MASK;
+      method = "getMenuShortcutKeyMaskEx";
     }
     else
     {
-      wrapper = new jalview.util.ShortcutKeyMaskExWrapper8();
-      SHIFT_DOWN_MASK = jalview.util.ShortcutKeyMaskExWrapper8.SHIFT_DOWN_MASK;
-      ALT_DOWN_MASK = jalview.util.ShortcutKeyMaskExWrapper8.ALT_DOWN_MASK;
+      SHIFT_DOWN_MASK = 0x01; // KeyEvent.SHIFT_MASK;
+      ALT_DOWN_MASK = 0x08; // KeyEvent.ALT_MASK;
+      method = "getMenuShortcutKeyMask";
     }
+
+    int mask = 0;
+    try
+    {
+      // Just use reflection -- doesn't matter what version is running.
+      Toolkit tk = Toolkit.getDefaultToolkit();
+      mask = (int) (tk.getClass().getMethod(method, new Class<?>[0])
+              .invoke(tk, new Object[0]));
+    } catch (Exception e)
+    {
+      System.out.println("Shortcut exception: " + e);
+    }
+
+    SHORTCUT_MASK = mask;
   }
 
+  // BH Q: Why not just use the public static field?
   public static int getMenuShortcutKeyMaskEx()
   {
-    return wrapper.getMenuShortcutKeyMaskEx();
+    return SHORTCUT_MASK;
   }
 
+  // BH Q: Why is this here?
   public static int getModifiersEx(MouseEvent e)
   {
-    return wrapper.getModifiersEx(e);
+    return e.getModifiersEx();
   }
 
 }