JAL-3210 Barebones gradle/buildship/eclipse. See README
[jalview.git] / src / jalview / util / Platform.java
index 9b57a5a..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)
@@ -332,9 +326,7 @@ public class Platform
 
   public static byte[] getFileBytes(File f)
   {
-    // TODO temporary doubling of 秘bytes and _bytes;
-    // just remove _bytes when new transpiler has been installed
-    return /** @j2sNative f && (f.秘bytes || f._bytes) || */
+    return /** @j2sNative f && f._bytes || */
     null;
   }
 
@@ -372,10 +364,8 @@ public class Platform
     }
     @SuppressWarnings("unused")
     byte[] bytes = getFileAsBytes(urlstring);
-    // TODO temporary doubling of 秘bytes and _bytes;
-    // just remove _bytes when new transpiler has been installed
     /**
-     * @j2sNative f.秘bytes = f._bytes = bytes;
+     * @j2sNative f._bytes = bytes;
      */
     return true;
   }
@@ -410,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;
     }
     /**
@@ -431,7 +420,7 @@ public class Platform
     @SuppressWarnings("unused")
     ThreadGroup g = Thread.currentThread().getThreadGroup();
     /**
-     * @j2sNative return g.秘html5Applet._uniqueId;
+     * @j2sNative return g.html5Applet._uniqueId;
      *
      */
     return null;
@@ -457,13 +446,13 @@ public class Platform
     String id = getUniqueAppletID();
     String key = "", value = "";
     /**
-     * @j2sNative var info = g.秘html5Applet.__Info || {}; for (var key in info)
-     *            { if (key.indexOf(prefix) == 0) { value = "" + info[key];
+     * @j2sNative var info = g.html5Applet.__Info || {}; for (var key in info) {
+     *            if (key.indexOf(prefix) == 0) { value = "" + info[key];
      */
 
     System.out.println(
             "Platform id=" + id + " reading Info." + key + " = " + value);
-    p.put(key, value);
+    p.put(id + "_" + key, value);
 
     /**
      * @j2sNative
@@ -617,44 +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
-    {
-      if (isJS())
-      {
-        @SuppressWarnings("unused")
-        Object g = Thread.currentThread().getThreadGroup();
-        return new URL(/**
-                        * @j2sNative g.秘html5Applet._appletPanel.appletDocumentBase
-                        *            ||
-                        */
-                "");
-      }
-    } catch (MalformedURLException e)
+    if (path1 == null)
     {
+      return path2 == null;
     }
-    return null;
-  }
-
-  public static URL getCodeBase()
-  {
-    try
-    {
-      if (isJS())
-      {
-        @SuppressWarnings("unused")
-        Object g = Thread.currentThread().getThreadGroup();
-        return new URL(/**
-                        * @j2sNative g.秘html5Applet._appletPanel.appletCodeBase
-                        *            ||
-                        */
-                "");
-      }
-    } catch (MalformedURLException e)
+    if (path2 == null)
     {
+      return false;
     }
-    return null;
+    String p1 = path1.replace('\\', '/');
+    String p2 = path2.replace('\\', '/');
+    return p1.equals(p2);
   }
-
 }