Associate trees with views
[jalview.git] / src / jalview / gui / TreePanel.java
index c22a8e7..3bb9108 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,6 +117,8 @@ public class TreePanel extends GTreePanel
       this.type = type;
       this.pwtype = pwtype;
 
+      buildAssociatedViewMenu();
+
       treeCanvas = new TreeCanvas(ap, scrollPane);
       scrollPane.setViewportView(treeCanvas);
 
@@ -145,6 +148,52 @@ public class TreePanel extends GTreePanel
 
     }
 
+    void buildAssociatedViewMenu()
+    {
+      AlignmentPanel [] aps = PaintRefresher.getAssociatedPanels(av.getSequenceSetId());
+      if(aps.length<2)
+      {
+        associateLeavesMenu.setVisible(false);
+        return;
+      }
+      associateLeavesMenu.addSeparator();
+
+      JRadioButtonMenuItem item;
+      ButtonGroup buttonGroup = new ButtonGroup();
+      int i, iSize = aps.length;
+      for(i=0; i<iSize; i++)
+      {
+          final AlignmentPanel ap = aps[i];
+          item = new JRadioButtonMenuItem(ap.av.viewName, ap.av==av );
+          buttonGroup.add(item);
+          item.addActionListener(new ActionListener()
+              {
+                public void actionPerformed(ActionEvent evt)
+                {
+                  treeCanvas.applyToAllViews = false;
+                  treeCanvas.ap = ap;
+                  treeCanvas.av = ap.av;
+                  PaintRefresher.RemoveComponent(treeCanvas);
+                  PaintRefresher.Register(treeCanvas, ap.av.getSequenceSetId());
+                }
+              });
+
+          associateLeavesMenu.add(item);
+      }
+
+      final JRadioButtonMenuItem itemf = new JRadioButtonMenuItem("All Views");
+      buttonGroup.add(itemf);
+      itemf.addActionListener(new ActionListener()
+      {
+        public void actionPerformed(ActionEvent evt)
+        {
+          treeCanvas.applyToAllViews = itemf.isSelected();
+        }
+      });
+      associateLeavesMenu.add(itemf);
+
+    }
+
     class TreeLoader extends Thread
     {
       NewickFile newtree;