JAL-1953 start on making everything interface based
[jalview.git] / src / jalview / ext / archaeopteryx / AptxFrame.java
1 package jalview.ext.archaeopteryx;
2
3 import jalview.ext.treeviewer.ExternalTreeControlsI;
4 import jalview.ext.treeviewer.ExternalTreeFrame;
5 import jalview.ext.treeviewer.ExternalTreeI;
6 import jalview.ext.treeviewer.ExternalTreePanel;
7
8 import java.awt.Component;
9
10 import javax.swing.JMenu;
11 import javax.swing.JMenuBar;
12 import javax.swing.JMenuItem;
13 import javax.swing.JSeparator;
14
15 import org.forester.archaeopteryx.MainFrame;
16
17 public class AptxFrame extends ExternalTreeFrame
18 {
19   private final MainFrame aptxFrame;
20
21   public AptxFrame(MainFrame aptx)
22   {
23     aptxFrame = aptx;
24     adaptAptxGui(aptxFrame);
25
26   }
27   /**
28    * Hides certain redundant Archaeopteryx GUI elements such as the menu items
29    * for reading in trees and adds extra items related to Jalview such as the
30    * tree sorting item.
31    * 
32    * 
33    * @param aptxFrame
34    */
35   private void adaptAptxGui(MainFrame aptxFrame)
36   {
37     JMenuBar frameBar = aptxFrame.getJMenuBar();
38
39     for (int i = 0; i < frameBar.getMenuCount(); i++)
40     {
41       JMenu menu = frameBar.getMenu(i);
42
43       if (menu.getText().startsWith("File"))
44       {
45         // hide all "Read from ..." and "New" menu items and any Separators that
46         // come directly after them
47         Component previousMenuItem = null;
48         for (Component menuItem : menu.getMenuComponents())
49         {
50           if (previousMenuItem instanceof JMenuItem)
51           {
52             if (((JMenuItem) previousMenuItem).getText().startsWith("Read")
53                     || ((JMenuItem) previousMenuItem).getText()
54                             .startsWith("New"))
55             {
56               previousMenuItem.setVisible(false);
57
58               if (menuItem instanceof JSeparator)
59               {
60                 menuItem.setVisible(false);
61               }
62             }
63           }
64           previousMenuItem = menuItem;
65         }
66       }
67       else if (menu.getText().startsWith("Inference"))
68       {
69         menu.setVisible(false);
70       }
71       else if (menu.getText().startsWith("View"))
72       {
73         menu.addSeparator();
74         JMenuItem sortMenuItem = new JMenuItem("Sort alignment by tree");
75         sortMenuItem.setVisible(false);
76         menu.add(sortMenuItem);
77       }
78
79     }
80     aptxFrame.validate();
81   }
82
83   @Override
84   public ExternalTreePanel getTreePanel()
85   {
86     ExternalTreePanel aptxPanel = new AptxTreePanel(
87             aptxFrame.getMainPanel().getCurrentTreePanel());
88     return aptxPanel;
89   }
90
91   @Override
92   public void switchTreePanel(int panelIndex)
93   {
94     aptxFrame.getMainPanel().getTabbedPane().getTabComponentAt(panelIndex);
95
96   }
97
98   @Override
99   public ExternalTreeI getTree()
100   {
101     return new Tree(
102             aptxFrame.getMainPanel().getCurrentTreePanel().getPhylogeny());
103   }
104
105   @Override
106   public void checkMultipleTrees()
107   {
108     aptxFrame.activateSaveAllIfNeeded();
109
110   }
111
112   @Override
113   public int getNumberOfTrees()
114   {
115     return aptxFrame.getMainPanel().getTabbedPane().getTabCount();
116   }
117
118   @Override
119   public ExternalTreeControlsI getTreeControls()
120   {
121     return new AptxControlPanel(aptxFrame.getMainPanel().getControlPanel());
122   }
123 }