Hashtable nameHash = new Hashtable();\r
Hashtable nodeHash = new Hashtable();\r
\r
- public TreeCanvas(AlignViewport av, NJTree tree, ScrollPane scroller,\r
- String label)\r
+ public TreeCanvas(AlignViewport av, ScrollPane scroller)\r
{\r
this.av = av;\r
- this.tree = tree;\r
scrollPane = scroller;\r
addMouseListener(this);\r
- tree.findHeight(tree.getTopNode());\r
- longestName = label;\r
setLayout(null);\r
\r
PaintRefresher.Register(this, av.alignment);\r
{\r
this.tree = tree;\r
tree.findHeight(tree.getTopNode());\r
+\r
+ // Now have to calculate longest name based on the leaves\r
+ Vector leaves = tree.findLeaves(tree.getTopNode(), new Vector());\r
+ boolean has_placeholders = false;\r
+ longestName = "";\r
+\r
+ for (int i = 0; i < leaves.size(); i++)\r
+ {\r
+ SequenceNode lf = (SequenceNode) leaves.elementAt(i);\r
+\r
+ if (lf.isPlaceholder())\r
+ {\r
+ has_placeholders = true;\r
+ }\r
+\r
+ if (longestName.length() < ( (Sequence) lf.element()).getName()\r
+ .length())\r
+ {\r
+ longestName = TreeCanvas.PLACEHOLDER +\r
+ ( (Sequence) lf.element()).getName();\r
+ }\r
+ }\r
+\r
+ setMarkPlaceholders(has_placeholders);\r
}\r
\r
public void drawNode(Graphics g, SequenceNode node, float chunk, float scale,\r