Register TreePanel with paintrefresher
[jalview.git] / src / jalview / gui / TreePanel.java
index 3bb9108..1f11f4a 100755 (executable)
@@ -117,11 +117,13 @@ public class TreePanel extends GTreePanel
       this.type = type;
       this.pwtype = pwtype;
 
-      buildAssociatedViewMenu();
-
-      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)
@@ -148,23 +150,39 @@ public class TreePanel extends GTreePanel
 
     }
 
+    public void viewMenu_menuSelected()
+    {
+      buildAssociatedViewMenu();
+    }
+
+
     void buildAssociatedViewMenu()
     {
       AlignmentPanel [] aps = PaintRefresher.getAssociatedPanels(av.getSequenceSetId());
-      if(aps.length<2)
+      if(aps.length==1 && treeCanvas.ap==aps[0])
       {
         associateLeavesMenu.setVisible(false);
         return;
       }
-      associateLeavesMenu.addSeparator();
+
+      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.av==av );
+          item = new JRadioButtonMenuItem(ap.av.viewName, ap==treeCanvas.ap );
           buttonGroup.add(item);
           item.addActionListener(new ActionListener()
               {
@@ -173,15 +191,15 @@ public class TreePanel extends GTreePanel
                   treeCanvas.applyToAllViews = false;
                   treeCanvas.ap = ap;
                   treeCanvas.av = ap.av;
-                  PaintRefresher.RemoveComponent(treeCanvas);
-                  PaintRefresher.Register(treeCanvas, ap.av.getSequenceSetId());
+                  PaintRefresher.Register(thisTreePanel, ap.av.getSequenceSetId());
                 }
               });
 
           associateLeavesMenu.add(item);
       }
 
-      final JRadioButtonMenuItem itemf = new JRadioButtonMenuItem("All Views");
+      final JRadioButtonMenuItem itemf =
+          new JRadioButtonMenuItem("All Views", treeCanvas.applyToAllViews);
       buttonGroup.add(itemf);
       itemf.addActionListener(new ActionListener()
       {