import jalview.io.IdentifyFile;\r
import jalview.io.JnetAnnotationMaker;\r
import jalview.javascript.JSFunctionExec;\r
+import jalview.javascript.JalviewLiteJsApi;\r
import jalview.javascript.JsCallBack;\r
import jalview.structure.SelectionListener;\r
import jalview.structure.StructureSelectionManager;\r
import java.awt.event.WindowEvent;\r
import java.io.BufferedReader;\r
import java.io.InputStreamReader;\r
+import java.net.URL;\r
import java.util.Hashtable;\r
import java.util.StringTokenizer;\r
import java.util.Vector;\r
* @author $author$\r
* @version $Revision: 1.92 $\r
*/\r
-public class JalviewLite extends Applet implements StructureSelectionManagerProvider\r
+public class JalviewLite extends Applet implements StructureSelectionManagerProvider, JalviewLiteJsApi\r
{\r
\r
+ public StructureSelectionManager getStructureSelectionManager()\r
+ {\r
+ return StructureSelectionManager.getStructureSelectionManager(this);\r
+ }\r
// /////////////////////////////////////////\r
// The following public methods maybe called\r
// externally, eg via javascript in HTML page\r
- /**\r
- * @return String list of selected sequence IDs, each terminated by the\r
- * 'boolean not' character (""+0x00AC) or (¬)\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getSelectedSequences()\r
*/\r
public String getSelectedSequences()\r
{\r
return getSelectedSequencesFrom(getDefaultTargetFrame());\r
}\r
\r
- /**\r
- * @param sep\r
- * separator string or null for default\r
- * @return String list of selected sequence IDs, each terminated by given\r
- * separator string\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getSelectedSequences(java.lang.String)\r
*/\r
public String getSelectedSequences(String sep)\r
{\r
return getSelectedSequencesFrom(getDefaultTargetFrame(), sep);\r
}\r
\r
- /**\r
- * @param alf\r
- * alignframe containing selection\r
- * @return String list of selected sequence IDs, each terminated by current\r
- * default separator sequence\r
- * \r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getSelectedSequencesFrom(jalview.appletgui.AlignFrame)\r
*/\r
public String getSelectedSequencesFrom(AlignFrame alf)\r
{\r
return getSelectedSequencesFrom(alf, separator); // ""+0x00AC);\r
}\r
\r
- /**\r
- * get list of selected sequence IDs separated by given separator\r
- * \r
- * @param alf\r
- * window containing selection\r
- * @param sep\r
- * separator string to use - default is 'boolean not'\r
- * @return String list of selected sequence IDs, each terminated by the given\r
- * separator\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getSelectedSequencesFrom(jalview.appletgui.AlignFrame, java.lang.String)\r
*/\r
public String getSelectedSequencesFrom(AlignFrame alf, String sep)\r
{\r
return result.toString();\r
}\r
\r
- /**\r
- * \r
- * @param sequenceId\r
- * id of sequence to highlight\r
- * @param position\r
- * integer position [ tobe implemented or range ] on sequence\r
- * @param alignedPosition\r
- * true/false/empty string - indicate if position is an alignment\r
- * column or unaligned sequence position\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#highlight(java.lang.String, java.lang.String, java.lang.String)\r
*/\r
public void highlight(String sequenceId, String position,\r
String alignedPosition)\r
alignedPosition);\r
}\r
\r
- /**\r
- * \r
- * @param sequenceId\r
- * id of sequence to highlight\r
- * @param position\r
- * integer position [ tobe implemented or range ] on sequence\r
- * @param alignedPosition\r
- * false, blank or something else - indicate if position is an\r
- * alignment column or unaligned sequence position\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#highlightIn(jalview.appletgui.AlignFrame, java.lang.String, java.lang.String, java.lang.String)\r
*/\r
public void highlightIn(AlignFrame alf, String sequenceId,\r
String position, String alignedPosition)\r
}\r
}\r
\r
- /**\r
- * select regions of the currrent alignment frame\r
- * \r
- * @param sequenceIds\r
- * String separated list of sequence ids or empty string\r
- * @param columns\r
- * String separated list { column range or column, ..} or empty\r
- * string\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#select(java.lang.String, java.lang.String)\r
*/\r
public void select(String sequenceIds, String columns)\r
{\r
selectIn(getDefaultTargetFrame(), sequenceIds, columns, separator);\r
}\r
\r
- /**\r
- * select regions of the currrent alignment frame\r
- * \r
- * @param toselect\r
- * String separated list { column range, seq1...seqn sequence ids }\r
- * @param sep\r
- * separator between toselect fields\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#select(java.lang.String, java.lang.String, java.lang.String)\r
*/\r
public void select(String sequenceIds, String columns, String sep)\r
{\r
selectIn(getDefaultTargetFrame(), sequenceIds, columns, sep);\r
}\r
\r
- /**\r
- * select regions of the given alignment frame\r
- * \r
- * @param alf\r
- * @param toselect\r
- * String separated list { column range, seq1...seqn sequence ids }\r
- * @param sep\r
- * separator between toselect fields\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#selectIn(jalview.appletgui.AlignFrame, java.lang.String, java.lang.String)\r
*/\r
public void selectIn(AlignFrame alf, String sequenceIds, String columns)\r
{\r
selectIn(alf, sequenceIds, columns, separator);\r
}\r
\r
- /**\r
- * select regions of the given alignment frame\r
- * \r
- * @param alf\r
- * @param toselect\r
- * String separated list { column range, seq1...seqn sequence ids }\r
- * @param sep\r
- * separator between toselect fields\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#selectIn(jalview.appletgui.AlignFrame, java.lang.String, java.lang.String, java.lang.String)\r
*/\r
public void selectIn(AlignFrame alf, String sequenceIds, String columns,\r
String sep)\r
}\r
}\r
\r
- /**\r
- * get sequences selected in current alignFrame and return their alignment in\r
- * format 'format' either with or without suffix\r
- * \r
- * @param alf\r
- * - where selection is\r
- * @param format\r
- * - format of alignment file\r
- * @param suffix\r
- * - "true" to append /start-end string to each sequence ID\r
- * @return selected sequences as flat file or empty string if there was no\r
- * current selection\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getSelectedSequencesAsAlignment(java.lang.String, java.lang.String)\r
*/\r
public String getSelectedSequencesAsAlignment(String format, String suffix)\r
{\r
format, suffix);\r
}\r
\r
- /**\r
- * get sequences selected in alf and return their alignment in format 'format'\r
- * either with or without suffix\r
- * \r
- * @param alf\r
- * - where selection is\r
- * @param format\r
- * - format of alignment file\r
- * @param suffix\r
- * - "true" to append /start-end string to each sequence ID\r
- * @return selected sequences as flat file or empty string if there was no\r
- * current selection\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getSelectedSequencesAsAlignmentFrom(jalview.appletgui.AlignFrame, java.lang.String, java.lang.String)\r
*/\r
public String getSelectedSequencesAsAlignmentFrom(AlignFrame alf,\r
String format, String suffix)\r
return "";\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAlignmentOrder()\r
+ */\r
public String getAlignmentOrder()\r
{\r
return getAlignmentOrderFrom(getDefaultTargetFrame());\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAlignmentOrderFrom(jalview.appletgui.AlignFrame)\r
+ */\r
public String getAlignmentOrderFrom(AlignFrame alf)\r
{\r
return getAlignmentOrderFrom(alf, separator);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAlignmentOrderFrom(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
public String getAlignmentOrderFrom(AlignFrame alf, String sep)\r
{\r
AlignmentI alorder = alf.getAlignViewport().getAlignment();\r
return arrayToSeparatorList(order);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#orderBy(java.lang.String, java.lang.String)\r
+ */\r
public String orderBy(String order, String undoName)\r
{\r
return orderBy(order, undoName, separator);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#orderBy(java.lang.String, java.lang.String, java.lang.String)\r
+ */\r
public String orderBy(String order, String undoName, String sep)\r
{\r
return orderAlignmentBy(getDefaultTargetFrame(), order, undoName, sep);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#orderAlignmentBy(jalview.appletgui.AlignFrame, java.lang.String, java.lang.String, java.lang.String)\r
+ */\r
public String orderAlignmentBy(AlignFrame alf, String order,\r
String undoName, String sep)\r
{\r
return alf.sortBy(aorder, undoName) ? "true" : "";\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAlignment(java.lang.String)\r
+ */\r
public String getAlignment(String format)\r
{\r
return getAlignmentFrom(getDefaultTargetFrame(), format, "true");\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAlignmentFrom(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
public String getAlignmentFrom(AlignFrame alf, String format)\r
{\r
return getAlignmentFrom(alf, format, "true");\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAlignment(java.lang.String, java.lang.String)\r
+ */\r
public String getAlignment(String format, String suffix)\r
{\r
return getAlignmentFrom(getDefaultTargetFrame(), format, suffix);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAlignmentFrom(jalview.appletgui.AlignFrame, java.lang.String, java.lang.String)\r
+ */\r
public String getAlignmentFrom(AlignFrame alf, String format,\r
String suffix)\r
{\r
}\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#loadAnnotation(java.lang.String)\r
+ */\r
public void loadAnnotation(String annotation)\r
{\r
loadAnnotationFrom(getDefaultTargetFrame(), annotation);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#loadAnnotationFrom(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
public void loadAnnotationFrom(AlignFrame alf, String annotation)\r
{\r
if (new AnnotationFile().readAnnotationFile(alf.getAlignViewport()\r
}\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getFeatures(java.lang.String)\r
+ */\r
public String getFeatures(String format)\r
{\r
return getFeaturesFrom(getDefaultTargetFrame(), format);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getFeaturesFrom(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
public String getFeaturesFrom(AlignFrame alf, String format)\r
{\r
return alf.outputFeatures(false, format);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAnnotation()\r
+ */\r
public String getAnnotation()\r
{\r
return getAnnotationFrom(getDefaultTargetFrame());\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getAnnotationFrom(jalview.appletgui.AlignFrame)\r
+ */\r
public String getAnnotationFrom(AlignFrame alf)\r
{\r
return alf.outputAnnotations(false);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#newView()\r
+ */\r
public AlignFrame newView()\r
{\r
return newViewFrom(getDefaultTargetFrame());\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#newView(java.lang.String)\r
+ */\r
public AlignFrame newView(String name)\r
{\r
return newViewFrom(getDefaultTargetFrame(), name);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#newViewFrom(jalview.appletgui.AlignFrame)\r
+ */\r
public AlignFrame newViewFrom(AlignFrame alf)\r
{\r
return alf.newView(null);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#newViewFrom(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
public AlignFrame newViewFrom(AlignFrame alf, String name)\r
{\r
return alf.newView(name);\r
}\r
\r
- /**\r
- * \r
- * @param text\r
- * alignment file as a string\r
- * @param title\r
- * window title\r
- * @return null or new alignment frame\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#loadAlignment(java.lang.String, java.lang.String)\r
*/\r
public AlignFrame loadAlignment(String text, String title)\r
{\r
return null;\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#setMouseoverListener(java.lang.String)\r
+ */\r
public void setMouseoverListener(String listener)\r
{\r
setMouseoverListener(currentAlignFrame, listener);\r
\r
private Vector<jalview.javascript.JSFunctionExec> javascriptListeners = new Vector<jalview.javascript.JSFunctionExec>();\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#setMouseoverListener(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
public void setMouseoverListener(AlignFrame af, String listener)\r
{\r
if (listener != null)\r
}\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#setSelectionListener(java.lang.String)\r
+ */\r
public void setSelectionListener(String listener)\r
{\r
setSelectionListener(null, listener);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#setSelectionListener(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
public void setSelectionListener(AlignFrame af, String listener)\r
{\r
if (listener != null)\r
}\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#setStructureListener(java.lang.String, java.lang.String)\r
+ */\r
public void setStructureListener(String listener, String modelSet)\r
{\r
if (listener != null)\r
}\r
}\r
\r
- /**\r
- * remove any callback using the given listener function and associated with\r
- * the given alignFrame (or null for all callbacks)\r
- * \r
- * @param af\r
- * (may be null)\r
- * @param listener\r
- * (may be null)\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#removeJavascriptListener(jalview.appletgui.AlignFrame, java.lang.String)\r
*/\r
public void removeJavascriptListener(AlignFrame af, String listener)\r
{\r
StructureSelectionManager.release(this);\r
}\r
private jalview.javascript.JSFunctionExec jsFunctionExec;\r
- /**\r
- * send a mouseover message to all the alignment windows associated with the\r
- * given residue in the pdbfile\r
- * \r
- * @param pdbResNum\r
- * @param chain\r
- * @param pdbfile\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#mouseOverStructure(java.lang.String, java.lang.String, java.lang.String)\r
*/\r
public void mouseOverStructure(String pdbResNum, String chain,\r
String pdbfile)\r
+ pdbResNum + "'");\r
}\r
}\r
- /**\r
- * adjust horizontal/vertical scroll to the make the given location the top left hand corner for given current view\r
- * \r
- * @param alf\r
- * @param topRow\r
- * @param leftHandColumn\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#scrollViewToIn(jalview.appletgui.AlignFrame, java.lang.String, java.lang.String)\r
*/\r
public void scrollViewToIn(AlignFrame alf, String topRow, String leftHandColumn)\r
{\r
\r
} catch (Exception ex)\r
{\r
- System.err.println("Couldn't parse integer arguments (topRow='"+topRow+"' and leftHandColumn='"+leftHandColumn+"'");\r
+ System.err.println("Couldn't parse integer arguments (topRow='"+topRow+"' and leftHandColumn='"+leftHandColumn+"')");\r
ex.printStackTrace();\r
}\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.javascript.JalviewLiteJsApi#scrollViewToRowIn(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
+ @Override\r
+ public void scrollViewToRowIn(AlignFrame alf, String topRow)\r
+ {\r
+ try {\r
+ alf.scrollToRow(new Integer(topRow).intValue());\r
+ \r
+ } catch (Exception ex)\r
+ {\r
+ System.err.println("Couldn't parse integer arguments (topRow='"+topRow+"')");\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see jalview.javascript.JalviewLiteJsApi#scrollViewToColumnIn(jalview.appletgui.AlignFrame, java.lang.String)\r
+ */\r
+ @Override\r
+ public void scrollViewToColumnIn(AlignFrame alf, String leftHandColumn)\r
+ {\r
+\r
+ try {\r
+ alf.scrollToColumn(new Integer(leftHandColumn).intValue());\r
+ \r
+ } catch (Exception ex)\r
+ {\r
+ System.err.println("Couldn't parse integer arguments (leftHandColumn='"+leftHandColumn+"')");\r
+ ex.printStackTrace();\r
+ } \r
+ }\r
+\r
// //////////////////////////////////////////////\r
// //////////////////////////////////////////////\r
\r
{\r
if (file.indexOf("://") == -1)\r
{\r
- String fl = applet.getDocumentBase() + file;\r
+ String fl = applet.resolveUrlForLocalOrAbsolute(file, getDocumentBase());\r
try\r
{\r
if (new java.net.URL(fl).openStream() != null)\r
{\r
}\r
;\r
- fl = applet.getCodeBase() + file;\r
+ fl = applet.resolveUrlForLocalOrAbsolute(file, getCodeBase());\r
try\r
{\r
if (new java.net.URL(fl).openStream() != null)\r
{\r
if (debug)\r
{\r
- if (debug)\r
- {\r
- System.err.println("Prepended codebase for resource: '"\r
- + file + "'");\r
- }\r
- return fl;\r
+ System.err.println("Prepended codebase for resource: '"\r
+ + file + "'");\r
}\r
+ return fl;\r
}\r
} catch (Exception x)\r
{\r
return "" + separator;\r
}\r
\r
- /**\r
- * @return\r
- * @see jalview.appletgui.AlignFrame#getFeatureGroups()\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getFeatureGroups()\r
*/\r
public String getFeatureGroups()\r
{\r
return lst;\r
}\r
\r
- /**\r
- * @param alf\r
- * alignframe to get feature groups on\r
- * @return\r
- * @see jalview.appletgui.AlignFrame#getFeatureGroups()\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getFeatureGroupsOn(jalview.appletgui.AlignFrame)\r
*/\r
public String getFeatureGroupsOn(AlignFrame alf)\r
{\r
return lst;\r
}\r
\r
- /**\r
- * @param visible\r
- * @return\r
- * @see jalview.appletgui.AlignFrame#getFeatureGroupsOfState(boolean)\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getFeatureGroupsOfState(boolean)\r
*/\r
public String getFeatureGroupsOfState(boolean visible)\r
{\r
.getFeatureGroupsOfState(visible));\r
}\r
\r
- /**\r
- * @param alf\r
- * align frame to get groups of state visible\r
- * @param visible\r
- * @return\r
- * @see jalview.appletgui.AlignFrame#getFeatureGroupsOfState(boolean)\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getFeatureGroupsOfStateOn(jalview.appletgui.AlignFrame, boolean)\r
*/\r
public String getFeatureGroupsOfStateOn(AlignFrame alf, boolean visible)\r
{\r
return arrayToSeparatorList(alf.getFeatureGroupsOfState(visible));\r
}\r
\r
- /**\r
- * @param groups\r
- * tab separated list of group names\r
- * @param state\r
- * true or false\r
- * @see jalview.appletgui.AlignFrame#setFeatureGroupState(java.lang.String[],\r
- * boolean)\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#setFeatureGroupStateOn(jalview.appletgui.AlignFrame, java.lang.String, boolean)\r
*/\r
public void setFeatureGroupStateOn(AlignFrame alf, String groups,\r
boolean state)\r
alf.setFeatureGroupState(separatorListToArray(groups), st);\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#setFeatureGroupState(java.lang.String, boolean)\r
+ */\r
public void setFeatureGroupState(String groups, boolean state)\r
{\r
setFeatureGroupStateOn(getDefaultTargetFrame(), groups, state);\r
}\r
\r
- /**\r
- * List separator string\r
- * \r
- * @return the separator\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getSeparator()\r
*/\r
public String getSeparator()\r
{\r
return separator;\r
}\r
\r
- /**\r
- * List separator string\r
- * \r
- * @param separator\r
- * the separator to set. empty string will reset separator to default\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#setSeparator(java.lang.String)\r
*/\r
public void setSeparator(String separator)\r
{\r
return false;\r
}\r
\r
- /**\r
- * bind a pdb file to a sequence in the given alignFrame.\r
- * \r
- * @param alFrame\r
- * - null or specific alignFrame. This specifies the dataset that\r
- * will be searched for a seuqence called sequenceId\r
- * @param sequenceId\r
- * - sequenceId within the dataset.\r
- * @param pdbEntryString\r
- * - the short name for the PDB file\r
- * @param pdbFile\r
- * - pdb file - either a URL or a valid PDB file.\r
- * @return true if binding was as success TODO: consider making an exception\r
- * structure for indicating when PDB parsing or sequenceId location\r
- * fails.\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#addPdbFile(jalview.appletgui.AlignFrame, java.lang.String, java.lang.String, java.lang.String)\r
*/\r
public boolean addPdbFile(AlignFrame alFrame, String sequenceId,\r
String pdbEntryString, String pdbFile)\r
for (int i=0;i<colcommands.length;i++) { l[i] = colcommands[i].hashCode();}\r
jshashes.put(messageclass+"|"+viewId,l);\r
}\r
+ /* (non-Javadoc)\r
+ * @see jalview.bin.JalviewLiteJsApi#getJsMessage(java.lang.String, java.lang.String)\r
+ */\r
public String getJsMessage(String messageclass, String viewId)\r
{\r
Hashtable<String,String[]> msgset = jsmessages.get(messageclass);\r
}\r
\r
/**\r
+ * return the given colour value parameter or the given default if parameter not given\r
+ * @param colparam\r
+ * @param defcolour\r
+ * @return\r
+ */\r
+ public Color getDefaultColourParameter(String colparam, Color defcolour)\r
+ {\r
+ String colprop = getParameter(colparam);\r
+ if (colprop==null || colprop.trim().length()==0)\r
+ {\r
+ return defcolour;\r
+ }\r
+ Color col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName(colprop);\r
+ if (col==null)\r
+ {\r
+ try {\r
+ col = new jalview.schemes.UserColourScheme(colprop).findColour('A');\r
+ } catch (Exception ex)\r
+ {\r
+ System.err.println("Couldn't parse '"+colprop+"' as a colour for "+colparam);\r
+ col=null;\r
+ }\r
+ }\r
+ return (col==null) ? defcolour: col;\r
+\r
+ }\r
+\r
+ public void openJalviewHelpUrl()\r
+ {\r
+ String helpUrl=getParameter("jalviewhelpurl");\r
+ if (helpUrl==null || helpUrl.trim().length()<5)\r
+ {\r
+ helpUrl="http://www.jalview.org/help.html";\r
+ }\r
+ showURL(helpUrl, "HELP"); \r
+ }\r
+ \r
+ /**\r
+ * form a complete URL given a path to a resource and a reference location on the same server\r
+ * @param url - an absolute path on the same server as localref or a document located relative to localref\r
+ * @param localref - a URL on the same server as url\r
+ * @return a complete URL for the resource located by url\r
+ */\r
+ private String resolveUrlForLocalOrAbsolute(String url, URL localref)\r
+ {\r
+ String codebase = localref.toString();\r
+ if (url.indexOf("/") == 0)\r
+ {\r
+ url = codebase.substring(0, codebase.length()\r
+ - localref.getFile().length())\r
+ + url;\r
+ }\r
+ else\r
+ {\r
+ url = localref + url;\r
+ }\r
+ return url;\r
+ }\r
+\r
+ /**\r
+ * open a URL in the browser - resolving it according to relative refs and coping with javascript: protocol if necessary.\r
+ * @param url\r
+ * @param target\r
+ */\r
+ public void showURL(String url, String target)\r
+ {\r
+ try\r
+ {\r
+ if (url.indexOf(":") == -1)\r
+ {\r
+ // TODO: verify (Bas Vroling bug) prepend codebase or server URL to\r
+ // form valid URL\r
+ // Should really use docbase, not codebase.\r
+ URL prepend;\r
+ url = resolveUrlForLocalOrAbsolute(url, prepend=getDefaultParameter("resolvetocodebase", false) ? getDocumentBase() : getCodeBase());\r
+ if (debug) {\r
+ System.err.println("Show url (prepended "+prepend+" - toggle resolvetocodebase if code/docbase resolution is wrong): " + url);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (debug) {\r
+ System.err.println("Show url: " + url);\r
+ }\r
+ }\r
+ if (url.indexOf("javascript:") == 0)\r
+ {\r
+ // no target for the javascript context\r
+ getAppletContext().showDocument(\r
+ new java.net.URL(url));\r
+ }\r
+ else\r
+ {\r
+ getAppletContext().showDocument(\r
+ new java.net.URL(url), target);\r
+ }\r
+ } catch (Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+\r
+ /**\r
* bind structures in a viewer to any matching sequences in an alignFrame (use\r
* sequenceIds to limit scope of search to specific sequences)\r
* \r