+ /**\r
+ * Creates a new TreePanel object.\r
+ *\r
+ * @param av DOCUMENT ME!\r
+ * @param seqVector DOCUMENT ME!\r
+ * @param newtree DOCUMENT ME!\r
+ * @param type DOCUMENT ME!\r
+ * @param pwtype DOCUMENT ME!\r
+ */\r
+ public TreePanel(AlignViewport av, Vector seqVector, NewickFile newtree,\r
+ String type, String pwtype)\r
+ {\r
+ super();\r
+\r
+ // These are probably only arbitrary strings reflecting source of tree\r
+ this.type = type;\r
+ this.pwtype = pwtype;\r
+\r
+ start = 0;\r
+ end = seqVector.size();\r
+\r
+ String longestName = "";\r
+ seq = new Sequence[seqVector.size()];\r
+\r
+ for (int i = 0; i < seqVector.size(); i++)\r
+ {\r
+ seq[i] = (Sequence) seqVector.elementAt(i);\r
+ }\r
+\r
+ // This constructor matches sequence names to treenodes and sets up the tree layouts.\r
+ tree = new NJTree(seq, newtree);\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
+\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
+ tree.reCount(tree.getTopNode());\r
+ tree.findHeight(tree.getTopNode());\r
+\r
+ treeCanvas = new TreeCanvas(av, tree, scrollPane, longestName);\r
+ treeCanvas.setShowBootstrap(newtree.HasBootstrap());\r
+ treeCanvas.setShowDistances(newtree.HasDistances());\r
+ scrollPane.setViewportView(treeCanvas);\r
+ treeCanvas.setMarkPlaceholders(has_placeholders);\r
+ setViewStateFromTreeCanvas(treeCanvas);\r
+\r
+ // JBPNote TODO: preference for always marking placeholders in new associated tree\r
+ }\r