reoganization of PDB sequence fetching for sequence annotation generated by PDBFile
[jalview.git] / src / jalview / gui / TreePanel.java
index c22a8e7..f4543ed 100755 (executable)
@@ -36,6 +36,7 @@ import java.io.*;
 
 import java.util.*;
 
+import javax.swing.*;
 import javax.imageio.*;
 
 import java.beans.PropertyChangeEvent;
@@ -91,7 +92,7 @@ public class TreePanel extends GTreePanel
       super();
       initTreePanel(ap, type, pwtype, newtree, null);
     }
-    
+
     public TreePanel(AlignmentPanel av,
         String type,
         String pwtype,
@@ -116,9 +117,13 @@ public class TreePanel extends GTreePanel
       this.type = type;
       this.pwtype = pwtype;
 
-      treeCanvas = new TreeCanvas(ap, scrollPane);
+      treeCanvas = new TreeCanvas(this, ap, scrollPane);
       scrollPane.setViewportView(treeCanvas);
 
+      PaintRefresher.Register(this, ap.av.getSequenceSetId());
+
+      buildAssociatedViewMenu();
+
       av.addPropertyChangeListener(new java.beans.PropertyChangeListener()
       {
         public void propertyChange(PropertyChangeEvent evt)
@@ -145,6 +150,68 @@ public class TreePanel extends GTreePanel
 
     }
 
+    public void viewMenu_menuSelected()
+    {
+      buildAssociatedViewMenu();
+    }
+
+
+    void buildAssociatedViewMenu()
+    {
+      AlignmentPanel [] aps = PaintRefresher.getAssociatedPanels(av.getSequenceSetId());
+      if(aps.length==1 && treeCanvas.ap==aps[0])
+      {
+        associateLeavesMenu.setVisible(false);
+        return;
+      }
+
+      associateLeavesMenu.setVisible(true);
+
+      if( (viewMenu.getItem(viewMenu.getItemCount()-2) instanceof JMenuItem))
+      {
+        viewMenu.insertSeparator(viewMenu.getItemCount()-1);
+      }
+
+      associateLeavesMenu.removeAll();
+
+
+      JRadioButtonMenuItem item;
+      ButtonGroup buttonGroup = new ButtonGroup();
+      int i, iSize = aps.length;
+      final TreePanel thisTreePanel = this;
+      for(i=0; i<iSize; i++)
+      {
+          final AlignmentPanel ap = aps[i];
+          item = new JRadioButtonMenuItem(ap.av.viewName, ap==treeCanvas.ap );
+          buttonGroup.add(item);
+          item.addActionListener(new ActionListener()
+              {
+                public void actionPerformed(ActionEvent evt)
+                {
+                  treeCanvas.applyToAllViews = false;
+                  treeCanvas.ap = ap;
+                  treeCanvas.av = ap.av;
+                  PaintRefresher.Register(thisTreePanel, ap.av.getSequenceSetId());
+                }
+              });
+
+          associateLeavesMenu.add(item);
+      }
+
+      final JRadioButtonMenuItem itemf = new JRadioButtonMenuItem("All Views");
+      buttonGroup.add(itemf);
+      itemf.setSelected(treeCanvas.applyToAllViews);
+      itemf.addActionListener(new ActionListener()
+      {
+        public void actionPerformed(ActionEvent evt)
+        {
+          treeCanvas.applyToAllViews = itemf.isSelected();
+        }
+      });
+      associateLeavesMenu.add(itemf);
+
+    }
+
     class TreeLoader extends Thread
     {
       NewickFile newtree;