X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fjmol%2FJalviewJmolBinding.java;h=67b688cf719fd8518901bf34a398fea91482229a;hb=6b71746c98f7c1118b474b0b920db3bd7b2a15c0;hp=09303c760d791fb90d9fdce2387b6ecfd2f7d581;hpb=4c5b46336a4a57c09b4a1d2ab13c81b0958a6c9e;p=jalview.git diff --git a/src/jalview/ext/jmol/JalviewJmolBinding.java b/src/jalview/ext/jmol/JalviewJmolBinding.java index 09303c7..67b688c 100644 --- a/src/jalview/ext/jmol/JalviewJmolBinding.java +++ b/src/jalview/ext/jmol/JalviewJmolBinding.java @@ -1,5 +1,5 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5) + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle * * This file is part of Jalview. @@ -43,7 +43,8 @@ import org.jmol.viewer.Viewer; import jalview.schemes.*; public abstract class JalviewJmolBinding implements StructureListener, - JmolStatusListener, SequenceStructureBinding, JmolSelectionListener, ComponentListener + JmolStatusListener, SequenceStructureBinding, + JmolSelectionListener, ComponentListener { /** @@ -80,6 +81,8 @@ public abstract class JalviewJmolBinding implements StructureListener, public Vector chainNames; + Hashtable chainFile; + /** * array of target chains for seuqences - tied to pdbentry and sequence[] */ @@ -113,7 +116,7 @@ public abstract class JalviewJmolBinding implements StructureListener, public PDBEntry[] pdbentry; /** - * datasource protocol for access to PDBEntry + * datasource protocol for access to PDBEntrylatest */ String protocol = null; @@ -210,8 +213,9 @@ public abstract class JalviewJmolBinding implements StructureListener, p = mlength; mlength = lbl.indexOf(":", p); } while (p < mlength && mlength < (lbl.length() - 2)); + // TODO: lookup each pdb id and recover proper model number for it. cmd.append(":" + lbl.substring(mlength + 1) + " /" - + getModelNum(lbl.substring(0, mlength)) + " or "); + + (1 + getModelNum((String) chainFile.get(lbl))) + " or "); } if (cmd.length() > 0) cmd.setLength(cmd.length() - 4); @@ -229,8 +233,15 @@ public abstract class JalviewJmolBinding implements StructureListener, viewer.setJmolStatusListener(null); lastCommand = null; viewer = null; + releaseUIResources(); } + /** + * called by JalviewJmolbinding after closeViewer is called - release any + * resources and references so they can be garbage collected. + */ + protected abstract void releaseUIResources(); + public void colourByChain() { colourBySequence = false; @@ -306,6 +317,7 @@ public abstract class JalviewJmolBinding implements StructureListener, String isel[] = new String[files.length]; // reference structure - all others are superposed in it String[] targetC = new String[files.length]; + String[] chainNames = new String[files.length]; for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++) { StructureMapping[] mapping = ssm.getMapping(files[pdbfnum]); @@ -368,6 +380,7 @@ public abstract class JalviewJmolBinding implements StructureListener, { targetC[pdbfnum] = ":" + mapping[m].getChain(); } + chainNames[pdbfnum] = mapping[m].getPdbId()+targetC[pdbfnum]; // move on to next pdb file s = sequence[pdbfnum].length; break; @@ -450,7 +463,12 @@ public abstract class JalviewJmolBinding implements StructureListener, { continue; } - command.append("compare "); + command.append("echo "); + command.append("\"Superposing ("); + command.append(chainNames[pdbfnum]); + command.append(") against reference ("); + command.append(chainNames[refStructure]); + command.append(")\";\ncompare "); command.append("{"); command.append(1 + pdbfnum); command.append(".1} {"); @@ -543,7 +561,7 @@ public abstract class JalviewJmolBinding implements StructureListener, Color col = sr.getResidueBoxColour(sequence[pdbfnum][s], r); - if (showFeatures) + if (showFeatures && fr != null) col = fr.findFeatureColour(col, sequence[pdbfnum][s], r); String newSelcom = (mapping[m].getChain() != " " ? ":" + mapping[m].getChain() : "") @@ -1051,6 +1069,7 @@ public abstract class JalviewJmolBinding implements StructureListener, String[] oldmodels = modelFileNames; modelFileNames = null; chainNames = new Vector(); + chainFile = new Hashtable(); boolean notifyLoaded = false; String[] modelfilenames = getPdbFile(); ssm = StructureSelectionManager.getStructureSelectionManager(); @@ -1160,8 +1179,10 @@ public abstract class JalviewJmolBinding implements StructureListener, // add an entry for every chain in the model for (int i = 0; i < pdb.chains.size(); i++) { - chainNames.addElement(new String(pdb.id + ":" - + ((MCview.PDBChain) pdb.chains.elementAt(i)).id)); + String chid = new String(pdb.id + ":" + + ((MCview.PDBChain) pdb.chains.elementAt(i)).id); + chainFile.put(chid, pdbentry[pe].getFile()); + chainNames.addElement(chid); } notifyLoaded = true; } @@ -1314,7 +1335,7 @@ public abstract class JalviewJmolBinding implements StructureListener, * @param codeBase * @param commandOptions */ - public void allocateViewer(Component renderPanel, boolean jmolfileio, + public void allocateViewer(Container renderPanel, boolean jmolfileio, String htmlName, URL documentBase, URL codeBase, String commandOptions) { @@ -1337,7 +1358,7 @@ public abstract class JalviewJmolBinding implements StructureListener, * @param buttonsToShow * - buttons to show on the console, in ordr */ - public void allocateViewer(Component renderPanel, boolean jmolfileio, + public void allocateViewer(Container renderPanel, boolean jmolfileio, String htmlName, URL documentBase, URL codeBase, String commandOptions, final Container consolePanel, String buttonsToShow) @@ -1351,9 +1372,8 @@ public abstract class JalviewJmolBinding implements StructureListener, if (consolePanel != null) { consolePanel.addComponentListener(this); - - } + } } @@ -1362,30 +1382,25 @@ public abstract class JalviewJmolBinding implements StructureListener, protected org.jmol.api.JmolAppConsoleInterface console = null; -@Override -public void componentResized(ComponentEvent e) -{ - -} + public void componentResized(ComponentEvent e) + { -@Override -public void componentMoved(ComponentEvent e) -{ - -} + } -@Override -public void componentShown(ComponentEvent e) -{ - showConsole(true); -} + public void componentMoved(ComponentEvent e) + { -@Override -public void componentHidden(ComponentEvent e) -{ - showConsole(false); -} + } + public void componentShown(ComponentEvent e) + { + showConsole(true); + } + + public void componentHidden(ComponentEvent e) + { + showConsole(false); + } public void setLoadingFromArchive(boolean loadingFromArchive) {