import java.util.*;
+import javax.swing.*;
import javax.imageio.*;
import java.beans.PropertyChangeEvent;
super();
initTreePanel(ap, type, pwtype, newtree, null);
}
-
+
public TreePanel(AlignmentPanel av,
String type,
String pwtype,
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)
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;
}
+ 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", treeCanvas.applyToAllViews);
+ 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;