Pick atom highlighted
authoramwaterhouse <Andrew Waterhouse>
Tue, 27 Mar 2007 09:14:02 +0000 (09:14 +0000)
committeramwaterhouse <Andrew Waterhouse>
Tue, 27 Mar 2007 09:14:02 +0000 (09:14 +0000)
src/jalview/gui/AppJMol.java

index 50e2b96..bb14d77 100644 (file)
@@ -56,6 +56,7 @@ public class AppJMol
   String fileLoadingError;
   boolean colourBySequence = true;
   boolean loadingFromArchive = false;
+  Vector atomsPicked = new Vector();
 
   public AppJMol(String file, String id,
                  SequenceI[] seq,
@@ -88,6 +89,21 @@ public class AppJMol
     });
   }
 
+public synchronized void addSequence(SequenceI [] seq)
+   {
+    Vector v = new Vector();
+     for(int i=0; i<sequence.length; i++)
+       v.addElement(sequence[i]);
+
+     for(int i=0; i<seq.length; i++)
+      if(!v.contains(seq[i]))
+          v.addElement(seq[i]);
+
+     SequenceI [] tmp = new SequenceI[v.size()];
+     v.copyInto(tmp);
+     sequence = tmp;
+   }
+
   public AppJMol(PDBEntry pdbentry, SequenceI[] seq, AlignmentPanel ap)
   {
     //////////////////////////////////
@@ -140,6 +156,7 @@ public class AppJMol
     });
   }
 
+
   void initJmol(String command)
   {
     renderPanel = new RenderPanel();
@@ -777,6 +794,31 @@ public class AppJMol
 
   public void notifyAtomPicked(int atomIndex, String strInfo)
   {
+    Matcher matcher = pattern.matcher(strInfo);
+    matcher.find();
+
+    matcher.group(1);
+    String resnum = new String(matcher.group(2));
+    String chainId = matcher.group(3);
+
+    String picked = resnum;
+
+    if (chainId != null)
+      picked+=(":"+chainId.substring(1, chainId.length()));
+
+    picked+=".C";
+
+    if (!atomsPicked.contains(picked))
+    {
+      viewer.evalString("select "+picked+";label %n %r:%c");
+      atomsPicked.addElement(picked);
+    }
+    else
+    {
+      viewer.evalString("select "+picked+";label off");
+      atomsPicked.removeElement(picked);
+    }
+
     if (scriptWindow != null)
     {
       scriptWindow.sendConsoleMessage(strInfo);