1 package jalview.ext.archaeopteryx;
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 import jalview.gui.Desktop;
9 import java.awt.Component;
10 import java.awt.Container;
11 import java.awt.Dimension;
12 import java.awt.Event;
14 import java.awt.Image;
15 import java.awt.MenuComponent;
17 import javax.accessibility.AccessibleContext;
18 import javax.swing.JLayeredPane;
19 import javax.swing.JMenu;
20 import javax.swing.JMenuBar;
21 import javax.swing.JMenuItem;
22 import javax.swing.JRootPane;
23 import javax.swing.JSeparator;
24 import javax.swing.event.InternalFrameListener;
26 import org.forester.archaeopteryx.MainFrame;
28 public class AptxFrame implements ExternalTreeFrame
30 private final MainFrame aptxFrame;
32 private ExternalTreePanel aptxPanel;
34 private ExternalTreeControlsI aptxControls;
36 public AptxFrame(MainFrame aptx)
39 aptxPanel = new AptxTreePanel(
40 aptxFrame.getMainPanel().getCurrentTreePanel());
41 aptxControls = new AptxControlPanel(
42 aptxFrame.getMainPanel().getControlPanel());
43 adaptAptxGui(aptxFrame);
47 * Hides certain redundant Archaeopteryx GUI elements such as the menu items
48 * for reading in trees and adds extra items related to Jalview such as the
54 private void adaptAptxGui(MainFrame aptxFrame)
56 JMenuBar frameBar = aptxFrame.getJMenuBar();
58 for (int i = 0; i < frameBar.getMenuCount(); i++)
60 JMenu menu = frameBar.getMenu(i);
62 if (menu.getText().startsWith("File"))
64 // hide all "Read from ..." and "New" menu items and any Separators that
65 // come directly after them
66 Component previousMenuItem = null;
67 for (Component menuItem : menu.getMenuComponents())
69 if (previousMenuItem instanceof JMenuItem)
71 if (((JMenuItem) previousMenuItem).getText().startsWith("Read")
72 || ((JMenuItem) previousMenuItem).getText()
75 previousMenuItem.setVisible(false);
77 if (menuItem instanceof JSeparator)
79 menuItem.setVisible(false);
83 previousMenuItem = menuItem;
86 else if (menu.getText().startsWith("Inference"))
88 menu.setVisible(false);
90 else if (menu.getText().startsWith("View"))
93 JMenuItem sortMenuItem = new JMenuItem("Sort alignment by tree");
94 sortMenuItem.setVisible(false);
95 menu.add(sortMenuItem);
103 public ExternalTreePanel getTreePanel()
109 public ExternalTreeI getTree()
111 return aptxPanel.getTree();
115 public void checkMultipleTrees()
117 aptxFrame.activateSaveAllIfNeeded();
122 public int getNumberOfTrees()
124 return aptxFrame.getMainPanel().getTabbedPane().getTabCount();
128 public ExternalTreeControlsI getTreeControls()
134 public AccessibleContext getAccessibleContext()
136 return aptxFrame.getAccessibleContext();
140 public JRootPane getRootPane()
142 return aptxFrame.getRootPane();
146 public void setContentPane(Container contentPane)
148 aptxFrame.setContentPane(contentPane);
153 public Container getContentPane()
155 return aptxFrame.getContentPane();
159 public void setLayeredPane(JLayeredPane layeredPane)
161 aptxFrame.setLayeredPane(layeredPane);
166 public JLayeredPane getLayeredPane()
168 return aptxFrame.getLayeredPane();
172 public void setGlassPane(Component glassPane)
174 aptxFrame.setGlassPane(glassPane);
179 public Component getGlassPane()
181 return aptxFrame.getGlassPane();
185 public boolean imageUpdate(Image img, int infoflags, int x, int y,
186 int width, int height)
188 return aptxFrame.imageUpdate(img, infoflags, x, y, width, height);
192 public Font getFont()
194 return aptxFrame.getFont();
198 public void remove(MenuComponent comp)
200 aptxFrame.remove(comp);
206 public boolean postEvent(Event evt)
208 return aptxFrame.postEvent(evt);
212 public void addFrameListener(InternalFrameListener listener)
214 aptxFrame.addInternalFrameListener(listener);
219 public void removeFrameListener(InternalFrameListener listener)
221 aptxFrame.removeInternalFrameListener(listener);
226 public InternalFrameListener[] getFrameListeners()
228 return aptxFrame.getInternalFrameListeners();
233 public void repaint()
240 public void setMinimumSize(Dimension dimension)
242 aptxFrame.setMinimumSize(dimension);
247 public boolean isShowing()
249 return aptxFrame.isShowing();
253 public Container getTopLevelAncestor()
255 return aptxFrame.getTopLevelAncestor();
259 public void addFrameToJalview(String title, boolean makeVisible,
260 int width, int height, boolean resizable, boolean ignoreMinSize)
262 Desktop.addInternalFrame(aptxFrame, title, makeVisible, width, height,
263 resizable, ignoreMinSize);