TreePanel added to PaintRefresher, not TreeCanvas
authoramwaterhouse <Andrew Waterhouse>
Wed, 22 Nov 2006 17:41:33 +0000 (17:41 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 22 Nov 2006 17:41:33 +0000 (17:41 +0000)
src/jalview/gui/TreeCanvas.java
src/jalview/gui/TreePanel.java

index 9ca36cc..98299ab 100755 (executable)
@@ -48,6 +48,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
   public static final String PLACEHOLDER = " * ";
   NJTree tree;
   JScrollPane scrollPane;
+  TreePanel tp;
   AlignViewport av;
   AlignmentPanel ap;
   Font font;
@@ -76,15 +77,18 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
    * @param scroller DOCUMENT ME!
    * @param label DOCUMENT ME!
    */
-  public TreeCanvas(AlignmentPanel ap, JScrollPane scroller)
+  public TreeCanvas(TreePanel tp,
+                    AlignmentPanel ap,
+                    JScrollPane scroller)
   {
+    this.tp = tp;
     this.av = ap.av;
     this.ap = ap;
     font = av.getFont();
     scrollPane = scroller;
     addMouseListener(this);
     addMouseMotionListener(this);
-    PaintRefresher.Register(this, ap.av.getSequenceSetId());
+    PaintRefresher.Register(tp, ap.av.getSequenceSetId());
     ToolTipManager.sharedInstance().registerComponent(this);
   }
 
@@ -702,7 +706,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         }
       }
 
-      PaintRefresher.Refresh(this, av.getSequenceSetId());
+      PaintRefresher.Refresh(tp, av.getSequenceSetId());
       repaint();
     }
   }
@@ -754,7 +758,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
     if (ob instanceof SequenceI)
     {
       treeSelectionChanged( (Sequence) ob);
-      PaintRefresher.Refresh(this, ap.av.getSequenceSetId());
+      PaintRefresher.Refresh(tp, ap.av.getSequenceSetId());
       repaint();
       return;
     }
@@ -781,7 +785,7 @@ public class TreeCanvas extends JPanel implements MouseListener, Runnable,
         colourGroups();
       }
 
-      PaintRefresher.Refresh(this, ap.av.getSequenceSetId());
+      PaintRefresher.Refresh(tp, ap.av.getSequenceSetId());
       repaint();
     }
 
index 3bb9108..389d82d 100755 (executable)
@@ -117,11 +117,11 @@ 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);
 
+      buildAssociatedViewMenu();
+
       av.addPropertyChangeListener(new java.beans.PropertyChangeListener()
       {
         public void propertyChange(PropertyChangeEvent evt)
@@ -148,23 +148,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 +189,16 @@ 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.RemoveComponent(thisTreePanel);
+                  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()
       {