Make sure annots are alignment width
[jalview.git] / src / jalview / gui / AppJMol.java
index bb14d77..3f2d895 100644 (file)
@@ -49,6 +49,7 @@ public class AppJMol
   ScriptWindow scriptWindow;
   PDBEntry pdbentry;
   SequenceI[] sequence;
+  String [] chains;
   StructureSelectionManager ssm;
   JSplitPane splitPane;
   RenderPanel renderPanel;
@@ -68,6 +69,7 @@ public class AppJMol
     pdbentry = new PDBEntry();
     pdbentry.setFile(file);
     pdbentry.setId(id);
+    this.chains = chains;
     this.sequence = seq;
     this.ap = ap;
     this.setBounds(bounds);
@@ -104,7 +106,7 @@ public synchronized void addSequence(SequenceI [] seq)
      sequence = tmp;
    }
 
-  public AppJMol(PDBEntry pdbentry, SequenceI[] seq, AlignmentPanel ap)
+  public AppJMol(PDBEntry pdbentry, SequenceI[] seq, String [] chains, AlignmentPanel ap)
   {
     //////////////////////////////////
     //Is the pdb file already loaded?
@@ -123,9 +125,11 @@ public synchronized void addSequence(SequenceI [] seq)
       if (option == JOptionPane.YES_OPTION)
       {
         StructureSelectionManager.getStructureSelectionManager()
-            .setMapping(seq, alreadyMapped, AppletFormatAdapter.FILE);
-        ap.seqPanel.seqCanvas.fr.featuresAdded();
-        ap.paintAlignment(true);
+            .setMapping(seq, chains, alreadyMapped, AppletFormatAdapter.FILE);
+        if (ap.seqPanel.seqCanvas.fr!=null) {
+          ap.seqPanel.seqCanvas.fr.featuresAdded();
+          ap.paintAlignment(true);
+        }
         return;
       }
     }
@@ -578,6 +582,14 @@ public synchronized void addSequence(SequenceI [] seq)
 
   }
 
+  public Color getColour(int atomIndex, int pdbResNum, String chain, String pdbfile)
+  {
+    if (!pdbfile.equals(pdbentry.getFile()))
+      return null;
+
+    return new Color(viewer.getAtomArgb(atomIndex));
+  }
+
   public void updateColours(Object source)
   {
     colourBySequence( (AlignmentPanel) source);
@@ -587,7 +599,7 @@ public synchronized void addSequence(SequenceI [] seq)
 //End StructureListener
 ////////////////////////////
 
-  FeatureRenderer fr;
+  FeatureRenderer fr=null;
   public void colourBySequence(AlignmentPanel ap)
   {
     if(!colourBySequence)
@@ -602,12 +614,13 @@ public synchronized void addSequence(SequenceI [] seq)
     SequenceRenderer sr = ap.seqPanel.seqCanvas.getSequenceRenderer();
 
     boolean showFeatures = false;
+
     if (ap.av.showSequenceFeatures)
     {
       showFeatures = true;
       if (fr == null)
       {
-        fr = new jalview.gui.FeatureRenderer(ap.av);
+        fr = new jalview.gui.FeatureRenderer(ap);
       }
 
       fr.transferSettings(ap.seqPanel.seqCanvas.getFeatureRenderer());
@@ -620,7 +633,8 @@ public synchronized void addSequence(SequenceI [] seq)
     {
       for (int m = 0; m < mapping.length; m++)
       {
-        if (mapping[m].getSequence() == sequence[s])
+        if (mapping[m].getSequence() == sequence[s]
+            && ap.av.alignment.findIndex(sequence[s])>-1)
         {
           for (int r = 0; r < sequence[s].getLength(); r++)
           {
@@ -727,9 +741,8 @@ public synchronized void addSequence(SequenceI [] seq)
 
       //FILE LOADED OK
       ssm = StructureSelectionManager.getStructureSelectionManager();
-      MCview.PDBfile pdbFile = ssm.setMapping(sequence, pdbentry.getFile(), AppletFormatAdapter.FILE);
+      MCview.PDBfile pdbFile = ssm.setMapping(sequence,chains,pdbentry.getFile(), AppletFormatAdapter.FILE);
       ssm.addStructureViewerListener(this);
-
       Vector chains = new Vector();
       for(int i=0; i<pdbFile.chains.size(); i++)
       {
@@ -746,6 +759,8 @@ public synchronized void addSequence(SequenceI [] seq)
 
         colourBySequence(ap);
       }
+      if (fr!=null)
+        fr.featuresAdded();
 
       loadingFromArchive = false;
     }
@@ -810,7 +825,10 @@ public synchronized void addSequence(SequenceI [] seq)
 
     if (!atomsPicked.contains(picked))
     {
+      if(chainId!=null)
       viewer.evalString("select "+picked+";label %n %r:%c");
+    else
+      viewer.evalString("select "+picked+";label %n %r");
       atomsPicked.addElement(picked);
     }
     else