X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Farchaeopteryx%2FTreeNode.java;h=07c8d95635e6b0933beb41a4d050120f41ab6891;hb=2c3b0597cfb782c08f8ec3686412fc4975a1dbd3;hp=914cdd2dc5d9f8fdd69ed9b562731022ee808956;hpb=733974a24ce2eb5755c46bbb2a41674493d04740;p=jalview.git diff --git a/src/jalview/ext/archaeopteryx/TreeNode.java b/src/jalview/ext/archaeopteryx/TreeNode.java index 914cdd2..07c8d95 100644 --- a/src/jalview/ext/archaeopteryx/TreeNode.java +++ b/src/jalview/ext/archaeopteryx/TreeNode.java @@ -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 originalNodes = new HashMap<>( + private static Map originalNodes = new HashMap<>( 500); // prolly make this size dynamic - private static Map wrappedNodes = new HashMap<>( + private static Map wrappedNodes = new HashMap<>( 500); private TreeNode(PhylogenyNode aptxNode) @@ -42,7 +42,7 @@ public class TreeNode implements ExternalTreeNodeI @Override - public List getAllDescendants() + public List getAllDescendants() { List descNodes = PhylogenyMethods @@ -53,7 +53,7 @@ public class TreeNode implements ExternalTreeNodeI } @Override - public List getExternalDescendants() + public List getExternalDescendants() { List extDescNodes = node.getAllExternalDescendants(); return getUniqueWrappers(extDescNodes); @@ -61,7 +61,7 @@ public class TreeNode implements ExternalTreeNodeI @Override - public List getDirectChildren() + public List getDirectChildren() { List 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 getUniqueWrappers( + public static List getUniqueWrappers( List aptxNodes) { - List wrappedNodes = new ArrayList<>( + List 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(); + } + }