X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2FMouseOverStructureListener.java;h=239d0f3f1c3c80a9d971c07d843d98169c4ad9d6;hb=a5e22141bc3185284588761a69f023d527e7f18e;hp=88fba0284f1ecfd91c8d575bd27f80ad7c41142c;hpb=6f2610ec4d7a79dde17f9b3d02225c62aa52cfd8;p=jalview.git diff --git a/src/jalview/javascript/MouseOverStructureListener.java b/src/jalview/javascript/MouseOverStructureListener.java index 88fba02..239d0f3 100644 --- a/src/jalview/javascript/MouseOverStructureListener.java +++ b/src/jalview/javascript/MouseOverStructureListener.java @@ -22,7 +22,7 @@ package jalview.javascript; import jalview.api.AlignmentViewPanel; import jalview.api.FeatureRenderer; -import jalview.api.SequenceRenderer; +import jalview.api.SequenceRendererI; import jalview.appletgui.AlignFrame; import jalview.bin.JalviewLite; import jalview.datamodel.SequenceI; @@ -32,10 +32,8 @@ import jalview.structure.StructureListener; import jalview.structure.StructureMapping; import jalview.structure.StructureMappingcommandSet; import jalview.structure.StructureSelectionManager; +import jalview.util.HttpUtils; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -72,8 +70,8 @@ import java.util.List; * @author Jim Procter (jprocter) * */ -public class MouseOverStructureListener extends JSFunctionExec implements - JsCallBack, StructureListener +public class MouseOverStructureListener extends JSFunctionExec + implements JsCallBack, StructureListener { String _listenerfn; @@ -96,15 +94,16 @@ public class MouseOverStructureListener extends JSFunctionExec implements } /** - * Returns the first of file, file prefixed by document base, file prefixed by - * codebase which can be resolved to a valid URL. If none can, returns the - * input parameter value. + * Returns the first out of: file, file prefixed by document base, or file + * prefixed by codebase which can be resolved to a valid URL. If none can, + * returns the input parameter value. * * @param file */ public String resolveModelFile(String file) { - if (isValidUrl(file)) + // TODO reuse JalviewLite.LoadingThread.addProtocol instead + if (HttpUtils.isValidUrl(file)) { return file; } @@ -112,13 +111,13 @@ public class MouseOverStructureListener extends JSFunctionExec implements String db = jvlite.getDocumentBase().toString(); db = db.substring(0, db.lastIndexOf("/")); String docBaseFile = db + "/" + file; - if (isValidUrl(docBaseFile)) + if (HttpUtils.isValidUrl(docBaseFile)) { return docBaseFile; } String cb = jvlite.getCodeBase() + file; - if (isValidUrl(cb)) + if (HttpUtils.isValidUrl(cb)) { return cb; } @@ -126,45 +125,8 @@ public class MouseOverStructureListener extends JSFunctionExec implements return file; } - /** - * Returns true if it is possible to open an input stream at the given URL, - * else false. The input stream is closed. - * - * @param file - * @return - */ - private boolean isValidUrl(String file) - { - InputStream is = null; - try - { - is = new URL(file).openStream(); - if (is != null) - { - return true; - } - } catch (IOException x) - { - // MalformedURLException, FileNotFoundException - return false; - } finally - { - if (is != null) - { - try - { - is.close(); - } catch (IOException e) - { - // ignore - } - } - } - return false; - } - @Override - public String[] getPdbFile() + public String[] getStructureFiles() { return modelSet; } @@ -190,9 +152,9 @@ public class MouseOverStructureListener extends JSFunctionExec implements // JBPComment: yep - this is right! the Javascript harness uses the // absolute pdbFile URI to locate the PDB file in the external viewer executeJavascriptFunction(_listenerfn, - new String[] { "mouseover", "" + atom.getPdbFile(), - "" + atom.getChain(), "" + (atom.getPdbResNum()), - "" + atom.getAtomIndex() }); + new String[] + { "mouseover", "" + atom.getPdbFile(), "" + atom.getChain(), + "" + (atom.getPdbResNum()), "" + atom.getAtomIndex() }); } catch (Exception ex) { System.err.println("Couldn't execute callback with " + _listenerfn @@ -211,8 +173,8 @@ public class MouseOverStructureListener extends JSFunctionExec implements if (JalviewLite.debug) { - System.err.println(this.getClass().getName() + " modelSet[0]: " - + modelSet[0]); + System.err.println( + this.getClass().getName() + " modelSet[0]: " + modelSet[0]); ssm.reportMapping(); } @@ -241,15 +203,17 @@ public class MouseOverStructureListener extends JSFunctionExec implements // } } - SequenceRenderer sr = ((jalview.appletgui.AlignmentPanel) source) + SequenceRendererI sr = ((jalview.appletgui.AlignmentPanel) source) .getSequenceRenderer(); FeatureRenderer fr = ((jalview.appletgui.AlignmentPanel) source).av - .isShowSequenceFeatures() ? new jalview.appletgui.FeatureRenderer( - ((jalview.appletgui.AlignmentPanel) source).av) : null; + .isShowSequenceFeatures() + ? new jalview.appletgui.FeatureRenderer( + ((jalview.appletgui.AlignmentPanel) source).av) + : null; if (fr != null) { - ((jalview.appletgui.FeatureRenderer) fr) - .transferSettings(((jalview.appletgui.AlignmentPanel) source) + ((jalview.appletgui.FeatureRenderer) fr).transferSettings( + ((jalview.appletgui.AlignmentPanel) source) .getFeatureRenderer()); } ; @@ -259,8 +223,8 @@ public class MouseOverStructureListener extends JSFunctionExec implements ArrayList ccomands = new ArrayList(); ArrayList pdbfn = new ArrayList(); StructureMappingcommandSet[] colcommands = JmolCommands - .getColourBySequenceCommand(ssm, modelSet, sequence, sr, fr, - ((AlignmentViewPanel) source).getAlignment()); + .getColourBySequenceCommand(ssm, modelSet, sequence, sr, + (AlignmentViewPanel) source, true); if (colcommands == null) { return; @@ -281,27 +245,25 @@ public class MouseOverStructureListener extends JSFunctionExec implements System.arraycopy(ccset, 0, ccomandset, sz, ccset.length); sz += ccset.length; } - if (jvlite.isJsMessageSetChanged( - mclass = "colourstruct", + if (jvlite.isJsMessageSetChanged(mclass = "colourstruct", mhandle = ((jalview.appletgui.AlignmentPanel) source).av - .getViewId(), ccomandset)) + .getViewId(), + ccomandset)) { jvlite.setJsMessageSet(mclass, mhandle, ccomandset); // and notify javascript handler - String st[] = new String[] { - "colourstruct", + String st[] = new String[] { "colourstruct", "" + ((jalview.appletgui.AlignmentPanel) source).av.getViewId(), - "" + ccomandset.length, - jvlite.arrayToSeparatorList(pdbfn.toArray(new String[pdbfn - .size()])) }; + "" + ccomandset.length, jvlite.arrayToSeparatorList( + pdbfn.toArray(new String[pdbfn.size()])) }; try { executeJavascriptFunction(true, _listenerfn, st); } catch (Exception ex) { - System.err.println("Couldn't execute callback with " - + _listenerfn + " using args { " + st[0] + ", " + st[1] - + ", " + st[2] + "," + st[3] + "}"); // + ","+st[4]+"\n"); + System.err.println("Couldn't execute callback with " + _listenerfn + + " using args { " + st[0] + ", " + st[1] + ", " + st[2] + + "," + st[3] + "}"); // + ","+st[4]+"\n"); ex.printStackTrace(); } @@ -336,12 +298,6 @@ public class MouseOverStructureListener extends JSFunctionExec implements return _listenerfn; } - public void finalise() - { - jvlite = null; - super.finalize(); - } - @Override public void releaseReferences(Object svl) {