1 package jalview.ext.archaeopteryx;
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;
10 import java.awt.Dimension;
13 import org.forester.archaeopteryx.Archaeopteryx;
14 import org.forester.archaeopteryx.MainFrame;
15 import org.forester.phylogeny.Phylogeny;
16 import org.forester.phylogeny.PhylogenyNode;
19 * Static class for creating Archaeopteryx tree viewer instances from calculated
20 * trees and letting them be bound to Jalview.
22 * @author kjvanderheide
25 public final class AptxInit
28 * Test method, should generally not be used as it does not bind the tree to
34 public static MainFrame createUnboundInstance(final Phylogeny aptxTree)
36 Phylogeny[] aptxTrees = { aptxTree };
37 return createAptxFrame(aptxTrees);
40 // public static MainFrame createInstance(final Phylogeny[] aptxTrees,
41 // AlignmentViewport jalviewAlignmentView)
43 // return createAptxFrameInJalview(aptxTrees);
47 // public static MainFrame createInstance(final Phylogeny aptxTree,
48 // final AlignmentViewport jalviewAlignmentView)
50 // Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
51 // // several trees simultaneously
52 // return createAptxFrameInJalview(aptxTrees);
56 public static MainFrame createInstance(
57 final TreeBuilder calculatedTree) // very dense method, to be split up
59 ExternalTreeBuilderI<Phylogeny, PhylogenyNode> aptxTreeBuilder = new AptxTreeBuilder(
62 Phylogeny aptxTree = aptxTreeBuilder.buildTree();
63 Phylogeny[] aptxTrees = { aptxTree }; // future possibility to load in
64 // several trees simultaneously
66 MainFrame aptxApp = createAptxFrame(aptxTrees);
68 bindNodesToJalviewSequences(aptxApp, calculatedTree.getAvport(),
69 aptxTreeBuilder.getAlignmentBoundNodes(),
70 aptxTreeBuilder.getNodesBoundAlignment());
71 return bindFrameToJalview(aptxApp);
78 public static MainFrame createAptxFrame(
79 final Phylogeny[] aptxTrees)
81 MainFrame aptxApp = Archaeopteryx.createApplication(aptxTrees,
82 "_aptx_jalview_configuration_file", null);
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)
92 return new JalviewBinding(aptxApp, jalviewAlignViewport,
93 alignMappedToNodes, nodesMappedToAlign);
97 public static MainFrame bindFrameToJalview(final MainFrame aptxApp)
101 aptxApp.setMinimumSize(new Dimension(width, height));
102 // aptxApp.setFont(Desktop.instance.getFont());
103 // aptxApp.getMainPanel().setFont(Desktop.instance.getFont());
105 Desktop.addInternalFrame(aptxApp, "Archaeopteryx Tree View", true,
106 width, height, true, true);