reconciled with develop
[jalview.git] / src / jalview / util / ShortcutKeyMaskExWrapper.java
1 package jalview.util;
2
3 import java.awt.Toolkit;
4 import java.awt.event.MouseEvent;
5
6 /**
7  * retrieve KeyEvent masks for Java 8 or Java 11+
8  * 
9  * @author hansonr
10  *
11  */
12 public class ShortcutKeyMaskExWrapper
13 {
14   public static final int SHIFT_DOWN_MASK;
15
16   public static final int ALT_DOWN_MASK;
17
18   public static final int SHORTCUT_MASK;
19
20   static
21   {
22     float specversion = 1.8f;
23     try
24     {
25       specversion = Float
26               .parseFloat(System.getProperty("java.specification.version"));
27     } catch (Exception e)
28     {
29       System.out.println("Shortcut exception: " + e);
30     }
31
32     String method;
33     // BH technically, these are not masks; they are bits.
34     if (specversion >= 11)
35     {
36       SHIFT_DOWN_MASK = 0x040; // KeyEvent.SHIFT_DOWN_MASK;
37       ALT_DOWN_MASK = 0x200; // KeyEvent.ALT_DOWN_MASK;
38       method = "getMenuShortcutKeyMaskEx";
39     }
40     else
41     {
42       SHIFT_DOWN_MASK = 0x01; // KeyEvent.SHIFT_MASK;
43       ALT_DOWN_MASK = 0x08; // KeyEvent.ALT_MASK;
44       method = "getMenuShortcutKeyMask";
45     }
46
47     int mask = 0;
48     try
49     {
50       // Just use reflection -- doesn't matter what version is running.
51       Toolkit tk = Toolkit.getDefaultToolkit();
52       mask = (int) (tk.getClass().getMethod(method, new Class<?>[0])
53               .invoke(tk, new Object[0]));
54     } catch (Exception e)
55     {
56       System.out.println("Shortcut exception: " + e);
57     }
58
59     SHORTCUT_MASK = mask;
60   }
61
62   // BH Q: Why not just use the public static field?
63   public static int getMenuShortcutKeyMaskEx()
64   {
65     return SHORTCUT_MASK;
66   }
67
68   // BH Q: Why is this here?
69   public static int getModifiersEx(MouseEvent e)
70   {
71     return e.getModifiersEx();
72   }
73
74 }