Merge branch 'kjvdh/features/PhylogenyViewer' of
[jalview.git] / src / jalview / ext / archaeopteryx / AptxInit.java
1 package jalview.ext.archaeopteryx;
2
3 import jalview.analysis.TreeBuilder;
4 import jalview.datamodel.SequenceI;
5 import jalview.ext.treeviewer.ExternalTreeBuilderI;
6 import jalview.ext.treeviewer.ExternalTreeViewerBindingI;
7 import jalview.gui.Desktop;
8 import jalview.viewmodel.AlignmentViewport;
9
10 import java.awt.Dimension;
11 import java.util.Map;
12
13 import org.forester.archaeopteryx.Archaeopteryx;
14 import org.forester.archaeopteryx.MainFrame;
15 import org.forester.phylogeny.Phylogeny;
16 import org.forester.phylogeny.PhylogenyNode;
17
18 /**
19  * Static class for creating Archaeopteryx tree viewer instances from calculated
20  * trees and letting them be bound to Jalview.
21  * 
22  * @author kjvanderheide
23  *
24  */
25 public final class AptxInit
26 {
27   /**
28    * Test method, should generally not be used as it does not bind the tree to
29    * its alignment
30    * 
31    * @param aptxTrees
32    * @return
33    */
34   public static MainFrame createUnboundInstance(final Phylogeny aptxTree)
35   {
36     Phylogeny[] aptxTrees = { aptxTree };
37     return createAptxFrame(aptxTrees);
38   }
39
40   // public static MainFrame createInstance(final Phylogeny[] aptxTrees,
41   // AlignmentViewport jalviewAlignmentView)
42   // {
43   // return createAptxFrameInJalview(aptxTrees);
44   //
45   // }
46   //
47   // public static MainFrame createInstance(final Phylogeny aptxTree,
48   // final AlignmentViewport jalviewAlignmentView)
49   // {
50   // Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
51   // // several trees simultaneously
52   // return createAptxFrameInJalview(aptxTrees);
53   //
54   // }
55
56   public static MainFrame createInstance(
57           final TreeBuilder calculatedTree) // very dense method, to be split up
58   {
59     ExternalTreeBuilderI<Phylogeny, PhylogenyNode> aptxTreeBuilder = new AptxTreeBuilder(
60             calculatedTree);
61
62     Phylogeny aptxTree = aptxTreeBuilder.buildTree();
63     Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
64                                           // several trees simultaneously
65
66     MainFrame aptxApp = createAptxFrame(aptxTrees);
67             
68     bindNodesToJalviewSequences(aptxApp, calculatedTree.getAvport(),
69             aptxTreeBuilder.getAlignmentBoundNodes(),
70             aptxTreeBuilder.getNodesBoundAlignment());
71     return bindFrameToJalview(aptxApp);
72
73   }
74
75
76
77
78   public static MainFrame createAptxFrame(
79           final Phylogeny[] aptxTrees)
80   {
81     MainFrame aptxApp = Archaeopteryx.createApplication(aptxTrees,
82             "_aptx_jalview_configuration_file", null);
83     return aptxApp;
84   }
85
86   public static ExternalTreeViewerBindingI<?> bindNodesToJalviewSequences(
87           final MainFrame aptxApp,
88           final AlignmentViewport jalviewAlignViewport,
89           final Map<SequenceI, PhylogenyNode> alignMappedToNodes,
90           final Map<PhylogenyNode, SequenceI> nodesMappedToAlign)
91   {
92     return new JalviewBinding(aptxApp, jalviewAlignViewport,
93             alignMappedToNodes, nodesMappedToAlign);
94   }
95
96
97   public static MainFrame bindFrameToJalview(final MainFrame aptxApp)
98   {
99     int width = 400;
100     int height = 550;
101     aptxApp.setMinimumSize(new Dimension(width, height));
102     // aptxApp.setFont(Desktop.instance.getFont());
103     // aptxApp.getMainPanel().setFont(Desktop.instance.getFont());
104
105     Desktop.addInternalFrame(aptxApp, "Archaeopteryx Tree View", true,
106             width, height, true, true);
107
108     return aptxApp;
109
110   }
111
112
113 }