JAL-3210 Barebones gradle/buildship/eclipse. See README
[jalview.git] / src / jalview / util / Platform.java
index 96940e5..bf0dfcd 100644 (file)
@@ -32,7 +32,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Properties;
 
@@ -55,7 +54,7 @@ public class Platform
   private static Boolean isNoJSMac = null, isNoJSWin = null, isMac = null,
           isWin = null;
 
-  // private static Boolean isHeadless = null;
+  private static Boolean isHeadless = null;
 
   /**
    * added to group mouse events into Windows and nonWindows (mac, unix, linux)
@@ -112,18 +111,18 @@ public class Platform
     return (isNoJSWin == null ? (isNoJSWin = !isJS && isWin()) : isNoJSWin);
   }
 
-  // /**
-  // *
-  // * @return true if we are running in non-interactive no UI mode
-  // */
-  // public static boolean isHeadless()
-  // {
-  // if (isHeadless == null)
-  // {
-  // isHeadless = "true".equals(System.getProperty("java.awt.headless"));
-  // }
-  // return isHeadless;
-  // }
+  /**
+   * 
+   * @return true if we are running in non-interactive no UI mode
+   */
+  public static boolean isHeadless()
+  {
+    if (isHeadless == null)
+    {
+      isHeadless = "true".equals(System.getProperty("java.awt.headless"));
+    }
+    return isHeadless;
+  }
 
   /**
    * 
@@ -136,23 +135,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("\\", "\\\\");
   }
 
   /**
@@ -178,17 +169,20 @@ public class Platform
    */
   protected static boolean isControlDown(MouseEvent e, boolean aMac)
   {
-    if (!aMac)
-    {
-      return e.isControlDown();
-    }
-    // answer false for right mouse button
-    // shortcut key will be META for a Mac
-    return !e.isPopupTrigger()
-            && (Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()
-                    & e.getModifiers()) != 0;
-    // could we use e.isMetaDown() here?
-  }
+           if (aMac)
+           {
+             /*
+              * answer false for right mouse button
+              */
+             if (e.isPopupTrigger())
+             {
+               return false;
+             }
+             return (jalview.util.ShortcutKeyMaskExWrapper.getMenuShortcutKeyMaskEx() // .getMenuShortcutKeyMaskEx()
+                     & e.getModifiersEx()) != 0; // getModifiers()) != 0;
+           }
+           return e.isControlDown();
+         }
 
   // BH: I don't know about that previous method. Here is what SwingJS uses.
   // Notice the distinction in mouse events. (BUTTON3_MASK == META)
@@ -406,11 +400,10 @@ public class Platform
    * @param url
    * @return true if window has been opened
    */
-  public static boolean openURL(String url) throws IOException
+  public static boolean openURL(String url)
   {
     if (!isJS())
     {
-      BrowserLauncher.openURL(url);
       return false;
     }
     /**
@@ -459,7 +452,7 @@ public class Platform
 
     System.out.println(
             "Platform id=" + id + " reading Info." + key + " = " + value);
-    p.put(key, value);
+    p.put(id + "_" + key, value);
 
     /**
      * @j2sNative
@@ -613,34 +606,26 @@ public class Platform
 
   }
 
-  public static URL getDocumentBase()
+  /**
+   * 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)
   {
-    try
-    {
-      return (isJS() ? new URL(/**
-                                * @j2sNative J2S.thisApplet._applet.appletViewer.appletDocumentBase
-                                *            ||
-                                */
-              "") : null);
-    } catch (MalformedURLException e)
+    if (path1 == null)
     {
-      return null;
+      return path2 == null;
     }
-  }
-
-  public static URL getCodeBase()
-  {
-    try
-    {
-      return (isJS() ? new URL(/**
-                                * @j2sNative J2S.thisApplet._applet.appletViewer.appletCodeBase
-                                *            ||
-                                */
-              "") : null);
-    } catch (MalformedURLException e)
+    if (path2 == null)
     {
-      return null;
+      return false;
     }
+    String p1 = path1.replace('\\', '/');
+    String p2 = path2.replace('\\', '/');
+    return p1.equals(p2);
   }
-
 }