X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FJalviewLite.java;h=25c907d9424f72c20ade33153ec242589d50e329;hb=f149a335b5467a4802eded5da0ca2fc732d7caf7;hp=9a4d9e20000558bf10ab90982e5c7da8f29a0e02;hpb=aaf78c2f304b237a9c800137126967ace9437c99;p=jalview.git diff --git a/src/jalview/bin/JalviewLite.java b/src/jalview/bin/JalviewLite.java index 9a4d9e2..25c907d 100644 --- a/src/jalview/bin/JalviewLite.java +++ b/src/jalview/bin/JalviewLite.java @@ -53,6 +53,7 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.InputStreamReader; +import java.net.URL; import java.util.Hashtable; import java.util.StringTokenizer; import java.util.Vector; @@ -68,6 +69,10 @@ import netscape.javascript.JSObject; public class JalviewLite extends Applet implements StructureSelectionManagerProvider, JalviewLiteJsApi { + public StructureSelectionManager getStructureSelectionManager() + { + return StructureSelectionManager.getStructureSelectionManager(this); + } // ///////////////////////////////////////// // The following public methods maybe called // externally, eg via javascript in HTML page @@ -933,11 +938,44 @@ public class JalviewLite extends Applet implements StructureSelectionManagerProv } catch (Exception ex) { - System.err.println("Couldn't parse integer arguments (topRow='"+topRow+"' and leftHandColumn='"+leftHandColumn+"'"); + System.err.println("Couldn't parse integer arguments (topRow='"+topRow+"' and leftHandColumn='"+leftHandColumn+"')"); ex.printStackTrace(); } } + /* (non-Javadoc) + * @see jalview.javascript.JalviewLiteJsApi#scrollViewToRowIn(jalview.appletgui.AlignFrame, java.lang.String) + */ + @Override + public void scrollViewToRowIn(AlignFrame alf, String topRow) + { + try { + alf.scrollToRow(new Integer(topRow).intValue()); + + } catch (Exception ex) + { + System.err.println("Couldn't parse integer arguments (topRow='"+topRow+"')"); + ex.printStackTrace(); + } + } + + /* (non-Javadoc) + * @see jalview.javascript.JalviewLiteJsApi#scrollViewToColumnIn(jalview.appletgui.AlignFrame, java.lang.String) + */ + @Override + public void scrollViewToColumnIn(AlignFrame alf, String leftHandColumn) + { + + try { + alf.scrollToColumn(new Integer(leftHandColumn).intValue()); + + } catch (Exception ex) + { + System.err.println("Couldn't parse integer arguments (leftHandColumn='"+leftHandColumn+"')"); + ex.printStackTrace(); + } + } + // ////////////////////////////////////////////// // ////////////////////////////////////////////// @@ -1864,7 +1902,7 @@ public class JalviewLite extends Applet implements StructureSelectionManagerProv { if (file.indexOf("://") == -1) { - String fl = applet.getDocumentBase() + file; + String fl = applet.resolveUrlForLocalOrAbsolute(file, getDocumentBase()); try { if (new java.net.URL(fl).openStream() != null) @@ -1880,20 +1918,17 @@ public class JalviewLite extends Applet implements StructureSelectionManagerProv { } ; - fl = applet.getCodeBase() + file; + fl = applet.resolveUrlForLocalOrAbsolute(file, getCodeBase()); try { if (new java.net.URL(fl).openStream() != null) { if (debug) { - if (debug) - { - System.err.println("Prepended codebase for resource: '" - + file + "'"); - } - return fl; + System.err.println("Prepended codebase for resource: '" + + file + "'"); } + return fl; } } catch (Exception x) { @@ -2271,6 +2306,81 @@ public class JalviewLite extends Applet implements StructureSelectionManagerProv } + public void openJalviewHelpUrl() + { + String helpUrl=getParameter("jalviewhelpurl"); + if (helpUrl==null || helpUrl.trim().length()<5) + { + helpUrl="http://www.jalview.org/help.html"; + } + showURL(helpUrl, "HELP"); + } + + /** + * form a complete URL given a path to a resource and a reference location on the same server + * @param url - an absolute path on the same server as localref or a document located relative to localref + * @param localref - a URL on the same server as url + * @return a complete URL for the resource located by url + */ + private String resolveUrlForLocalOrAbsolute(String url, URL localref) + { + String codebase = localref.toString(); + if (url.indexOf("/") == 0) + { + url = codebase.substring(0, codebase.length() + - localref.getFile().length()) + + url; + } + else + { + url = localref + url; + } + return url; + } + + /** + * open a URL in the browser - resolving it according to relative refs and coping with javascript: protocol if necessary. + * @param url + * @param target + */ + public void showURL(String url, String target) + { + try + { + if (url.indexOf(":") == -1) + { + // TODO: verify (Bas Vroling bug) prepend codebase or server URL to + // form valid URL + // Should really use docbase, not codebase. + URL prepend; + url = resolveUrlForLocalOrAbsolute(url, prepend=getDefaultParameter("resolvetocodebase", false) ? getDocumentBase() : getCodeBase()); + if (debug) { + System.err.println("Show url (prepended "+prepend+" - toggle resolvetocodebase if code/docbase resolution is wrong): " + url); + } + } + else + { + if (debug) { + System.err.println("Show url: " + url); + } + } + if (url.indexOf("javascript:") == 0) + { + // no target for the javascript context + getAppletContext().showDocument( + new java.net.URL(url)); + } + else + { + getAppletContext().showDocument( + new java.net.URL(url), target); + } + } catch (Exception ex) + { + ex.printStackTrace(); + } + } + /** * bind structures in a viewer to any matching sequences in an alignFrame (use * sequenceIds to limit scope of search to specific sequences)