X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2FMouseOverStructureListener.java;h=c390b172c150776d8496143e4a62483001317ca9;hb=d6cace53173ae859bfd93f5e8a13be427864afd1;hp=2ef957e0b8f8b3e2e31fbafba5cd343a248cae8e;hpb=4d7f98a6dd54d9863ba449ec79dcd95d25ed863d;p=jalview.git diff --git a/src/jalview/javascript/MouseOverStructureListener.java b/src/jalview/javascript/MouseOverStructureListener.java index 2ef957e..c390b17 100644 --- a/src/jalview/javascript/MouseOverStructureListener.java +++ b/src/jalview/javascript/MouseOverStructureListener.java @@ -32,6 +32,7 @@ import jalview.structure.StructureListener; import jalview.structure.StructureMapping; import jalview.structure.StructureMappingcommandSet; import jalview.structure.StructureSelectionManager; +import jalview.util.HttpUtils; import java.util.ArrayList; import java.util.List; @@ -87,49 +88,45 @@ public class MouseOverStructureListener extends JSFunctionExec implements { for (int i = 0; i < modelSet.length; i++) { - // resolve a real filename - try - { - if (new java.net.URL(modelSet[i]).openConnection() != null) - { - continue; - } - } catch (Exception x) - { - } - ; - try - { - String db = jvlite.getDocumentBase().toString(); - db = db.substring(0, db.lastIndexOf("/")); - if (new java.net.URL(db + "/" + modelSet[i]).openConnection() != null) - { - modelSet[i] = db + "/" + modelSet[i]; - continue; - } - } catch (Exception x) - { - } - ; - try - { - if (new java.net.URL(jvlite.getCodeBase() + modelSet[i]) - .openConnection() != null) - { - modelSet[i] = jvlite.getCodeBase() + modelSet[i]; - continue; - } - } catch (Exception x) - { - } - ; - + modelSet[i] = resolveModelFile(modelSet[i]); } } } + /** + * 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) + { + // TODO reuse JalviewLite.LoadingThread.addProtocol instead + if (HttpUtils.isValidUrl(file)) + { + return file; + } + + String db = jvlite.getDocumentBase().toString(); + db = db.substring(0, db.lastIndexOf("/")); + String docBaseFile = db + "/" + file; + if (HttpUtils.isValidUrl(docBaseFile)) + { + return docBaseFile; + } + + String cb = jvlite.getCodeBase() + file; + if (HttpUtils.isValidUrl(cb)) + { + return cb; + } + + return file; + } + @Override - public String[] getPdbFile() + public String[] getStructureFiles() { return modelSet; } @@ -224,8 +221,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); if (colcommands == null) { return; @@ -301,7 +298,8 @@ public class MouseOverStructureListener extends JSFunctionExec implements return _listenerfn; } - public void finalise() + @Override + public void finalize() throws Throwable { jvlite = null; super.finalize();