+
+ public static boolean allowMnemonics()
+ {
+ return !isMac();
+ }
+
+ public final static int TIME_RESET = 0;
+
+ public final static int TIME_MARK = 1;
+
+ public static final int TIME_SET = 2;
+
+ public static final int TIME_GET = 3;
+
+ public static long time, mark, set, duration;
+
+ public static void timeCheck(String msg, int mode)
+ {
+ long t = System.currentTimeMillis();
+ switch (mode)
+ {
+ case TIME_RESET:
+ time = mark = t;
+ if (msg != null)
+ {
+ System.err.println("Platform: timer reset\t\t\t" + msg);
+ }
+ break;
+ case TIME_MARK:
+ if (set > 0)
+ {
+ duration += (t - set);
+ }
+ else
+ {
+ if (time == 0)
+ {
+ time = mark = t;
+ }
+ if (msg != null)
+ {
+ System.err.println("Platform: timer mark\t" + ((t - time) / 1000f)
+ + "\t" + ((t - mark) / 1000f) + "\t" + msg);
+ }
+ mark = t;
+ }
+ break;
+ case TIME_SET:
+ set = t;
+ break;
+ case TIME_GET:
+ if (msg != null)
+ {
+ System.err.println("Platform: timer dur\t" + ((t - time) / 1000f)
+ + "\t" + ((duration) / 1000f) + "\t" + msg);
+ }
+ set = 0;
+ break;
+ }
+ }
+
+ public static void cacheFileData(String path, byte[] data)
+ {
+ if (!isJS())
+ {
+ return;
+ }
+ /**
+ * @j2sNative
+ *
+ * swingjs.JSUtil.cacheFileData$S$O(path, data);
+ *
+ */
+ }
+
+ public static byte[] getFileBytes(File f)
+ {
+ return /** @j2sNative f && f._bytes || */
+ null;
+ }
+
+ public static byte[] getFileAsBytes(String fileStr)
+ {
+ // BH 2018 hack for no support for access-origin
+ return /** @j2sNative swingjs.JSUtil.getFileAsBytes$O(fileStr) || */
+ null;
+ }
+
+ public static String getFileAsString(String data)
+ {
+ return /** @j2sNative swingjs.JSUtil.getFileAsString$S(data) || */
+ null;
+ }
+
+ public static boolean setFileBytes(File f, String urlstring)
+ {
+ if (!isJS())
+ {
+ return false;
+ }
+ @SuppressWarnings("unused")
+ byte[] bytes = getFileAsBytes(urlstring);
+ /**
+ * @j2sNative f._bytes = bytes;
+ */
+ return true;
+ }
+
+ public static void addJ2SBinaryType(String ext)
+ {
+ /**
+ * @j2sNative
+ *
+ * J2S._binaryTypes.push("." + ext + "?");
+ *
+ */
+ }
+
+ /**
+ * Encode the URI using JavaScript encodeURIComponent
+ *
+ * @param value
+ * @return encoded value
+ */
+ public static String encodeURI(String value)
+ {
+ /**
+ * @j2sNative value = encodeURIComponent(value);
+ */
+ return value;
+ }
+
+ /**
+ * Open the URL using a simple window call if this is JavaScript
+ *
+ * @param url
+ * @return true if window has been opened
+ */
+ public static boolean openURL(String url)
+ {
+ if (!isJS())
+ {
+ return false;
+ }
+ /**
+ * @j2sNative
+ *
+ *
+ * window.open(url);
+ */
+ return true;
+ }
+
+ public static String getUniqueAppletID()
+ {
+ @SuppressWarnings("unused")
+ ThreadGroup g = Thread.currentThread().getThreadGroup();
+ /**
+ * @j2sNative return g.html5Applet._uniqueId;
+ *
+ */
+ return null;
+
+ }
+
+ /**
+ * Read the Info block for this applet.
+ *
+ * @param prefix
+ * "jalview_"
+ * @param p
+ * @return unique id for this applet
+ */
+ public static void readInfoProperties(String prefix, Properties p)
+ {
+ @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];
+ */
+
+ System.out.println(
+ "Platform id=" + id + " reading Info." + key + " = " + value);
+ p.put(id + "_" + key, value);
+
+ /**
+ * @j2sNative
+ *
+ *
+ * } }
+ */
+ }
+