X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FTreePanel.java;fp=src%2Fjalview%2Fgui%2FTreePanel.java;h=8d13e93c2c591dd1f453c4b9c671e5e202e6c3ad;hb=8a5c39442bced20fc95272efe6d3176719ca3f15;hp=ff02d49ec487eef6189d2acba088ca4b4267e9bf;hpb=5ac7843efbf08ac78859912b6b3df19cb2b99279;p=jalview.git diff --git a/src/jalview/gui/TreePanel.java b/src/jalview/gui/TreePanel.java index ff02d49..8d13e93 100755 --- a/src/jalview/gui/TreePanel.java +++ b/src/jalview/gui/TreePanel.java @@ -68,37 +68,13 @@ public class TreePanel extends GTreePanel * @param e DOCUMENT ME! */ public TreePanel(AlignViewport av, Vector seqVector, String type, - String pwtype, int s, int e) + String pwtype, int s, int e) { - super(); + super(); + initTreePanel(av, seqVector, type, pwtype, s, e, null); - this.type = type; - this.pwtype = pwtype; - - start = s; - end = e; - - String longestName = ""; - seq = new Sequence[seqVector.size()]; - - for (int i = 0; i < seqVector.size(); i++) - { - seq[i] = (Sequence) seqVector.elementAt(i); - - if (seq[i].getName().length() > longestName.length()) - { - longestName = seq[i].getName(); - } - } - - tree = new NJTree(seq, type, pwtype, start, end); - - treeCanvas = new TreeCanvas(av, tree, scrollPane, longestName); - treeCanvas.setShowDistances(true); // We know this tree has distances. JBPNote TODO: prolly should add this as a userdefined default - setViewStateFromTreeCanvas(treeCanvas); - tree.reCount(tree.getTopNode()); - tree.findHeight(tree.getTopNode()); - scrollPane.setViewportView(treeCanvas); + // We know this tree has distances. JBPNote TODO: prolly should add this as a userdefined default + treeCanvas.setShowDistances(true); } /** @@ -111,62 +87,69 @@ public class TreePanel extends GTreePanel * @param pwtype DOCUMENT ME! */ public TreePanel(AlignViewport av, Vector seqVector, NewickFile newtree, - String type, String pwtype) + String type, String pwtype) { - super(); + super(); + initTreePanel(av, seqVector, type, pwtype, 0, seqVector.size(), newtree); + } - // These are probably only arbitrary strings reflecting source of tree - this.type = type; - this.pwtype = pwtype; - start = 0; - end = seqVector.size(); + void initTreePanel(AlignViewport av, Vector seqVector, String type, + String pwtype, int s, int e, NewickFile newTree) + { - String longestName = ""; - seq = new Sequence[seqVector.size()]; + this.type = type; + this.pwtype = pwtype; - for (int i = 0; i < seqVector.size(); i++) - { - seq[i] = (Sequence) seqVector.elementAt(i); - } + start = s; + end = e; - // This constructor matches sequence names to treenodes and sets up the tree layouts. - tree = new NJTree(seq, newtree); + seq = new Sequence[seqVector.size()]; + seqVector.toArray(seq); - // Now have to calculate longest name based on the leaves - Vector leaves = tree.findLeaves(tree.getTopNode(), new Vector()); - boolean has_placeholders = false; - for (int i = 0; i < leaves.size(); i++) - { - SequenceNode lf = (SequenceNode) leaves.elementAt(i); + treeCanvas = new TreeCanvas(av, scrollPane); + scrollPane.setViewportView(treeCanvas); - if (lf.isPlaceholder()) - { - has_placeholders = true; - } + TreeLoader tl = new TreeLoader(newTree); + tl.start(); - if (longestName.length() < ((Sequence) lf.element()).getName() - .length()) - { - longestName = TreeCanvas.PLACEHOLDER + - ((Sequence) lf.element()).getName(); - } - } + } + + class TreeLoader extends Thread + { + NewickFile newtree; + + public TreeLoader(NewickFile newtree) + { + this.newtree = newtree; + } + + public void run() + { + NJTree tree; + if(newtree!=null) + tree = new NJTree(seq, newtree); + else + tree = new NJTree(seq, type, pwtype, start, end); tree.reCount(tree.getTopNode()); tree.findHeight(tree.getTopNode()); + treeCanvas.setTree(tree); + if(newtree!=null) + { + treeCanvas.setShowBootstrap(newtree.HasBootstrap()); + treeCanvas.setShowDistances(newtree.HasDistances()); + } - treeCanvas = new TreeCanvas(av, tree, scrollPane, longestName); - treeCanvas.setShowBootstrap(newtree.HasBootstrap()); - treeCanvas.setShowDistances(newtree.HasDistances()); - scrollPane.setViewportView(treeCanvas); - treeCanvas.setMarkPlaceholders(has_placeholders); setViewStateFromTreeCanvas(treeCanvas); - // JBPNote TODO: preference for always marking placeholders in new associated tree + treeCanvas.repaint(); + + } } + /** * DOCUMENT ME! *