}
/**
- * 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 || */
+ // TODO temporary doubling of 秘bytes and _bytes;
+ // just remove _bytes when new transpiler has been installed
+ return /** @j2sNative f && (f.\u79d8bytes || f._bytes) || */
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;
}
@SuppressWarnings("unused")
ThreadGroup g = Thread.currentThread().getThreadGroup();
/**
- * @j2sNative return g.html5Applet._uniqueId;
+ * @j2sNative return g.\u79d8html5Applet._uniqueId;
*
*/
return null;
String id = getUniqueAppletID();
String key = "", value = "";
/**
- * @j2sNative var info = g.html5Applet.__Info || {}; for (var key in info) {
+ * @j2sNative var info = g.\u79d8html5Applet.__Info || {}; for (var key in info) {
* if (key.indexOf(prefix) == 0) { value = "" + info[key];
*/
public static void streamToFile(InputStream is, File outFile)
throws IOException
{
- if (isJS() && /**
- * @j2sNative outFile.setBytes$O && outFile.setBytes$O(is) &&
- */
- true)
- {
- return;
- }
FileOutputStream fio = new FileOutputStream(outFile);
try
{
+ if (isJS()
+ && /**
+ * @j2sNative outFile.setBytes$O && outFile.setBytes$O(is) &&
+ */
+ true)
+ {
+ return;
+ }
byte[] bb = new byte[32 * 1024];
int l;
while ((l = is.read(bb)) > 0)
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);
+ */
+ }
+
+ }
+
+ public static void getURLCommandArguments()
+ {
/**
- * @j2sNative
+ * 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.
*
- * J2S.addDirectDatabaseCall(domain);
+ * @j2sNative var a =
+ * decodeURI((document.location.href.replace("&","?").split("?j2s")[0]
+ * + "?").split("?")[1].split("#")[0]); a &&
+ * (J2S.thisApplet.__Info.args = a.split(" "));
*/
+
}
+ /**
+ * 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);
+ }
}