78b3981d065393a5a8a7d8c25a6ea280aa47cf39
[jalview.git] / src / jalview / ext / archaeopteryx / TreeNode.java
1 package jalview.ext.archaeopteryx;
2
3 import jalview.datamodel.SequenceI;
4 import jalview.ext.forester.DataConversions;
5 import jalview.ext.treeviewer.ExternalTreeNodeI;
6
7 import java.awt.Color;
8 import java.util.List;
9
10 import org.forester.phylogeny.PhylogenyMethods;
11 import org.forester.phylogeny.PhylogenyNode;
12 import org.forester.phylogeny.data.BranchColor;
13
14 public class TreeNode implements ExternalTreeNodeI
15 {
16   private final PhylogenyNode node;
17
18   private SequenceI nodeSeq;
19
20   public TreeNode(PhylogenyNode aptxNode)
21   {
22     node = aptxNode;
23
24   }
25
26
27   @Override
28   public String getNodeName()
29   {
30     return node.getName();
31   }
32
33   @Override
34   public List<ExternalTreeNodeI> getAllDescendants()
35   {
36     List<PhylogenyNode> descNodes = PhylogenyMethods
37             .getAllDescendants(node);
38     return DataConversions.getConvertedTreeNodes(descNodes);
39
40   }
41
42   @Override
43   public List<ExternalTreeNodeI> getExternalDescendants()
44   {
45     List<PhylogenyNode> extDescNodes = node.getAllExternalDescendants();
46     return DataConversions.getConvertedTreeNodes(extDescNodes);
47   }
48
49
50   @Override
51   public List<ExternalTreeNodeI> getDirectChildren()
52   {
53     List<PhylogenyNode> childNodes = node.getDescendants();
54     return DataConversions.getConvertedTreeNodes(childNodes);
55   }
56
57
58
59   @Override
60   public void setSequence(SequenceI seq)
61   {
62     nodeSeq = seq;
63     org.forester.phylogeny.data.Sequence foresterFormatSeq = DataConversions
64             .createForesterSequence(seq, true);
65     node.getNodeData().setSequence(foresterFormatSeq);
66
67   }
68
69   @Override
70   public SequenceI getSequence()
71   {
72     return nodeSeq;
73     // ideally this would return a converted node.getNodeData().getSequence()
74   }
75
76   @Override
77   public void addAsChild(ExternalTreeNodeI childNode)
78   {
79     PhylogenyNode aptxNode = new PhylogenyNode(childNode.getNodeName());
80
81     // expand on this
82     node.addAsChild(aptxNode);
83
84   }
85
86   @Override
87   public long getId()
88   {
89     return node.getId();
90   }
91
92   @Override
93   public float getXcoord()
94   {
95     return node.getXcoord();
96   }
97
98   @Override
99   public void setBranchColor(Color branchColor)
100   {
101     node.getBranchData().setBranchColor(new BranchColor(branchColor));
102
103   }
104
105   @Override
106   public boolean isInternal()
107   {
108     return node.isInternal();
109   }
110
111 }