JAL-1953 -External from all interfaces names
[jalview.git] / src / jalview / ext / archaeopteryx / TreeNode.java
index 914cdd2..07c8d95 100644 (file)
@@ -1,7 +1,7 @@
 package jalview.ext.archaeopteryx;
 
 import jalview.datamodel.SequenceI;
-import jalview.ext.treeviewer.ExternalTreeNodeI;
+import jalview.ext.treeviewer.TreeNodeI;
 
 import java.awt.Color;
 import java.util.ArrayList;
@@ -13,16 +13,16 @@ import org.forester.phylogeny.PhylogenyMethods;
 import org.forester.phylogeny.PhylogenyNode;
 import org.forester.phylogeny.data.BranchColor;
 
-public class TreeNode implements ExternalTreeNodeI
+public class TreeNode implements TreeNodeI
 {
   private final PhylogenyNode node;
 
   private SequenceI nodeSeq;
 
-  private static Map<PhylogenyNode, ExternalTreeNodeI> originalNodes = new HashMap<>(
+  private static Map<PhylogenyNode, TreeNodeI> originalNodes = new HashMap<>(
           500); // prolly make this size dynamic
 
-  private static Map<ExternalTreeNodeI, PhylogenyNode> wrappedNodes = new HashMap<>(
+  private static Map<TreeNodeI, PhylogenyNode> wrappedNodes = new HashMap<>(
           500);
 
   private TreeNode(PhylogenyNode aptxNode)
@@ -42,7 +42,7 @@ public class TreeNode implements ExternalTreeNodeI
 
 
   @Override
-  public List<ExternalTreeNodeI> getAllDescendants()
+  public List<TreeNodeI> getAllDescendants()
   {
 
     List<PhylogenyNode> descNodes = PhylogenyMethods
@@ -53,7 +53,7 @@ public class TreeNode implements ExternalTreeNodeI
   }
 
   @Override
-  public List<ExternalTreeNodeI> getExternalDescendants()
+  public List<TreeNodeI> getExternalDescendants()
   {
     List<PhylogenyNode> extDescNodes = node.getAllExternalDescendants();
     return getUniqueWrappers(extDescNodes);
@@ -61,7 +61,7 @@ public class TreeNode implements ExternalTreeNodeI
 
 
   @Override
-  public List<ExternalTreeNodeI> getDirectChildren()
+  public List<TreeNodeI> getDirectChildren()
   {
     List<PhylogenyNode> childNodes = node.getDescendants();
     return getUniqueWrappers(childNodes);
@@ -89,7 +89,7 @@ public class TreeNode implements ExternalTreeNodeI
   }
 
   @Override
-  public void addAsChild(ExternalTreeNodeI childNode)
+  public void addAsChild(TreeNodeI childNode)
   {
     PhylogenyNode aptxNode = unwrapNode(childNode);
 
@@ -122,10 +122,10 @@ public class TreeNode implements ExternalTreeNodeI
     return node.isInternal();
   }
 
-  public static List<ExternalTreeNodeI> getUniqueWrappers(
+  public static List<TreeNodeI> getUniqueWrappers(
           List<PhylogenyNode> aptxNodes)
   {
-    List<ExternalTreeNodeI> wrappedNodes = new ArrayList<>(
+    List<TreeNodeI> wrappedNodes = new ArrayList<>(
             aptxNodes.size());
 
     for (PhylogenyNode aptxNode : aptxNodes)
@@ -143,15 +143,18 @@ public class TreeNode implements ExternalTreeNodeI
    * @param aptxNode
    * @return
    */
-  public static ExternalTreeNodeI getUniqueWrapper(
+  public static TreeNodeI getUniqueWrapper(
           PhylogenyNode aptxNode)
   {
-    ExternalTreeNodeI wrappedNode = originalNodes.get(aptxNode);
+    if (aptxNode == null)
+    {
+      return null;
+    }
+    TreeNodeI wrappedNode = originalNodes.get(aptxNode);
     if (wrappedNode == null)
     {
       wrappedNode = new TreeNode(aptxNode);
     }
-
     return wrappedNode;
   }
 
@@ -165,13 +168,18 @@ public class TreeNode implements ExternalTreeNodeI
    * @param wrappedNode
    * @return
    */
-  protected static PhylogenyNode unwrapNode(ExternalTreeNodeI wrappedNode)
+  protected static PhylogenyNode unwrapNode(TreeNodeI wrappedNode)
   {
+    if (wrappedNode == null)
+    {
+      return null;
+    }
     PhylogenyNode aptxNode = wrappedNodes.get(wrappedNode);
     if (aptxNode == null)
     {
       // expand this
       aptxNode = new PhylogenyNode(wrappedNode.getNodeName());
+
     }
     return aptxNode;
 
@@ -183,7 +191,8 @@ public class TreeNode implements ExternalTreeNodeI
   {
     final int prime = 31;
     int result = 1;
-    result = prime * result + ((node == null) ? 0 : node.hashCode());
+    result = (int) (prime * result
+            + ((node == null) ? 0 : (node.hashCode() * getId())));
     return result;
   }
 
@@ -210,7 +219,12 @@ public class TreeNode implements ExternalTreeNodeI
         return false;
       }
     }
-    else if (!node.equals(other.node))
+    if (getId() != other.getId())
+    {
+      return false;
+    }
+
+    if (!node.equals(other.node))
     {
       return false;
     }
@@ -218,4 +232,10 @@ public class TreeNode implements ExternalTreeNodeI
   }
 
 
+  @Override
+  public float getYcoord()
+  {
+    return node.getYcoord();
+  }
+
 }