2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import java.awt.Toolkit;
24 import java.awt.event.InputEvent;
25 import java.awt.event.MouseEvent;
27 import javax.swing.SwingUtilities;
30 * System platform information used by Applet and Application
37 private static Boolean isNoJSMac = null, isNoJSWindows = null;
39 private static Boolean isHeadless = null;
42 * sorry folks - Macs really are different
44 * BH: disabled for SwingJS -- will need to check key-press issues
46 * @return true if we do things in a special way.
48 public static boolean isAMacAndNotJS()
50 if (isNoJSMac == null)
52 isNoJSMac = /** @j2sNative false && */
53 System.getProperty("os.name").indexOf("Mac") > -1;
56 return isNoJSMac.booleanValue();
61 * Check if we are on a Microsoft plaform...
63 * @return true if we have to cope with another platform variation
65 public static boolean isWindowsAndNotJS()
67 if (isNoJSWindows == null)
69 isNoJSWindows = /** @j2sNative false && */
70 System.getProperty("os.name").indexOf("Win") > -1;
72 return isNoJSWindows.booleanValue();
78 // * @return true if this is a Mac
80 // private static boolean isAMac()
82 // if (isAMac == null)
84 // isAMac = System.getProperty("os.name").indexOf("Mac") > -1;
87 // return isAMac.booleanValue();
92 // * Check if we are on a Microsoft plaform...
94 // * @return true if we have to cope with another platform variation
96 // private static boolean isWindows()
98 // if (isWindows == null)
100 // isWindows = System.getProperty("os.name").indexOf("Win") > -1;
102 // return isWindows.booleanValue();
108 * @return true if we are running in non-interactive no UI mode
110 public static boolean isHeadless()
112 if (isHeadless == null)
114 isHeadless = "true".equals(System.getProperty("java.awt.headless"));
121 * @return nominal maximum command line length for this platform
123 public static int getMaxCommandLineLength()
125 // TODO: determine nominal limits for most platforms.
126 return 2046; // this is the max length for a windows NT system.
130 * escape a string according to the local platform's escape character
133 * @return escaped file
135 public static String escapeString(String file)
137 StringBuffer f = new StringBuffer();
138 int p = 0, lastp = 0;
139 while ((p = file.indexOf('\\', lastp)) > -1)
141 f.append(file.subSequence(lastp, p));
145 f.append(file.substring(lastp));
150 * Answers true if the mouse event has Meta-down (Command key on Mac) or
151 * Ctrl-down (on other o/s). Note this answers _false_ if the Ctrl key is
152 * pressed instead of the Meta/Cmd key on Mac. To test for Ctrl-pressed on Mac,
153 * you can use e.isPopupTrigger().
158 public static boolean isControlDown(MouseEvent e)
160 boolean aMac = isAMacAndNotJS();
161 return isControlDown(e, aMac);
165 * Overloaded version of method (to allow unit testing)
171 protected static boolean isControlDown(MouseEvent e, boolean aMac)
176 * answer false for right mouse button
178 if (e.isPopupTrigger())
182 return (Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()
183 & e.getModifiers()) != 0;
184 // could we use e.isMetaDown() here?
186 return e.isControlDown();
189 public static boolean isWinRightButton(MouseEvent e)
191 return !isAMacAndNotJS() && SwingUtilities.isRightMouseButton(e);
194 public static boolean isWinMiddleButton(MouseEvent e)
196 return !isAMacAndNotJS() && SwingUtilities.isMiddleMouseButton(e);