JAL-1953 moved DataConversions to Forester package
[jalview.git] / src / jalview / ext / archaeopteryx / Tree.java
index d06339e..345820d 100644 (file)
@@ -1,8 +1,8 @@
 package jalview.ext.archaeopteryx;
 
-import jalview.ext.treeviewer.ExternalTreeFrame;
-import jalview.ext.treeviewer.ExternalTreeI;
-import jalview.ext.treeviewer.ExternalTreeNodeI;
+import jalview.ext.treeviewer.TreeFrameI;
+import jalview.ext.treeviewer.TreeI;
+import jalview.ext.treeviewer.TreeNodeI;
 
 import java.util.Iterator;
 
@@ -11,20 +11,41 @@ import org.forester.phylogeny.Phylogeny;
 import org.forester.phylogeny.PhylogenyMethods;
 import org.forester.phylogeny.PhylogenyNode;
 
-public class Tree implements ExternalTreeI
+public class Tree implements TreeI
 {
   private final Phylogeny tree;
 
+  // alternative to static maps in TreeNode
+  // private Map<PhylogenyNode, TreeNodeI> originalNodes = new HashMap<>(500);
+  // private Map<TreeNodeI, PhylogenyNode> wrappedNodes = new HashMap<>(500);
+
+  public Tree()
+  {
+    tree = new Phylogeny();
+  }
   public Tree(Phylogeny aptxTree)
   {
     tree = aptxTree;
+    wrapAllTreeNodes();
+
   }
 
+  private void wrapAllTreeNodes()
+  {
+    for (Iterator<PhylogenyNode> iterator = tree
+            .iteratorPostorder(); iterator.hasNext();)
+    {
+      PhylogenyNode foresterNode = iterator.next();
+      TreeNodeI treeNode = TreeNode
+              .getUniqueWrapper(foresterNode);
+
+    }
+  }
 
   @Override
-  public ExternalTreeNodeI getRoot()
+  public TreeNodeI getRoot()
   {
-    ExternalTreeNodeI root = new TreeNode(tree.getRoot());
+    TreeNodeI root = TreeNode.getUniqueWrapper(tree.getRoot());
     return root;
   }
 
@@ -36,9 +57,9 @@ public class Tree implements ExternalTreeI
   }
 
   @Override
-  public ExternalTreeNodeI getNodeWithName(String name)
+  public TreeNodeI getNodeWithName(String name)
   {
-    return new TreeNode(tree.getNode(name));
+    return TreeNode.getUniqueWrapper(tree.getNode(name));
 
   }
 
@@ -75,11 +96,11 @@ public class Tree implements ExternalTreeI
   }
 
   @Override
-  public void setRoot(ExternalTreeNodeI rootNode)
+  public void setRoot(TreeNodeI rootNode)
   {
-    PhylogenyNode treeRoot = new PhylogenyNode(rootNode.getNodeName());
-    // expand this
+    PhylogenyNode treeRoot = TreeNode.unwrapNode(rootNode);
     tree.setRoot(treeRoot);
+    wrapAllTreeNodes();
 
   }
 
@@ -90,42 +111,44 @@ public class Tree implements ExternalTreeI
   }
 
   @Override
-  public Iterator<ExternalTreeNodeI> iterateInPreOrder()
+  public Iterator<TreeNodeI> iterateInPreOrder()
   {
-    Iterator<ExternalTreeNodeI> iter = new TreeIterator(
+    Iterator<TreeNodeI> iter = new TreeIterator(
             tree.iteratorPreorder());
     return iter;
   }
 
   @Override
-  public Iterator<ExternalTreeNodeI> iterateInLevelOrder()
+  public Iterator<TreeNodeI> iterateInLevelOrder()
   {
-    Iterator<ExternalTreeNodeI> iter = new TreeIterator(
+    Iterator<TreeNodeI> iter = new TreeIterator(
             tree.iteratorLevelOrder());
     return iter;
   }
 
   @Override
-  public Iterator<ExternalTreeNodeI> iterateInPostOrder()
+  public Iterator<TreeNodeI> iterateInPostOrder()
   {
-    Iterator<ExternalTreeNodeI> iter = new TreeIterator(
+    Iterator<TreeNodeI> iter = new TreeIterator(
             tree.iteratorPostorder());
     return iter;
   }
 
   @Override
-  public ExternalTreeNodeI getFurthestNode()
+  public TreeNodeI getFurthestNode()
   {
     PhylogenyNode furthestNode = PhylogenyMethods
             .calculateNodeWithMaxDistanceToRoot(tree);
-    return new TreeNode(furthestNode);
+    return TreeNode.getUniqueWrapper(furthestNode);
   }
 
   @Override
-  public ExternalTreeFrame createInstanceFromTree(String instanceTitle)
+  public TreeFrameI createTreeViewerFromTree(String instanceTitle)
   {
     return new AptxFrame(Archaeopteryx.createApplication(tree,
             AptxInit.APTX_CONFIG,
             instanceTitle));
   }
+
+
 }