X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fjmol%2FJalviewJmolBinding.java;h=9569bd0482d0a50f68232c83a3469e1615056b2b;hb=424c56371cd59181b994d7e3e8e91c4b7ba0b507;hp=8ee22964da54980984e13c3f151dda1b403f81ad;hpb=b2f9a8d7bce642ff4011bc6d49e02bb0569fbb11;p=jalview.git
diff --git a/src/jalview/ext/jmol/JalviewJmolBinding.java b/src/jalview/ext/jmol/JalviewJmolBinding.java
index 8ee2296..9569bd0 100644
--- a/src/jalview/ext/jmol/JalviewJmolBinding.java
+++ b/src/jalview/ext/jmol/JalviewJmolBinding.java
@@ -1,19 +1,21 @@
/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
* Copyright (C) 2014 The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along with Jalview. If not, see .
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.ext.jmol;
@@ -21,8 +23,6 @@ package jalview.ext.jmol;
import jalview.api.AlignmentViewPanel;
import jalview.api.FeatureRenderer;
import jalview.api.SequenceRenderer;
-import jalview.api.SequenceStructureBinding;
-import jalview.api.StructureSelectionManagerProvider;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.PDBEntry;
@@ -30,9 +30,11 @@ import jalview.datamodel.SequenceI;
import jalview.io.AppletFormatAdapter;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ResidueProperties;
-import jalview.structure.StructureListener;
import jalview.structure.StructureMapping;
+import jalview.structure.StructureMappingcommandSet;
import jalview.structure.StructureSelectionManager;
+import jalview.structures.models.AAStructureBindingModel;
+import jalview.util.MessageManager;
import java.awt.Color;
import java.awt.Container;
@@ -41,7 +43,6 @@ import java.awt.event.ComponentListener;
import java.io.File;
import java.net.URL;
import java.security.AccessControlException;
-import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;
import java.util.Vector;
@@ -54,43 +55,18 @@ import org.jmol.api.JmolViewer;
import org.jmol.constant.EnumCallback;
import org.jmol.popup.JmolPopup;
-public abstract class JalviewJmolBinding implements StructureListener,
- JmolStatusListener, SequenceStructureBinding,
- JmolSelectionListener, ComponentListener,
- StructureSelectionManagerProvider
-
+public abstract class JalviewJmolBinding extends AAStructureBindingModel
+ implements JmolStatusListener, JmolSelectionListener,
+ ComponentListener
{
- /**
- * set if Jmol state is being restored from some source - instructs binding
- * not to apply default display style when structure set is updated for first
- * time.
- */
- private boolean loadingFromArchive = false;
-
- /**
- * second flag to indicate if the jmol viewer should ignore sequence colouring
- * events from the structure manager because the GUI is still setting up
- */
- private boolean loadingFinished = true;
-
- /**
+ /*
* state flag used to check if the Jmol viewer's paint method can be called
*/
private boolean finishedInit = false;
- public boolean isFinishedInit()
- {
- return finishedInit;
- }
-
- public void setFinishedInit(boolean finishedInit)
- {
- this.finishedInit = finishedInit;
- }
-
boolean allChainsSelected = false;
- /**
+ /*
* when true, try to search the associated datamodel for sequences that are
* associated with any unknown structures in the Jmol view.
*/
@@ -102,18 +78,11 @@ public abstract class JalviewJmolBinding implements StructureListener,
Hashtable chainFile;
- /**
- * array of target chains for seuqences - tied to pdbentry and sequence[]
- */
- protected String[][] chains;
-
- boolean colourBySequence = true;
-
StringBuffer eval = new StringBuffer();
public String fileLoadingError;
- /**
+ /*
* the default or current model displayed if the model cannot be identified
* from the selection message
*/
@@ -132,37 +101,15 @@ public abstract class JalviewJmolBinding implements StructureListener,
*/
String[] modelFileNames = null;
- public PDBEntry[] pdbentry;
-
- /**
- * datasource protocol for access to PDBEntrylatest
- */
- String protocol = null;
-
StringBuffer resetLastRes = new StringBuffer();
- /**
- * sequences mapped to each pdbentry
- */
- public SequenceI[][] sequence;
-
- public StructureSelectionManager ssm;
-
public JmolViewer viewer;
public JalviewJmolBinding(StructureSelectionManager ssm,
PDBEntry[] pdbentry, SequenceI[][] sequenceIs, String[][] chains,
String protocol)
{
- this.ssm = ssm;
- this.sequence = sequenceIs;
- this.chains = chains;
- this.pdbentry = pdbentry;
- this.protocol = protocol;
- if (chains == null)
- {
- this.chains = new String[pdbentry.length][];
- }
+ super(ssm, pdbentry, sequenceIs, chains, protocol);
/*
* viewer = JmolViewer.allocateViewer(renderPanel, new SmarterJmolAdapter(),
* "jalviewJmol", ap.av.applet .getDocumentBase(),
@@ -173,10 +120,11 @@ public abstract class JalviewJmolBinding implements StructureListener,
}
public JalviewJmolBinding(StructureSelectionManager ssm,
- JmolViewer viewer2)
+ SequenceI[][] seqs, JmolViewer theViewer)
{
- this.ssm = ssm;
- viewer = viewer2;
+ super(ssm, seqs);
+
+ viewer = theViewer;
viewer.setJmolStatusListener(this);
viewer.addSelectionListener(this);
}
@@ -189,30 +137,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
*/
public String getViewerTitle()
{
- if (sequence == null || pdbentry == null || sequence.length < 1
- || pdbentry.length < 1 || sequence[0].length < 1)
- {
- return ("Jalview Jmol Window");
- }
- // TODO: give a more informative title when multiple structures are
- // displayed.
- StringBuffer title = new StringBuffer(sequence[0][0].getName() + ":"
- + pdbentry[0].getId());
-
- if (pdbentry[0].getProperty() != null)
- {
- if (pdbentry[0].getProperty().get("method") != null)
- {
- title.append(" Method: ");
- title.append(pdbentry[0].getProperty().get("method"));
- }
- if (pdbentry[0].getProperty().get("chains") != null)
- {
- title.append(" Chain:");
- title.append(pdbentry[0].getProperty().get("chains"));
- }
- }
- return title.toString();
+ return getViewerTitle("JMol", true);
}
/**
@@ -241,7 +166,9 @@ public abstract class JalviewJmolBinding implements StructureListener,
+ (1 + getModelNum((String) chainFile.get(lbl))) + " or ");
}
if (cmd.length() > 0)
+ {
cmd.setLength(cmd.length() - 4);
+ }
evalStateCommand("select *;restrict " + cmd + ";cartoon;center " + cmd);
}
@@ -249,7 +176,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
{
viewer.setModeMouse(org.jmol.viewer.JmolConstants.MOUSE_NONE);
// remove listeners for all structures in viewer
- ssm.removeStructureViewerListener(this, this.getPdbFile());
+ getSsm().removeStructureViewerListener(this, this.getPdbFile());
// and shut down jmol
viewer.evalStringQuiet("zap");
viewer.setJmolStatusListener(null);
@@ -258,12 +185,6 @@ public abstract class JalviewJmolBinding implements StructureListener,
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;
@@ -328,16 +249,18 @@ public abstract class JalviewJmolBinding implements StructureListener,
String[] files = getPdbFile();
// check to see if we are still waiting for Jmol files
- long starttime=System.currentTimeMillis();
- boolean waiting=true;
- do {
- waiting=false;
- for (String file:files)
+ long starttime = System.currentTimeMillis();
+ boolean waiting = true;
+ do
+ {
+ waiting = false;
+ for (String file : files)
{
- try {
+ try
+ {
// HACK - in Jalview 2.8 this call may not be threadsafe so we catch
// every possible exception
- StructureMapping[] sm = ssm.getMapping(file);
+ StructureMapping[] sm = getSsm().getMapping(file);
if (sm == null || sm.length == 0)
{
waiting = true;
@@ -351,10 +274,12 @@ public abstract class JalviewJmolBinding implements StructureListener,
}
}
// we wait around for a reasonable time before we give up
- } while (waiting && System.currentTimeMillis()<(10000+1000*files.length+starttime));
+ } while (waiting
+ && System.currentTimeMillis() < (10000 + 1000 * files.length + starttime));
if (waiting)
{
- System.err.println("RUNTIME PROBLEM: Jmol seems to be taking a long time to process all the structures.");
+ System.err
+ .println("RUNTIME PROBLEM: Jmol seems to be taking a long time to process all the structures.");
return;
}
StringBuffer selectioncom = new StringBuffer();
@@ -413,20 +338,21 @@ public abstract class JalviewJmolBinding implements StructureListener,
String[] chainNames = new String[files.length];
for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++)
{
- StructureMapping[] mapping = ssm.getMapping(files[pdbfnum]);
+ StructureMapping[] mapping = getSsm().getMapping(files[pdbfnum]);
// RACE CONDITION - getMapping only returns Jmol loaded filenames once
// Jmol callback has completed.
if (mapping == null || mapping.length < 1)
{
- throw new Error("Implementation error - Jmol seems to be still working on getting its data - report at http://issues.jalview.org/browse/JAL-1016");
+ throw new Error(MessageManager.getString("error.implementation_error_jmol_getting_data"));
}
int lastPos = -1;
- for (int s = 0; s < sequence[pdbfnum].length; s++)
+ final int sequenceCountForPdbFile = getSequence()[pdbfnum].length;
+ for (int s = 0; s < sequenceCountForPdbFile; s++)
{
for (int sp, m = 0; m < mapping.length; m++)
{
- if (mapping[m].getSequence() == sequence[pdbfnum][s]
- && (sp = alignment.findIndex(sequence[pdbfnum][s])) > -1)
+ if (mapping[m].getSequence() == getSequence()[pdbfnum][s]
+ && (sp = alignment.findIndex(getSequence()[pdbfnum][s])) > -1)
{
if (refStructure == -1)
{
@@ -478,13 +404,13 @@ public abstract class JalviewJmolBinding implements StructureListener,
chainNames[pdbfnum] = mapping[m].getPdbId()
+ targetC[pdbfnum];
// move on to next pdb file
- s = sequence[pdbfnum].length;
+ s = getSequence()[pdbfnum].length;
break;
}
}
}
}
-
+
// TODO: consider bailing if nmatched less than 4 because superposition
// not
// well defined.
@@ -556,14 +482,17 @@ public abstract class JalviewJmolBinding implements StructureListener,
{
selectioncom.append("|");
}
- } else {
+ }
+ else
+ {
selcom[pdbfnum] = null;
}
}
}
for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++)
{
- if (pdbfnum == refStructure || selcom[pdbfnum]==null || selcom[refStructure]==null)
+ if (pdbfnum == refStructure || selcom[pdbfnum] == null
+ || selcom[refStructure] == null)
{
continue;
}
@@ -572,7 +501,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
command.append(chainNames[pdbfnum]);
command.append(") against reference (");
command.append(chainNames[refStructure]);
- command.append(")\";\ncompare "+nSeconds);
+ command.append(")\";\ncompare " + nSeconds);
command.append("{");
command.append(1 + pdbfnum);
command.append(".1} {");
@@ -631,9 +560,11 @@ public abstract class JalviewJmolBinding implements StructureListener,
public void colourBySequence(boolean showFeatures,
jalview.api.AlignmentViewPanel alignmentv)
{
- if (!colourBySequence || !loadingFinished)
+ if (!colourBySequence || !isLoadingFinished())
+ {
return;
- if (ssm == null)
+ }
+ if (getSsm() == null)
{
return;
}
@@ -648,23 +579,38 @@ public abstract class JalviewJmolBinding implements StructureListener,
}
AlignmentI alignment = alignmentv.getAlignment();
- for (jalview.structure.StructureMappingcommandSet cpdbbyseq : JmolCommands
- .getColourBySequenceCommand(ssm, files, sequence, sr, fr,
- alignment))
+ for (jalview.structure.StructureMappingcommandSet cpdbbyseq : getColourBySequenceCommands(files, sr, fr, alignment))
+ {
for (String cbyseq : cpdbbyseq.commands)
{
- evalStateCommand(cbyseq);
+ executeWhenReady(cbyseq);
}
+ }
}
- public boolean isColourBySequence()
+ /**
+ * @param files
+ * @param sr
+ * @param fr
+ * @param alignment
+ * @return
+ */
+ protected StructureMappingcommandSet[] getColourBySequenceCommands(
+ String[] files, SequenceRenderer sr, FeatureRenderer fr,
+ AlignmentI alignment)
{
- return colourBySequence;
+ return JmolCommands
+ .getColourBySequenceCommand(getSsm(), files, getSequence(), sr,
+ fr,
+ alignment);
}
- public void setColourBySequence(boolean colourBySequence)
+ /**
+ * @param command
+ */
+ protected void executeWhenReady(String command)
{
- this.colourBySequence = colourBySequence;
+ evalStateCommand(command);
}
public void createImage(String file, String type, int quality)
@@ -704,7 +650,9 @@ public abstract class JalviewJmolBinding implements StructureListener,
String pdbfile)
{
if (getModelNum(pdbfile) < 0)
+ {
return null;
+ }
// TODO: verify atomIndex is selecting correct model.
return new Color(viewer.getAtomArgb(atomIndex));
}
@@ -737,7 +685,9 @@ public abstract class JalviewJmolBinding implements StructureListener,
for (int i = 0; i < mfn.length; i++)
{
if (mfn[i].equalsIgnoreCase(modelFileName))
+ {
return i;
+ }
}
return -1;
}
@@ -808,7 +758,8 @@ public abstract class JalviewJmolBinding implements StructureListener,
/**
* map from string to applet
*/
- public Map getRegistryInfo()
+ @Override
+ public Map getRegistryInfo()
{
// TODO Auto-generated method stub
return null;
@@ -946,8 +897,10 @@ public abstract class JalviewJmolBinding implements StructureListener,
String chainId;
if (strInfo.indexOf(":") > -1)
+ {
chainId = strInfo.substring(strInfo.indexOf(":") + 1,
strInfo.indexOf("."));
+ }
else
{
chainId = " ";
@@ -985,7 +938,9 @@ public abstract class JalviewJmolBinding implements StructureListener,
;
}
if (lastMessage == null || !lastMessage.equals(strInfo))
- ssm.mouseOverStructure(pdbResNum, chainId, pdbfilename);
+ {
+ getSsm().mouseOverStructure(pdbResNum, chainId, pdbfilename);
+ }
lastMessage = strInfo;
}
@@ -1019,13 +974,17 @@ public abstract class JalviewJmolBinding implements StructureListener,
int chainSeparator = strInfo.indexOf(":");
int p = 0;
if (chainSeparator == -1)
+ {
chainSeparator = strInfo.indexOf(".");
+ }
String picked = strInfo.substring(strInfo.indexOf("]") + 1,
chainSeparator);
String mdlString = "";
if ((p = strInfo.indexOf(":")) > -1)
+ {
picked += strInfo.substring(p + 1, strInfo.indexOf("."));
+ }
if ((p = strInfo.indexOf("/")) > -1)
{
@@ -1197,7 +1156,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
}
// deregister the Jmol instance for these structures - we'll add
// ourselves again at the end for the current structure set.
- ssm.removeStructureViewerListener(this, oldmfn);
+ getSsm().removeStructureViewerListener(this, oldmfn);
}
}
refreshPdbEntries();
@@ -1217,70 +1176,68 @@ public abstract class JalviewJmolBinding implements StructureListener,
+ ".0", "PDB");
pdbfhash = "" + pdbfile.hashCode();
}
- if (pdbentry != null)
- {
// search pdbentries and sequences to find correct pdbentry for this
// model
- for (int pe = 0; pe < pdbentry.length; pe++)
+ for (int pe = 0; pe < getPdbCount(); pe++)
+ {
+ boolean matches = false;
+ if (fileName == null)
{
- boolean matches = false;
- if (fileName == null)
+ if (false)
+ // see JAL-623 - need method of matching pasted data up
{
- if (false)
- // see JAL-623 - need method of matching pasted data up
- {
- pdb = ssm.setMapping(sequence[pe], chains[pe], pdbfile,
- AppletFormatAdapter.PASTE);
- pdbentry[modelnum].setFile("INLINE" + pdb.id);
- matches = true;
- foundEntry = true;
- }
+ pdb = getSsm().setMapping(getSequence()[pe], getChains()[pe],
+ pdbfile, AppletFormatAdapter.PASTE);
+ getPdbEntry(modelnum).setFile("INLINE" + pdb.id);
+ matches = true;
+ foundEntry = true;
}
- else
+ }
+ else
+ {
+ File fl;
+ if (matches = (fl = new File(getPdbEntry(pe).getFile()))
+ .equals(new File(fileName)))
{
- File fl;
- if (matches = (fl = new File(pdbentry[pe].getFile()))
- .equals(new File(fileName)))
+ foundEntry = true;
+ // TODO: Jmol can in principle retrieve from CLASSLOADER but
+ // this
+ // needs
+ // to be tested. See mantis bug
+ // https://mantis.lifesci.dundee.ac.uk/view.php?id=36605
+ String protocol = AppletFormatAdapter.URL;
+ try
{
- foundEntry = true;
- // TODO: Jmol can in principle retrieve from CLASSLOADER but
- // this
- // needs
- // to be tested. See mantis bug
- // https://mantis.lifesci.dundee.ac.uk/view.php?id=36605
- String protocol = AppletFormatAdapter.URL;
- try
- {
- if (fl.exists())
- {
- protocol = AppletFormatAdapter.FILE;
- }
- } catch (Exception e)
- {
- } catch (Error e)
+ if (fl.exists())
{
+ protocol = AppletFormatAdapter.FILE;
}
- // Explicitly map to the filename used by Jmol ;
- pdb = ssm.setMapping(sequence[pe], chains[pe], fileName,
- protocol);
- // pdbentry[pe].getFile(), protocol);
-
+ } catch (Exception e)
+ {
+ } catch (Error e)
+ {
}
+ // Explicitly map to the filename used by Jmol ;
+ pdb = getSsm().setMapping(getSequence()[pe], getChains()[pe],
+ fileName, protocol);
+ // pdbentry[pe].getFile(), protocol);
+
}
- if (matches)
+ }
+ if (matches)
+ {
+ // add an entry for every chain in the model
+ for (int i = 0; i < pdb.chains.size(); i++)
{
- // add an entry for every chain in the model
- for (int i = 0; i < pdb.chains.size(); i++)
- {
- String chid = new String(pdb.id + ":"
- + ((MCview.PDBChain) pdb.chains.elementAt(i)).id);
- chainFile.put(chid, fileName);
- chainNames.addElement(chid);
- }
- notifyLoaded = true;
+ String chid = new String(pdb.id + ":"
+ + pdb.chains.elementAt(i).id);
+ chainFile.put(chid, fileName);
+ chainNames.addElement(chid);
}
+ notifyLoaded = true;
}
}
+
if (!foundEntry && associateNewStructs)
{
// this is a foreign pdb file that jalview doesn't know about - add
@@ -1309,7 +1266,7 @@ public abstract class JalviewJmolBinding implements StructureListener,
}
// register ourselves as a listener and notify the gui that it needs to
// update itself.
- ssm.addStructureViewerListener(this);
+ getSsm().addStructureViewerListener(this);
if (notifyLoaded)
{
FeatureRenderer fr = getFeatureRenderer(null);
@@ -1366,21 +1323,23 @@ public abstract class JalviewJmolBinding implements StructureListener,
colourBySequence = false;
if (cs == null)
+ {
return;
+ }
- String res;
int index;
Color col;
jmolHistory(false);
// TODO: Switch between nucleotide or aa selection expressions
- Enumeration en = ResidueProperties.aa3Hash.keys();
- StringBuffer command = new StringBuffer("select *;color white;");
- while (en.hasMoreElements())
+ StringBuilder command = new StringBuilder(128);
+ command.append("select *;color white;");
+ for (String res : ResidueProperties.aa3Hash.keySet())
{
- res = en.nextElement().toString();
- index = ((Integer) ResidueProperties.aa3Hash.get(res)).intValue();
+ index = ResidueProperties.aa3Hash.get(res).intValue();
if (index > 20)
+ {
continue;
+ }
col = cs.findColour(ResidueProperties.aa[index].charAt(0));
@@ -1479,211 +1438,93 @@ public abstract class JalviewJmolBinding implements StructureListener,
protected org.jmol.api.JmolAppConsoleInterface console = null;
- public void componentResized(ComponentEvent e)
- {
-
- }
-
- public void componentMoved(ComponentEvent e)
+ public void setBackgroundColour(java.awt.Color col)
{
-
+ jmolHistory(false);
+ viewer.evalStringQuiet("background [" + col.getRed() + ","
+ + col.getGreen() + "," + col.getBlue() + "];");
+ jmolHistory(true);
}
- public void componentShown(ComponentEvent e)
+ /**
+ *
+ * @param pdbfile
+ * @return text report of alignment between pdbfile and any associated
+ * alignment sequences
+ */
+ public String printMapping(String pdbfile)
{
- showConsole(true);
+ return getSsm().printMapping(pdbfile);
}
- public void componentHidden(ComponentEvent e)
+ @Override
+ public void resizeInnerPanel(String data)
{
- showConsole(false);
- }
+ // Jalview doesn't honour resize panel requests
- public void setLoadingFromArchive(boolean loadingFromArchive)
- {
- this.loadingFromArchive = loadingFromArchive;
- }
-
- /**
- *
- * @return true if Jmol is still restoring state or loading is still going on (see setFinsihedLoadingFromArchive)
- */
- public boolean isLoadingFromArchive()
- {
- return loadingFromArchive && !loadingFinished;
}
- /**
- * modify flag which controls if sequence colouring events are honoured by the binding.
- * Should be true for normal operation
- * @param finishedLoading
- */
- public void setFinishedLoadingFromArchive(boolean finishedLoading)
+ public boolean isFinishedInit()
{
- loadingFinished = finishedLoading;
+ return finishedInit;
}
- public void setBackgroundColour(java.awt.Color col)
+ public void setFinishedInit(boolean finishedInit)
{
- jmolHistory(false);
- viewer.evalStringQuiet("background [" + col.getRed() + ","
- + col.getGreen() + "," + col.getBlue() + "];");
- jmolHistory(true);
+ this.finishedInit = finishedInit;
}
/**
- * add structures and any known sequence associations
*
- * @returns the pdb entries added to the current set.
*/
- public synchronized PDBEntry[] addSequenceAndChain(PDBEntry[] pdbe,
- SequenceI[][] seq, String[][] chns)
+ protected void closeConsole()
{
- int pe = -1;
- Vector v = new Vector();
- Vector rtn = new Vector();
- for (int i = 0; i < pdbentry.length; i++)
- {
- v.addElement(pdbentry[i]);
- }
- for (int i = 0; i < pdbe.length; i++)
+ if (console != null)
{
- int r = v.indexOf(pdbe[i]);
- if (r == -1 || r >= pdbentry.length)
+ try
{
- rtn.addElement(new int[]
- { v.size(), i });
- v.addElement(pdbe[i]);
- }
- else
+ console.setVisible(false);
+ } catch (Error e)
{
- // just make sure the sequence/chain entries are all up to date
- addSequenceAndChain(r, seq[i], chns[i]);
- }
- }
- pdbe = new PDBEntry[v.size()];
- v.copyInto(pdbe);
- pdbentry = pdbe;
- if (rtn.size() > 0)
- {
- // expand the tied seuqence[] and string[] arrays
- SequenceI[][] sqs = new SequenceI[pdbentry.length][];
- String[][] sch = new String[pdbentry.length][];
- System.arraycopy(sequence, 0, sqs, 0, sequence.length);
- System.arraycopy(chains, 0, sch, 0, this.chains.length);
- sequence = sqs;
- chains = sch;
- pdbe = new PDBEntry[rtn.size()];
- for (int r = 0; r < pdbe.length; r++)
+ } catch (Exception x)
{
- int[] stri = ((int[]) rtn.elementAt(r));
- // record the pdb file as a new addition
- pdbe[r] = pdbentry[stri[0]];
- // and add the new sequence/chain entries
- addSequenceAndChain(stri[0], seq[stri[1]], chns[stri[1]]);
}
+ ;
+ console = null;
}
- else
- {
- pdbe = null;
- }
- return pdbe;
}
- public void addSequence(int pe, SequenceI[] seq)
+ /**
+ * ComponentListener method
+ */
+ @Override
+ public void componentMoved(ComponentEvent e)
{
- // add sequences to the pe'th pdbentry's seuqence set.
- addSequenceAndChain(pe, seq, null);
}
- private void addSequenceAndChain(int pe, SequenceI[] seq, String[] tchain)
+ /**
+ * ComponentListener method
+ */
+ @Override
+ public void componentResized(ComponentEvent e)
{
- if (pe < 0 || pe >= pdbentry.length)
- {
- throw new Error(
- "Implementation error - no corresponding pdbentry (for index "
- + pe + ") to add sequences mappings to");
- }
- final String nullChain = "TheNullChain";
- Vector s = new Vector();
- Vector c = new Vector();
- if (chains == null)
- {
- chains = new String[pdbentry.length][];
- }
- if (sequence[pe] != null)
- {
- for (int i = 0; i < sequence[pe].length; i++)
- {
- s.addElement(sequence[pe][i]);
- if (chains[pe] != null)
- {
- if (i < chains[pe].length)
- {
- c.addElement(chains[pe][i]);
- }
- else
- {
- c.addElement(nullChain);
- }
- }
- else
- {
- if (tchain != null && tchain.length > 0)
- {
- c.addElement(nullChain);
- }
- }
- }
- }
- for (int i = 0; i < seq.length; i++)
- {
- if (!s.contains(seq[i]))
- {
- s.addElement(seq[i]);
- if (tchain != null && i < tchain.length)
- {
- c.addElement(tchain[i] == null ? nullChain : tchain[i]);
- }
- }
- }
- SequenceI[] tmp = new SequenceI[s.size()];
- s.copyInto(tmp);
- sequence[pe] = tmp;
- if (c.size() > 0)
- {
- String[] tch = new String[c.size()];
- c.copyInto(tch);
- for (int i = 0; i < tch.length; i++)
- {
- if (tch[i] == nullChain)
- {
- tch[i] = null;
- }
- }
- chains[pe] = tch;
- }
- else
- {
- chains[pe] = null;
- }
}
/**
- *
- * @param pdbfile
- * @return text report of alignment between pdbfile and any associated
- * alignment sequences
+ * ComponentListener method
*/
- public String printMapping(String pdbfile)
+ @Override
+ public void componentShown(ComponentEvent e)
{
- return ssm.printMapping(pdbfile);
+ showConsole(true);
}
+ /**
+ * ComponentListener method
+ */
@Override
- public void resizeInnerPanel(String data)
+ public void componentHidden(ComponentEvent e)
{
- // Jalview doesn't honour resize panel requests
-
+ showConsole(false);
}
}