X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fjmol%2FJalviewJmolBinding.java;h=c6871a9d0c6a403f08a70ac75c4c38e54976681e;hb=153dd62dc91da13ae732600e6ea55ddbe15eab39;hp=31f91eea3c62577d74a38d366d9153bfe0c09c52;hpb=201bc30894442f6bc28ae412199e6f776eb42b5f;p=jalview.git diff --git a/src/jalview/ext/jmol/JalviewJmolBinding.java b/src/jalview/ext/jmol/JalviewJmolBinding.java index 31f91ee..c6871a9 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 + 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[] */ @@ -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; @@ -543,7 +554,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 +1062,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 +1172,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 +1328,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 +1351,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) @@ -1348,75 +1362,42 @@ public abstract class JalviewJmolBinding implements StructureListener, commandOptions, this); console = createJmolConsole(viewer, consolePanel, buttonsToShow); - if (console != null) + if (consolePanel != null) { - viewer.setConsole(new JmolAppConsoleInterface() - { - - @Override - public JmolScriptEditorInterface getScriptEditor() - { - return console.getScriptEditor(); - } - - @Override - public JmolAppConsoleInterface getAppConsole(Viewer viewer, - Component display) - { - return console; - } + consolePanel.addComponentListener(this); - public String getText() - { - return console.getText(); - } - - @Override - public Object getMyMenuBar() - { - return console.getMyMenuBar(); - } - - @Override - public void setVisible(boolean b) - { - showConsole(b); - } + } - @Override - public void sendConsoleEcho(String strEcho) - { - console.sendConsoleEcho(strEcho); + } - } + protected abstract JmolAppConsoleInterface createJmolConsole( + JmolViewer viewer2, Container consolePanel, String buttonsToShow); - @Override - public void sendConsoleMessage(String strInfo) - { - console.sendConsoleMessage(strInfo); - } + protected org.jmol.api.JmolAppConsoleInterface console = null; - @Override - public void zap() - { - console.zap(); - } + @Override + public void componentResized(ComponentEvent e) + { - @Override - public void dispose() - { - console.dispose(); - } + } - }); - } + @Override + public void componentMoved(ComponentEvent e) + { } - protected abstract JmolAppConsoleInterface createJmolConsole( - JmolViewer viewer2, Container consolePanel, String buttonsToShow); + @Override + public void componentShown(ComponentEvent e) + { + showConsole(true); + } - protected org.jmol.api.JmolAppConsoleInterface console = null; + @Override + public void componentHidden(ComponentEvent e) + { + showConsole(false); + } public void setLoadingFromArchive(boolean loadingFromArchive) {