JAL-2794 most method parameters/class variables made final
[jalview.git] / src / jalview / ext / archaeopteryx / ArchaeopteryxInit.java
1 package jalview.ext.archaeopteryx;
2
3 import jalview.analysis.TreeBuilder;
4 import jalview.datamodel.SequenceI;
5 import jalview.gui.Desktop;
6 import jalview.viewmodel.AlignmentViewport;
7
8 import java.awt.Dimension;
9 import java.util.Map;
10
11 import org.forester.archaeopteryx.Archaeopteryx;
12 import org.forester.archaeopteryx.MainFrame;
13 import org.forester.phylogeny.Phylogeny;
14 import org.forester.phylogeny.PhylogenyNode;
15
16 public final class ArchaeopteryxInit
17 {
18   /**
19    * This method should generally not be used as it does not bind the tree to
20    * its alignment
21    * 
22    * @param aptxTrees
23    * @return
24    */
25   public static MainFrame createUnboundInstance(final Phylogeny aptxTree)
26   {
27     Phylogeny[] aptxTrees = { aptxTree };
28     return createBoundAptxFrame(aptxTrees, null);
29   }
30
31   public static MainFrame createInstance(final Phylogeny[] aptxTrees,
32           AlignmentViewport jalviewAlignmentView)
33   {
34     return createBoundAptxFrame(aptxTrees, jalviewAlignmentView);
35
36   }
37
38   public static MainFrame createInstance(final Phylogeny aptxTree,
39           final AlignmentViewport jalviewAlignmentView)
40   {
41     Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
42     // several trees simultaneously
43     return createBoundAptxFrame(aptxTrees, jalviewAlignmentView);
44
45   }
46
47   public static MainFrame createInstance(
48           final TreeBuilder calculatedTree) // very dense method, to be split up
49   {
50     ArchaeopteryxTreeConverter aptxTreeBuilder = new ArchaeopteryxTreeConverter(
51             calculatedTree);
52
53     Phylogeny aptxTree = aptxTreeBuilder.buildAptxTree();
54     Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
55                                           // several trees simultaneously
56
57     MainFrame aptxApp = createBoundAptxFrame(aptxTrees,
58             calculatedTree.getAvport());
59     bindNodesToJalviewSequences(aptxApp, calculatedTree.getAvport(),
60             aptxTreeBuilder.getAlignmentBoundNodes(),
61             aptxTreeBuilder.getNodesBoundAlignment());
62     return bindFrameToJalview(aptxApp);
63
64   }
65
66
67
68
69   private static MainFrame createBoundAptxFrame(final Phylogeny[] aptxTrees,
70           final AlignmentViewport jalviewAlignmentView)
71   {
72     MainFrame aptxApp = Archaeopteryx.createApplication(aptxTrees,
73             "_aptx_jalview_configuration_file", null);
74
75     return aptxApp;
76   }
77
78   private static void bindNodesToJalviewSequences(final MainFrame aptxApp,
79           final AlignmentViewport jalviewAlignViewport,
80           final Map<SequenceI, PhylogenyNode> alignMappedToNodes,
81           final Map<PhylogenyNode, SequenceI> nodesMappedToAlign)
82   {
83     new JalviewAptxBinding(aptxApp, jalviewAlignViewport,
84             alignMappedToNodes, nodesMappedToAlign);
85   }
86
87
88   private static MainFrame bindFrameToJalview(final MainFrame aptxApp)
89   {
90     int width = 400;
91     int height = 550;
92     aptxApp.setMinimumSize(new Dimension(width, height));
93
94     Desktop.addInternalFrame(aptxApp, "Archaeopteryx Tree View", true,
95             width, height, true, true);
96
97     return aptxApp;
98
99   }
100
101
102 }