X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FPlatform.java;h=c871da4d5d437a02576e4b55c94b2c299fd8d649;hb=9d7316efcfac7293b15a490f52860d3f726d64e9;hp=49dc7ff1f082fddbb51a1dc28f6fc840e3eda21c;hpb=a703cb429a2f2b417b9850ce3a8fd6f271d182d3;p=jalview.git diff --git a/src/jalview/util/Platform.java b/src/jalview/util/Platform.java index 49dc7ff..c871da4 100644 --- a/src/jalview/util/Platform.java +++ b/src/jalview/util/Platform.java @@ -20,7 +20,6 @@ */ package jalview.util; -import java.awt.Toolkit; import java.awt.event.MouseEvent; /** @@ -30,7 +29,7 @@ import java.awt.event.MouseEvent; */ public class Platform { - private static Boolean isAMac = null; + private static Boolean isAMac = null, isWindows = null; private static Boolean isHeadless = null; @@ -45,10 +44,29 @@ public class Platform { isAMac = System.getProperty("os.name").indexOf("Mac") > -1; } + return isAMac.booleanValue(); } + /** + * Check if we are on a Microsoft plaform... + * + * @return true if we have to cope with another platform variation + */ + public static boolean isWindows() + { + if (isWindows == null) + { + isWindows = System.getProperty("os.name").indexOf("Win") > -1; + } + return isWindows.booleanValue(); + } + + /** + * + * @return true if we are running in non-interactive no UI mode + */ public static boolean isHeadless() { if (isHeadless == null) @@ -69,23 +87,15 @@ public class Platform } /** - * escape a string according to the local platform's escape character + * Answers the input with every backslash replaced with a double backslash (an + * 'escaped' single backslash) * - * @param file - * @return escaped file + * @param s + * @return */ - public static String escapeString(String file) + public static String escapeBackslashes(String s) { - StringBuffer f = new StringBuffer(); - int p = 0, lastp = 0; - while ((p = file.indexOf('\\', lastp)) > -1) - { - f.append(file.subSequence(lastp, p)); - f.append("\\\\"); - lastp = p + 1; - } - f.append(file.substring(lastp)); - return f.toString(); + return s == null ? null : s.replace("\\", "\\\\"); } /** @@ -121,10 +131,34 @@ public class Platform { return false; } - return (Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() & e - .getModifiers()) != 0; - // could we use e.isMetaDown() here? + return (jalview.util.ShortcutKeyMaskExWrapper + .getMenuShortcutKeyMaskEx() // .getMenuShortcutKeyMaskEx() + & jalview.util.ShortcutKeyMaskExWrapper + .getModifiersEx(e)) != 0; // getModifiers()) != 0; } return e.isControlDown(); } + + /** + * A (case sensitive) file path comparator that ignores the difference between + * / and \ + * + * @param path1 + * @param path2 + * @return + */ + public static boolean pathEquals(String path1, String path2) + { + if (path1 == null) + { + return path2 == null; + } + if (path2 == null) + { + return false; + } + String p1 = path1.replace('\\', '/'); + String p2 = path2.replace('\\', '/'); + return p1.equals(p2); + } }