*/
package jalview.util;
-import jalview.javascript.json.JSON;
-
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+import jalview.bin.argparser.ArgParser;
+import jalview.javascript.json.JSON;
+
/**
* System platform information used by Applet and Application
*
private static Boolean isHeadless = null;
+ // If launched from CLI with launcher script then -DCOLUMNWIDTH is set
+ private static final int CONSOLEWIDTH;
+
+ private static final String CONSOLEWIDTHPROPERTY = "CONSOLEWIDTH";
+
+ static
+ {
+ int cw = 80;
+ if (System.getProperty(CONSOLEWIDTHPROPERTY) != null
+ && System.getProperty(CONSOLEWIDTHPROPERTY).length() > 0)
+ {
+ try
+ {
+ cw = Integer.parseInt(System.getProperty(CONSOLEWIDTHPROPERTY));
+ } catch (NumberFormatException e)
+ {
+ }
+ }
+ CONSOLEWIDTH = cw;
+ }
+
/**
* added to group mouse events into Windows and nonWindows (mac, unix, linux)
*
time = mark = t;
if (msg != null)
{
- System.err.println("Platform: timer reset\t\t\t" + msg);
+ jalview.bin.Console.errPrintln("Platform: timer reset\t\t\t" + msg);
}
break;
case TIME_MARK:
}
if (msg != null)
{
- System.err.println("Platform: timer mark\t" + ((t - time) / 1000f)
- + "\t" + ((t - mark) / 1000f) + "\t" + msg);
+ jalview.bin.Console.errPrintln(
+ "Platform: timer mark\t" + ((t - time) / 1000f) + "\t"
+ + ((t - mark) / 1000f) + "\t" + msg);
}
mark = t;
}
case TIME_GET:
if (msg != null)
{
- System.err.println("Platform: timer dur\t" + ((t - time) / 1000f)
- + "\t" + ((duration) / 1000f) + "\t" + msg);
+ jalview.bin.Console
+ .errPrintln("Platform: timer dur\t" + ((t - time) / 1000f)
+ + "\t" + ((duration) / 1000f) + "\t" + msg);
}
set = 0;
break;
* info[key];
*/
- System.out.println(
+ jalview.bin.Console.outPrintln(
"Platform id=" + id + " reading Info." + key + " = " + value);
p.put(id + "_" + key, value);
if (isJS())
{
- System.out.println(
+ jalview.bin.Console.outPrintln(
"Platform adding known access-control-allow-origin * for domain "
+ domain);
/**
public static void getURLCommandArguments()
{
+
+ // setting ArgParser.ignoreNonStringValues allows non-string args to be
+ // set with, e.g., --wrap=hello
+ // which might be necessary for a querystring, plus we don't have access
+ // to Arg.hasOption(Opt.STRING)
+ if (Platform.isJS())
+ {
+ ArgParser.setIgnoreNonStringValues(true);
+ }
try
{
+ // extra spaces between lines of javascript to avoid eclipse comment
+ // munging into one line
+
/**
* 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 =
+ * if a querystringnamespace has been given in Info={...}. Use this
+ * namespace to find arguments and values in the querystring parameters.
+ * Arguments that do not take a value do not need to have a value in the
+ * querystring. If they do they will be ignored. Note, this means you
+ * cannot do 'debug=false' instead of 'nodebug'. If querystringnamepsace
+ * is an empty string ("") then no colon (":") will be expected.
+ *
+ * if querystringnamespace is not defined then use the old style single
+ * first parameter for arguments
+ *
+ * @j2sNative var querystringnamespace =
+ * J2S.thisApplet.__Info.querystringnamespace;
+ *
+ * if (querystringnamespace === undefined)
+ *
+ * {
+ *
+ * System.out.println("No querystringnamespace given");
+ *
+ * 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(" "));
+ * + "?").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."));
+ *
+ * }
+ *
+ * else // querystringnamespace is defined
+ *
+ * {
+ *
+ * var qsnsc = "";
+ *
+ * if (J2S.thisApplet.__Info.querystringnamespace) {
+ *
+ * qsnsc = J2S.thisApplet.__Info.querystringnamespace + ":";
+ *
+ * }
+ *
+ * System.out.println("querystringnamespace is '"+qsnsc+"'");
+ *
+ * var qsParams = new URLSearchParams(window.location.search);
+ *
+ * var qsargs = [];
+ *
+ * for (var param of qsParams) {
+ *
+ * var key = param[0];
+ *
+ * var val = param[1];
+ *
+ * if (key.startsWith(qsnsc)) {
+ *
+ * var arg = key.substring(qsnsc.length);
+ *
+ * qsargs.push("--" + arg + "=" + val);
+ *
+ * System.out.println("Setting arg '"+arg+"' to '"+val+"'");
+ *
+ * }
+ *
+ * }
+ *
+ * qsargs && (System.out.println("URL parameters detected were
+ * "+qsargs.join(" "))) && (J2S.thisApplet.__Info.urlargs =
+ * qsargs);
+ *
+ * (!J2S.thisApplet.__Info.args || J2S.thisApplet.__Info.args
+ * == "" || J2S.thisApplet.__Info.args == "??") &&
+ * (J2S.thisApplet.__Info.args = qsargs.join(" ")) &&
+ * (System.out.println("URL parameters were passed to J2S
+ * main."));
+ *
+ * }
*/
} catch (Throwable t)
{
+ /**
+ * @j2sNative console.log("Problem looking for arguments");
+ * console.log(t);
+ */
}
}
String p2 = path2.replace('\\', '/');
return p1.equals(p2);
}
+
+ /**
+ * If started on command line using launch script, return the console width
+ */
+ public static int consoleWidth()
+ {
+ return CONSOLEWIDTH;
+ }
}