package jalview.ext.archaeopteryx; import jalview.ext.treeviewer.ExternalTreeFrame; import jalview.ext.treeviewer.ExternalTreeI; import jalview.ext.treeviewer.ExternalTreeNodeI; import java.util.Iterator; import org.forester.archaeopteryx.Archaeopteryx; import org.forester.phylogeny.Phylogeny; import org.forester.phylogeny.PhylogenyMethods; import org.forester.phylogeny.PhylogenyNode; public class Tree implements ExternalTreeI { private final Phylogeny tree; public Tree() { tree = new Phylogeny(); } public Tree(Phylogeny aptxTree) { tree = aptxTree; wrapAllTreeNodes(); } private void wrapAllTreeNodes() { for (Iterator iterator = tree .iteratorPostorder(); iterator.hasNext();) { PhylogenyNode foresterNode = iterator.next(); ExternalTreeNodeI treeNode = TreeNode .getUniqueWrapper(foresterNode); } } @Override public ExternalTreeNodeI getRoot() { ExternalTreeNodeI root = TreeNode.getUniqueWrapper(tree.getRoot()); return root; } @Override public void setTreeName(String name) { tree.setName(name); } @Override public ExternalTreeNodeI getNodeWithName(String name) { return TreeNode.getUniqueWrapper(tree.getNode(name)); } @Override public String[] getAllLeafNames() { return tree.getAllExternalNodeNames(); } @Override public void setRerootable(boolean b) { tree.setRerootable(b); } @Override public void setRooted(boolean b) { tree.setRooted(b); } @Override public boolean isEmpty() { return tree.isEmpty(); } @Override public String getTreeName() { return tree.getName(); } @Override public void setRoot(ExternalTreeNodeI rootNode) { PhylogenyNode treeRoot = TreeNode.unwrapNode(rootNode); tree.setRoot(treeRoot); wrapAllTreeNodes(); } @Override public double getHeight(boolean adjustForCollapsedSubtrees) { return tree.calculateHeight(adjustForCollapsedSubtrees); } @Override public Iterator iterateInPreOrder() { Iterator iter = new TreeIterator( tree.iteratorPreorder()); return iter; } @Override public Iterator iterateInLevelOrder() { Iterator iter = new TreeIterator( tree.iteratorLevelOrder()); return iter; } @Override public Iterator iterateInPostOrder() { Iterator iter = new TreeIterator( tree.iteratorPostorder()); return iter; } @Override public ExternalTreeNodeI getFurthestNode() { PhylogenyNode furthestNode = PhylogenyMethods .calculateNodeWithMaxDistanceToRoot(tree); return TreeNode.getUniqueWrapper(furthestNode); } @Override public ExternalTreeFrame createTreeViewerFromTree(String instanceTitle) { return new AptxFrame(Archaeopteryx.createApplication(tree, AptxInit.APTX_CONFIG, instanceTitle)); } }