X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreePanel.java;h=f4543ed83ef71d56e17e0e82bbc4c3d7a7f8b8e1;hb=4966d9f4569d7f2b46aca6ff4629e9a1b1120c98;hp=dc2b820b61f99ba130854a64ee1d54fd57c3a2bc;hpb=e61219eaa31557203fa518aa03cba2cc651e1b84;p=jalview.git diff --git a/src/jalview/gui/TreePanel.java b/src/jalview/gui/TreePanel.java index dc2b820..f4543ed 100755 --- a/src/jalview/gui/TreePanel.java +++ b/src/jalview/gui/TreePanel.java @@ -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) @@ -128,18 +133,15 @@ public class TreePanel extends GTreePanel if(tree==null) System.out.println("tree is null"); if(evt.getNewValue()==null) - System.out.println("new value is null"); + System.out.println("new alignment sequences vector value is null"); tree.UpdatePlaceHolders( (Vector) evt.getNewValue()); - + treeCanvas.nameHash.clear(); // reset the mapping between canvas rectangles and leafnodes repaint(); } } }); - this.av = av; - - TreeLoader tl = new TreeLoader(newTree); if (inputData!=null) { tl.odata=inputData; @@ -148,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