--- /dev/null
+package jalview.appletgui;
+
+import java.util.BitSet;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.jmol.api.JmolViewer;
+
+import jalview.api.FeatureRenderer;
+import jalview.api.SequenceRenderer;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceI;
+import jalview.ext.jmol.JalviewJmolBinding;
+
+/**
+ * bind an alignment view to an external Jmol instance.
+ * @author JimP
+ *
+ */
+public class ExtJmol extends JalviewJmolBinding
+{
+
+ private AlignmentPanel ap;
+
+ protected ExtJmol(jalview.appletgui.AlignFrame alframe, PDBEntry[] pdbentry, SequenceI[] seq, String[] chains,
+ String protocol)
+ {
+ super(pdbentry, seq, chains, protocol);
+ }
+
+ public ExtJmol(JmolViewer viewer, AlignmentPanel alignPanel,
+ SequenceI[] seqs)
+ {
+ super(viewer);
+ ap = alignPanel;
+ this.sequence = seqs;
+ notifyFileLoaded(null, null, null, null, 0);
+ }
+
+ public void updateColours(Object source)
+ {
+
+ // TODO Auto-generated method stub
+
+ }
+
+ public void showUrl(String arg0)
+ {
+ showUrl(arg0, "jmol");
+ }
+
+ public FeatureRenderer getFeatureRenderer()
+ {
+ if (ap.av.showSequenceFeatures)
+ {
+ return ap.getFeatureRenderer();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public SequenceRenderer getSequenceRenderer()
+ {
+ return ap.getSequenceRenderer();
+ }
+
+ public void notifyScriptTermination(String strStatus, int msWalltime)
+ {
+ // ignore
+ }
+
+ public void sendConsoleEcho(String strEcho)
+ {
+ // ignore
+ }
+
+ public void sendConsoleMessage(String strStatus)
+ {
+ // ignore
+ }
+
+ public void showUrl(String url, String target)
+ {
+ ap.alignFrame.showURL(url, target);
+ }
+
+ public void updateUI()
+ {
+ // ignore
+ }
+
+ public void selectionChanged(BitSet arg0)
+ {
+ System.out.println(arg0);
+ }
+
+ public void refreshPdbEntries()
+ {
+ Vector pdbe = new Vector();
+ Hashtable fileids = new Hashtable();
+ SequenceI[] sq = ap.av.getAlignment().getSequencesArray();
+ for (int s=0;s<sq.length;s++)
+ {
+ Vector pdbids = sq[s].getPDBId();
+ if (pdbids!=null)
+ {
+ for (int pe=0,peSize=pdbids.size(); pe<peSize; pe++)
+ {
+ PDBEntry pentry = (PDBEntry) pdbids.elementAt(pe);
+ if (!fileids.containsKey(pentry.getId())) {
+ pdbe.addElement(pentry);
+ }
+ }
+ }
+ }
+ pdbentry = new PDBEntry[pdbe.size()];
+ for (int pe=0;pe<pdbe.size(); pe++)
+ {
+ pdbentry[pe] = (PDBEntry) pdbe.elementAt(pe);
+ }
+ }
+}