binding between JalviewLite alignment windows and some external Jmol viewer
authorjprocter <Jim Procter>
Fri, 20 Aug 2010 11:52:40 +0000 (11:52 +0000)
committerjprocter <Jim Procter>
Fri, 20 Aug 2010 11:52:40 +0000 (11:52 +0000)
src/jalview/appletgui/ExtJmol.java [new file with mode: 0644]

diff --git a/src/jalview/appletgui/ExtJmol.java b/src/jalview/appletgui/ExtJmol.java
new file mode 100644 (file)
index 0000000..2c5da17
--- /dev/null
@@ -0,0 +1,124 @@
+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);
+    }
+  }
+}