}
/**
- * 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("\\", "\\\\");
}
/**
if (!aMac)
{
return e.isControlDown();
+
+ // Jalview 2.11 code below: above is as amended for JalviewJS
+ // /*
+ // * answer false for right mouse button
+ // */
+ // if (e.isPopupTrigger())
+ // {
+ // return false;
+ // }
+ // return
+ // (jalview.util.ShortcutKeyMaskExWrapper.getMenuShortcutKeyMaskEx() //
+ // .getMenuShortcutKeyMaskEx()
+ // & jalview.util.ShortcutKeyMaskExWrapper
+ // .getModifiersEx(e)) != 0; // getModifiers()) != 0;
}
// answer false for right mouse button
// shortcut key will be META for a Mac
}
}
- public static void cacheFileData(String path, byte[] data)
+ public static void cacheFileData(String path, Object data)
{
- if (!isJS())
+ if (!isJS() || data == null)
{
return;
}
*/
}
+ public static void cacheFileData(File file)
+ {
+ byte[] data;
+ if (!isJS() || (data = Platform.getFileBytes(file)) == null)
+ {
+ return;
+ }
+ cacheFileData(file.toString(), data);
+ }
+
public static byte[] getFileBytes(File f)
{
- return /** @j2sNative f && f._bytes || */
+ return /** @j2sNative f && swingjs.JSUtil.getFileBytes$java_io_File(f) || */
null;
}
public static byte[] getFileAsBytes(String fileStr)
{
+ byte[] bytes = null;
// BH 2018 hack for no support for access-origin
- return /** @j2sNative swingjs.JSUtil.getFileAsBytes$O(fileStr) || */
- null;
+ /**
+ * @j2sNative bytes = swingjs.JSUtil.getFileAsBytes$O(fileStr)
+ */
+ cacheFileData(fileStr, bytes);
+ return bytes;
}
- public static String getFileAsString(String data)
+ @SuppressWarnings("unused")
+ public static String getFileAsString(String url)
{
- return /** @j2sNative swingjs.JSUtil.getFileAsString$S(data) || */
- null;
+ String ret = null;
+ /**
+ * @j2sNative
+ *
+ * ret = swingjs.JSUtil.getFileAsString$S(url);
+ *
+ *
+ */
+ cacheFileData(url, ret);
+ return ret;
}
public static boolean setFileBytes(File f, String urlstring)
}
@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 = bytes;
+ * @j2sNative f.\u79d8bytes = f._bytes = bytes;
*/
return true;
}
public static String getUniqueAppletID()
{
- @SuppressWarnings("unused")
- ThreadGroup g = Thread.currentThread().getThreadGroup();
/**
- * @j2sNative return g.html5Applet._uniqueId;
+ * @j2sNative return swingjs.JSUtil.getApplet$()._uniqueId;
*
*/
return null;
{
return;
}
- @SuppressWarnings("unused")
- ThreadGroup g = Thread.currentThread().getThreadGroup();
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 = swingjs.JSUtil.getApplet$().__Info || {}; for (var
+ * key in info) { if (key.indexOf(prefix) == 0) { value = "" +
+ * info[key];
*/
System.out.println(
* @param is
* @param outFile
* @throws IOException
- * if the file cannot be created or there is a problem reading the
- * input stream.
+ * if the file cannot be created or there is a problem
+ * reading the input stream.
*/
public static void streamToFile(InputStream is, File outFile)
throws IOException
public static void addJ2SDirectDatabaseCall(String domain)
{
- System.out.println(
- "Platform adding no-access-control-allow-origin domain "
+ if (isJS())
+ {
+ System.out.println(
+ "Platform adding known access-control-allow-origin * for domain "
+ domain);
+ /**
+ * @j2sNative
+ *
+ * J2S.addDirectDatabaseCall(domain);
+ */
+ }
- /**
- * @j2sNative
- *
- * J2S.addDirectDatabaseCall(domain);
- */
}
public static void getURLCommandArguments()
{
-
- /**
- * Retrieve the first query field as command arguments to Jalview. Include
- * only if prior to "?j2s" or "&j2s" or "#". Assign the applet's __Info.args
- * element to this value.
- *
- * @j2sNative var a =
- * decodeURI((document.location.href.replace("&","?").split("?j2s")[0]
- * + "?").split("?")[1].split("#")[0]); a &&
- * (J2S.thisApplet.__Info.args = a.split(" "));
- */
-
+ try {
+ /**
+ * Retrieve the first query field as command arguments to Jalview. Include
+ * only if prior to "?j2s" or "&j2s" or "#". Assign the applet's
+ * __Info.args element to this value.
+ *
+ * @j2sNative var a =
+ * decodeURI((document.location.href.replace("&","?").split("?j2s")[0]
+ * + "?").split("?")[1].split("#")[0]); a && (System.out.println("URL arguments detected were "+a) &&
+ * (J2S.thisApplet.__Info.urlargs = a.split(" "))
+ * (!!J2S.thisApplet.__Info.args || J2S.thisApplet.__Info.args == "" || J2S.thisApplet.__Info.args == "??") && (J2S.thisApplet.__Info.args = a) && (System.out.println("URL arguments were passed to J2S main.");
+ */
+ } catch (Throwable t)
+ {
+ }
}
+ /**
+ * 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);
+ }
}