d0656620b7fcc55de7b7ae267c087874c144c498
[jalview.git] / src / jalview / ext / treeviewer / TreeViewerUtils.java
1 package jalview.ext.treeviewer;
2
3 import jalview.datamodel.SequenceI;
4 import jalview.ext.archaeopteryx.JalviewBinding;
5 import jalview.util.MessageManager;
6 import jalview.viewmodel.AlignmentViewport;
7
8 import java.awt.Dimension;
9 import java.io.File;
10 import java.util.HashMap;
11 import java.util.Map;
12
13 /**
14  * Static class containing generic methods for
15  * 
16  * @author kjvanderheide
17  *
18  */
19 public final class TreeViewerUtils
20 {
21   /**
22    * All tree viewers should be added to this map so that Jalview saves them to
23    * its project.
24    */
25   private static Map<TreeFrameI, TreeViewerBindingI> activeViews = new HashMap<>();
26
27   /**
28    * 
29    * @param treeFrame
30    * @return
31    */
32   public static TreeFrameI addTreeViewFrameToJalview(
33           final TreeFrameI treeFrame)
34   {
35     int width = 400;
36     int height = 550;
37     treeFrame.setMinimumSize(new Dimension(width, height));
38     // aptxApp.setFont(Desktop.instance.getFont());
39     // aptxApp.getMainPanel().setFont(Desktop.instance.getFont());
40     String frameTitle = MessageManager.getString("label.aptx_title");
41     File treeFile = treeFrame.getTreePanel().getTreeFile();
42     if (treeFile != null)
43     {
44       frameTitle += MessageManager.formatMessage("label.of_x",
45               new String[]
46               { treeFile.getAbsolutePath() });
47     }
48     // Usually redundant as this is done when associating nodes as well but that
49     // step could be bypassed
50     activeViews.put(treeFrame, treeFrame.getViewBinding());
51
52     treeFrame.addFrameToJalview(frameTitle, true, width, height, true,
53             false);
54     treeFrame.getTreeControls().displayEntireTree();
55     return treeFrame;
56   
57   }
58
59   /**
60    * 
61    * @param treeFrame
62    * @param jalviewAlignViewport
63    * @param alignMappedToNodes
64    * @param nodesMappedToAlign
65    * @return
66    */
67   public static TreeViewerBindingI associateNodesWithJalviewSequences(
68           final TreeFrameI treeFrame,
69           final AlignmentViewport jalviewAlignViewport,
70           final Map<SequenceI, TreeNodeI> alignMappedToNodes,
71           final Map<TreeNodeI, SequenceI> nodesMappedToAlign)
72   {
73     TreeViewerBindingI treeBinding = new JalviewBinding(treeFrame,
74             jalviewAlignViewport,
75             alignMappedToNodes, nodesMappedToAlign);
76     jalviewAlignViewport.setCurrentExtTree(treeFrame.getTree());
77     activeViews.put(treeFrame, treeFrame.getViewBinding());
78
79     return treeBinding;
80   }
81
82   public static Map<TreeFrameI, TreeViewerBindingI> getActiveTreeViews()
83   {
84     return activeViews;
85   }
86
87 }