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;
16 import java.awt.event.ActionEvent;
17 import java.awt.event.ActionListener;
19 import javax.accessibility.AccessibleContext;
20 import javax.swing.JLayeredPane;
21 import javax.swing.JMenu;
22 import javax.swing.JMenuBar;
23 import javax.swing.JMenuItem;
24 import javax.swing.JRootPane;
25 import javax.swing.JSeparator;
26 import javax.swing.event.InternalFrameListener;
28 import org.forester.archaeopteryx.MainFrame;
30 public class AptxFrame implements ExternalTreeFrame
32 private final MainFrame aptxFrame;
34 private ExternalTreePanel aptxPanel;
36 private ExternalTreeControlsI aptxControls;
38 public AptxFrame(MainFrame aptx)
41 aptxPanel = new AptxTreePanel(
42 aptxFrame.getMainPanel().getCurrentTreePanel());
43 aptxControls = new AptxControlPanel(
44 aptxFrame.getMainPanel().getControlPanel());
45 adaptAptxGui(aptxFrame);
49 * Hides certain redundant Archaeopteryx GUI elements such as the menu items
50 * for reading in trees and adds extra items related to Jalview such as the
56 private void adaptAptxGui(MainFrame aptxFrame)
58 JMenuBar frameBar = aptxFrame.getJMenuBar();
59 boolean epsAdded = false;
60 for (int i = 0; i < frameBar.getMenuCount();i++) {
61 JMenu menu = frameBar.getMenu(i);
62 int menuCount = menu.getMenuComponentCount();
64 if (menu.getText().contains("File"))
66 // hide all "Read from ..." and "New" menu items and any Separators that
67 // come directly after them
68 Component previousComp = null;
69 for (int x = 0; x < menuCount; x++)
71 Component menuItem = menu.getMenuComponent(x);
72 if (previousComp instanceof JMenuItem)
74 JMenuItem previousMenuItem = (JMenuItem) previousComp;
75 if (previousMenuItem.getText().startsWith("Read")
76 || previousMenuItem.getText()
78 || previousMenuItem.getText()
79 .startsWith("Close Tab"))
81 previousComp.setVisible(false);
83 if (menuItem instanceof JSeparator)
85 menuItem.setVisible(false);
90 if ((!epsAdded) && previousMenuItem.getText()
91 .startsWith("Export to"))
93 JMenuItem exportEps = new JMenuItem("Export to EPS file...");
94 menu.add(exportEps, x);
95 exportEps.addActionListener(new ActionListener()
99 public void actionPerformed(ActionEvent e)
101 // TODO Auto-generated method stub
110 previousComp = menuItem;
113 else if (menu.getText().contains("Inference"))
115 menu.setVisible(false);
117 else if (menu.getText().contains("View"))
120 JMenuItem sortByTree = new JMenuItem("Sort alignment by tree");
121 JMenuItem refreshJalview = new JMenuItem(
122 "Filter alignment to show only currently visible sequences");
124 refreshJalview.setFont(menu.getFont());
126 menu.add(sortByTree);
127 menu.add(refreshJalview);
129 sortByTree.setFont(menu.getFont());
130 refreshJalview.addActionListener(new ActionListener()
134 public void actionPerformed(ActionEvent e)
136 // TODO Auto-generated method stub
146 aptxFrame.validate();
150 public ExternalTreePanel getTreePanel()
156 public ExternalTreeI getTree()
158 return aptxPanel.getTree();
162 public void checkMultipleTrees()
164 aptxFrame.activateSaveAllIfNeeded();
169 public int getNumberOfTrees()
171 return aptxFrame.getMainPanel().getTabbedPane().getTabCount();
175 public ExternalTreeControlsI getTreeControls()
181 public AccessibleContext getAccessibleContext()
183 return aptxFrame.getAccessibleContext();
187 public JRootPane getRootPane()
189 return aptxFrame.getRootPane();
193 public void setContentPane(Container contentPane)
195 aptxFrame.setContentPane(contentPane);
200 public Container getContentPane()
202 return aptxFrame.getContentPane();
206 public void setLayeredPane(JLayeredPane layeredPane)
208 aptxFrame.setLayeredPane(layeredPane);
213 public JLayeredPane getLayeredPane()
215 return aptxFrame.getLayeredPane();
219 public void setGlassPane(Component glassPane)
221 aptxFrame.setGlassPane(glassPane);
226 public Component getGlassPane()
228 return aptxFrame.getGlassPane();
232 public boolean imageUpdate(Image img, int infoflags, int x, int y,
233 int width, int height)
235 return aptxFrame.imageUpdate(img, infoflags, x, y, width, height);
239 public Font getFont()
241 return aptxFrame.getFont();
245 public void remove(MenuComponent comp)
247 aptxFrame.remove(comp);
253 public boolean postEvent(Event evt)
255 return aptxFrame.postEvent(evt);
259 public void addFrameListener(InternalFrameListener listener)
261 aptxFrame.addInternalFrameListener(listener);
266 public void removeFrameListener(InternalFrameListener listener)
268 aptxFrame.removeInternalFrameListener(listener);
273 public InternalFrameListener[] getFrameListeners()
275 return aptxFrame.getInternalFrameListeners();
280 public void repaint()
287 public void setMinimumSize(Dimension dimension)
289 aptxFrame.setMinimumSize(dimension);
294 public boolean isShowing()
296 return aptxFrame.isShowing();
300 public Container getTopLevelAncestor()
302 return aptxFrame.getTopLevelAncestor();
306 public void addFrameToJalview(String title, boolean makeVisible,
307 int width, int height, boolean resizable, boolean ignoreMinSize)
309 Desktop.addInternalFrame(aptxFrame, title, makeVisible, width, height,
310 resizable, ignoreMinSize);