temp push
[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 = Platform.getJavaVersion();
23     String method;
24     // BH technically, these are not masks; they are bits.
25     if (specversion >= 11)
26     {
27       SHIFT_DOWN_MASK = 0x040; // KeyEvent.SHIFT_DOWN_MASK;
28       ALT_DOWN_MASK = 0x200; // KeyEvent.ALT_DOWN_MASK;
29       method = "getMenuShortcutKeyMaskEx";
30     }
31     else
32     {
33       SHIFT_DOWN_MASK = 0x01; // KeyEvent.SHIFT_MASK;
34       ALT_DOWN_MASK = 0x08; // KeyEvent.ALT_MASK;
35       method = "getMenuShortcutKeyMask";
36     }
37
38     int mask = 0;
39     try
40     {
41       // Just use reflection -- doesn't matter what version is running.
42       Toolkit tk = Toolkit.getDefaultToolkit();
43       mask = (int) (tk.getClass().getMethod(method, new Class<?>[0])
44               .invoke(tk, new Object[0]));
45     } catch (Exception e)
46     {
47       System.out.println("Shortcut exception: " + e);
48     }
49
50     SHORTCUT_MASK = mask;
51   }
52
53   // BH Q: Why not just use the public static field?
54   public static int getMenuShortcutKeyMaskEx()
55   {
56     return SHORTCUT_MASK;
57   }
58
59   // BH Q: Why is this here?
60   public static int getModifiersEx(MouseEvent e)
61   {
62     return e.getModifiersEx();
63   }
64
65 }