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
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
} 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
\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