+++ /dev/null
-package jalview.bin;
-
-import jalview.gui.Preferences;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-
-/**
- * Collection of all known applet tags from JalviewLite
- *
- * @author hansonr
- *
- */
-@SuppressWarnings("serial")
-public class AppletParams extends HashMap<String, String>
-{
-
- private final static String[] params = { "alignpdbfiles",
- Preferences.ANNOTATIONCOLOUR_MAX, Preferences.ANNOTATIONCOLOUR_MIN,
- "annotations",
- "APPLICATION_URL", "automaticScrolling", "centrecolumnlabels",
- "debug", "defaultColour", "defaultColourNuc", "defaultColourProt",
- "embedded", "enableSplitFrame", "externalstructureviewer", "features",
- "file", "file2", "format", "heightScale", "hidefeaturegroups",
- "jalviewhelpurl", "jnetfile", "jpredfile", "label", "linkLabel_",
- "linkLabel_1", "linkURL_", "nojmol", "normaliseLogo",
- "normaliseSequenceLogo", "oninit", "PDBFILE", "PDBSEQ",
- "relaxedidmatch", "resolvetocodebase", "RGB", "scaleProteinAsCdna",
- "scoreFile", "separator", "sequence", "showAnnotation", "showbutton",
- "showConsensus", "showConsensusHistogram", "showConservation",
- "showfeaturegroups", "showFeatureSettings", "showFullId",
- "showGroupConsensus", "showGroupConservation", "showOccupancy",
- "showQuality", "showSequenceLogo", "showTreeBootstraps",
- "showTreeDistances", "showUnconserved", "showUnlinkedTreeNodes",
- "sortBy", "sortByTree", "tree", "treeFile", "upperCase",
- "userDefinedColour", "widthScale", "windowHeight", "windowWidth",
- "wrap", };
-
- public AppletParams(Map<String, String> info)
- {
- for (int i = params.length; --i >= 0;)
- {
- put(params[i], info.get(params[i]));
- }
- }
-
- public String getParam(String param, String def)
- {
- String val = get(param);
- return (val != null ? val : def);
- }
-
- // <applet
- // code="jalview.bin.JalviewLite" width="140" height="35"
- // archive="jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar">
- // <param name="permissions" value="sandbox"/>
- // <param name="file" value="uniref50.fa"/>
- // <param name="treeFile" value="ferredoxin.nw"/>
- // <param name="userDefinedColour" value="C=yellow; R,K,H=FF5555;
- // D,E=5555FF"/>
- // <param name="sortByTree" value="True"/>
- // <param name="showSequenceLogo" value="true"/>
- // <param name="showGroupConsensus" value="true"/>
- // <param name="showFullId" value="false"/>
- // <param name="linkLabel_1" value="Uniprot"/>
- // <param name="linkUrl_1"
- // value="http://www.uniprot.org/uniprot/$SEQUENCE_ID$"/>
- // <param name="linkLabel_2" value="EMBL-EBI Search"/>
- // <param name="linkUrl_2"
- // value="http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$"/>
- // <param name="APPLICATION_URL"
- // value="http://www.jalview.org/services/launchApp"/>
- // </applet>
- //
- public AppletParams(String outerHTML)
- {
- String[] tokens = outerHTML.split("<param");
- outerHTML = tokens[0];
- String code = getAttr(outerHTML, "code");
- if (!code.equals("jalview.bin.JalviewLite"))
- {
- return;
- }
- for (int i = tokens.length; --i > 0;)
- {
- String param = tokens[i];
- String key = getAttr(param, "name");
- if (key != null)
- {
- String value = getAttr(param, "value");
- System.out.println("AppletParams " + key + " = \"" + value + "\"");
- put(key, value);
- }
- }
- put("_width", getAttr(outerHTML, "width"));
- put("_height", getAttr(outerHTML, "height"));
- put("_id", getAttr(outerHTML, "id"));
- put("_name", getAttr(outerHTML, "name"));
- put("_archive", getAttr(outerHTML, "archive"));
- put("_code", code);
- }
-
- public AppletParams()
- {
- // TODO Auto-generated constructor stub
- }
-
- public static AppletParams getAppletParams(String[] args,
- Vector<String> vargs)
- {
- AppletParams appletParams = new AppletParams();
- String resourcePath = null;
- for (int i = args.length; --i > 0;) // > 0 is correct, not >=0
- {
- if (args[i].startsWith("name=\"Info.resourcePath\""))
- {
- resourcePath = getAttr(args[i], "value");
- if (resourcePath.length() > 0 && !resourcePath.endsWith("/"))
- {
- resourcePath += "/";
- }
- break;
- }
- }
- for (int i = 1; i < args.length; i++)
- {
- String arg = args[i].trim();
- if (arg.startsWith("name="))
- {
- String prefName = getAttr(arg, "name");
- String appletName = prefName.toLowerCase();
- String argName = prefName;
- String value = getAttr(arg, "value");
-
- // note that Application arguments ARE case-sensitive, but
- // Applet.getParameter() is not.
-
- switch (appletName)
- {
-
- case "file":
- argName = "open";
- appletName = null;
- value = resourcePath + value;
- break;
- case "file2":
- argName = "open2";
- prefName = null;
- value = resourcePath + value;
- break;
- case "features":
- case "jnetfile":
- case "jpredfile":
- case "pdbfile":
- case "scorefile":
- case "sequence":
- // setting argName to null indicates that we want
- // JalviewAppLoader to take care of this.
- prefName = argName = null;
- value = resourcePath + value;
- break;
- case "tree":
- case "treefile":
- // setting appletName to null indicates that we want
- // Jalview.doMain to taken care of this as Jalview args
- argName = "tree";
- appletName = null;
- value = resourcePath + value;
- break;
-
- // non-loading preferences
-
- case "defaultcolour":
- prefName = Preferences.DEFAULT_COLOUR;
- break;
- case "defaultcolournuc":
- prefName = Preferences.DEFAULT_COLOUR_NUC;
- break;
- case "defaultcolourprot":
- prefName = Preferences.DEFAULT_COLOUR_PROT;
- break;
- case "annotationcolour_max":
- prefName = Preferences.ANNOTATIONCOLOUR_MAX;
- break;
- case "annotationcolour_min":
- prefName = Preferences.ANNOTATIONCOLOUR_MIN;
- break;
- case "enablesplitframe":
- prefName = Preferences.ENABLE_SPLIT_FRAME;
- break;
- case "centrecolumnlabels":
- prefName = Preferences.CENTRE_COLUMN_LABELS;
- break;
- case "sortby":
- prefName = Preferences.SORT_ALIGNMENT; // id, etc.
- break;
- case "normalisesequencelogo":
- prefName = Preferences.NORMALISE_CONSENSUS_LOGO;
- break;
- case "relaxedidmatch":
- prefName = Preferences.RELAXEDSEQIDMATCHING;
- break;
- case "scaleproteinascdna":
- prefName = Preferences.SCALE_PROTEIN_TO_CDNA;
- break;
- case "userdefinedcolour":
- argName = "colour";
- prefName = Preferences.USER_DEFINED_COLOURS;
- break;
- case "wrap":
- prefName = Preferences.WRAP_ALIGNMENT;
- break;
-
- // implemented; not tested:
-
- case "oninit":
- prefName = null;
- break;
- case "annotations":
- value = resourcePath + value;
- argName = null;
- break;
- case "hidefeaturegroups":
- // TODO
- break;
- case "pdbseq":
- argName = prefName = null;
- break;
- case "sortbytree":
- prefName = Preferences.SORT_BY_TREE;
- value = checkTF(value);
- appletName = null; // taken care of by Jalview
- break;
- case "format":
- break;
- case "alignpdbfiles":
- argName = prefName = null;
- break;
- case "separator":
- break;
-
- // TODO: probably not relevant?
-
- case "rgb":
- prefName = null; // TODO no background for application?
- break;
- case "externalstructureviewer":
- break;
- case "application_url":
- break;
- case "automaticscrolling":
- break;
- case "heightscale":
- break;
- case "jalviewhelpurl":
- break;
- case "label":
- break;
- case "linklabel_":
- prefName = "linkLabel_";
- break;
- case "linklabel_1":
- prefName = "linkLabel_1";
- break;
- case "linkurl_":
- prefName = "linkURL_";
- break;
-
- // unknown:
-
- case "nojmol":
- case "normaliselogo":
- case "resolvetocodebase":
- case "uppercase":
- case "widthscale":
- case "windowheight":
- case "windowwidth":
- argName = prefName = null;
- break;
-
- // TRUE/FALSE
-
- case "debug":
- value = checkTF(value);
- break;
- case "embedded":
- value = checkTF(value);
- break;
- case "showbutton":
- value = checkTF(value);
- break;
- case "showannotation":
- prefName = Preferences.SHOW_ANNOTATIONS;
- value = checkTF(value);
- break;
- case "showconsensus":
- prefName = Preferences.SHOW_CONSENSUS_LOGO;
- value = checkTF(value);
- break;
- case "showconsensushistogram":
- prefName = Preferences.SHOW_CONSENSUS_HISTOGRAM;
- value = checkTF(value);
- break;
- case "showconservation":
- prefName = Preferences.SHOW_CONSERVATION;
- value = checkTF(value);
- break;
- case "showgroupconsensus":
- prefName = Preferences.SHOW_GROUP_CONSENSUS;
- value = checkTF(value);
- break;
- case "showgroupconservation":
- prefName = Preferences.SHOW_GROUP_CONSERVATION;
- value = checkTF(value);
- break;
- case "showoccupancy":
- prefName = Preferences.SHOW_OCCUPANCY;
- value = checkTF(value);
- break;
- case "showquality":
- prefName = Preferences.SHOW_QUALITY;
- value = checkTF(value);
- break;
- case "showsequencelogo":
- prefName = Preferences.SHOW_CONSENSUS_LOGO;
- value = checkTF(value);
- break;
- case "showfeaturegroups":
- value = checkTF(value);
- break;
- case "showfeaturesettings":
- value = checkTF(value);
- break;
- case "showfullid":
- value = checkTF(value);
- break;
- case "showtreebootstraps":
- value = checkTF(value);
- break;
- case "showtreedistances":
- value = checkTF(value);
- break;
- case "showunconserved":
- prefName = Preferences.SHOW_UNCONSERVED;
- value = checkTF(value);
- break;
- case "showunlinkedtreenodes":
- value = checkTF(value);
- break;
- default:
- if (appletName.startsWith("pdbfile")
- || appletName.startsWith("sequence") && Character.isDigit(
- appletName.charAt(appletName.length() - 1)))
- {
- // could be pdbFile2, for example
- prefName = argName = null;
- value = resourcePath + value;
- break;
- }
- // or one of the app preference names
- break;
- }
- // put name and value into application args
- if (value != null && argName != null)
- {
- vargs.add(argName);
- if (value != "true")
- {
- vargs.add(value);
- }
- }
- if (value == null)
- {
- value = "false";
- }
- System.out.println("AppletParams propName=" + prefName + " argName="
- + argName + " appletName="
- + appletName + " value=" + value);
- if (appletName != null)
- {
- appletParams.put(appletName, value);
- }
- if (prefName != null)
- {
- Cache.setPropertyNoSave(prefName, value);
- }
- }
- }
- return appletParams;
- }
-
- /**
- * Check for a single-argument option.
- *
- * @param value
- * @return "true" or null
- */
- private static String checkTF(String value)
- {
- return (value.toLowerCase() == "true" ? "true" : null);
- }
-
- /**
- * Crude applet innerHTML parser
- *
- * @param tag
- * @param attr
- * @return
- */
- private static String getAttr(String tag, String attr)
- {
- int pt = tag.indexOf(attr + "=\"");
- if (pt < 0)
- {
- System.out
- .println("AppletParams did not read " + attr + " in " + tag);
- return null;
- }
- // <param name="sortByTree" value="True"/>
- int pt1 = pt + attr.length() + 2;
- int pt2 = tag.indexOf("\"", pt1);
- return (pt < 0 ? null : tag.substring(pt1, pt2));
- }
-
- public static void main(String[] args)
- {
- new AppletParams("<applet\r\n"
- + " code=\"jalview.bin.JalviewLite\" width=\"140\" height=\"35\"\r\n"
- + " archive=\"jalviewApplet.jar,JmolApplet-14.6.4_2016.10.26.jar,java-json.jar,json_simple-1.1.jar\"> \r\n"
- + " <param name=\"permissions\" value=\"sandbox\"/>\r\n"
- + " <param name=\"file\" value=\"uniref50.fa\"/>\r\n"
- + " <param name=\"treeFile\" value=\"ferredoxin.nw\"/>\r\n"
- + " <param name=\"userDefinedColour\" value=\"C=yellow; R,K,H=FF5555; D,E=5555FF\"/>\r\n"
- + " <param name=\"sortByTree\" value=\"True\"/>\r\n"
- + " <param name=\"showSequenceLogo\" value=\"true\"/>\r\n"
- + " <param name=\"showGroupConsensus\" value=\"true\"/>\r\n"
- + " <param name=\"showFullId\" value=\"false\"/>\r\n"
- + " <param name=\"linkLabel_1\" value=\"Uniprot\"/>\r\n"
- + " <param name=\"linkUrl_1\" value=\"http://www.uniprot.org/uniprot/$SEQUENCE_ID$\"/>\r\n"
- + " <param name=\"linkLabel_2\" value=\"EMBL-EBI Search\"/>\r\n"
- + " <param name=\"linkUrl_2\" value=\"http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$\"/>\r\n"
- + " <param name=\"APPLICATION_URL\" value=\"http://www.jalview.org/services/launchApp\"/>\r\n"
- + " </applet>");
- }
-
-}
\ No newline at end of file