X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=blobdiff_plain;f=src%2Fjalview%2Fjbgui%2FGDesktop.java;h=ca952220a5013b8d67cf24a59b1c310b2b2ec7cf;hp=a8e2ef5aebdc4f9923380d3482a969af73f99d38;hb=627937c70fea0978f2075f198836756e94a81113;hpb=506d60f0e188723ddc91c26824b41ac7034df3fe diff --git a/src/jalview/jbgui/GDesktop.java b/src/jalview/jbgui/GDesktop.java index a8e2ef5..ca95222 100755 --- a/src/jalview/jbgui/GDesktop.java +++ b/src/jalview/jbgui/GDesktop.java @@ -1,27 +1,40 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4) - * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This file is part of Jalview. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.jbgui; -import java.awt.*; -import java.awt.event.*; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; -import javax.swing.*; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; + +import jalview.api.AlignmentViewPanel; +import jalview.bin.Cache; +import jalview.io.FileFormatException; +import jalview.util.MessageManager; +import jalview.util.Platform; /** * DOCUMENT ME! @@ -29,8 +42,10 @@ import javax.swing.*; * @author $author$ * @version $Revision$ */ +@SuppressWarnings("serial") public class GDesktop extends JFrame { + protected static JMenu windowMenu = new JMenu(); JMenuBar desktopMenubar = new JMenuBar(); @@ -39,10 +54,6 @@ public class GDesktop extends JFrame JMenu HelpMenu = new JMenu(); - protected JMenu VamsasMenu = new JMenu(); - - protected JMenu VamsasStMenu = new JMenu(); - JMenuItem inputLocalFileMenuItem = new JMenuItem(); JMenuItem inputURLMenuItem = new JMenuItem(); @@ -63,20 +74,14 @@ public class GDesktop extends JFrame JMenuItem saveState = new JMenuItem(); + JMenuItem saveAsState = new JMenuItem(); + JMenuItem loadState = new JMenuItem(); JMenu inputMenu = new JMenu(); - protected JMenuItem vamsasStart = new JMenuItem(); - - protected JMenuItem vamsasImport = new JMenuItem(); - - protected JMenuItem vamsasSave = new JMenuItem(); - JMenuItem inputSequence = new JMenuItem(); - protected JMenuItem vamsasStop = new JMenuItem(); - JMenuItem closeAll = new JMenuItem(); JMenuItem raiseRelated = new JMenuItem(); @@ -87,11 +92,22 @@ public class GDesktop extends JFrame JMenuItem garbageCollect = new JMenuItem(); + protected JMenuItem groovyShell; + + protected JCheckBoxMenuItem experimentalFeatures; + + protected JCheckBoxMenuItem showConsole = new JCheckBoxMenuItem(); + + protected JCheckBoxMenuItem showNews = new JCheckBoxMenuItem(); + + protected JMenuItem snapShotWindow = new JMenuItem(); + /** * Creates a new GDesktop object. */ public GDesktop() { + super(); try { jbInit(); @@ -101,11 +117,12 @@ public class GDesktop extends JFrame e.printStackTrace(); } - if (!new jalview.util.Platform().isAMac()) + if (Platform.allowMnemonics()) { + // BH was !Platform.isAMacAndNotJS()) i.e. "JS or not Mac" + // but here we want just not a Mac, period, right? FileMenu.setMnemonic('F'); inputLocalFileMenuItem.setMnemonic('L'); - VamsasMenu.setMnemonic('V'); inputURLMenuItem.setMnemonic('U'); inputTextboxMenuItem.setMnemonic('C'); quit.setMnemonic('Q'); @@ -119,208 +136,294 @@ public class GDesktop extends JFrame * DOCUMENT ME! * * @throws Exception - * DOCUMENT ME! + * DOCUMENT ME! */ private void jbInit() throws Exception { - FileMenu.setText("File"); - HelpMenu.setText("Help"); - VamsasMenu.setText("Vamsas"); - VamsasMenu.setToolTipText("Share data with other vamsas applications."); - VamsasStMenu.setText("Connect to"); - VamsasStMenu.setToolTipText("Join an existing vamsas session"); - inputLocalFileMenuItem.setText("from File"); - inputLocalFileMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_O, Toolkit - .getDefaultToolkit().getMenuShortcutKeyMask(), false)); + boolean apqHandlersSet = false; + /** + * APQHandlers sets handlers for About, Preferences and Quit actions + * peculiar to macOS's application menu. APQHandlers will check to see if a + * handler is supported before setting it. + */ + try + { + apqHandlersSet = APQHandlers.setAPQHandlers(this); + } catch (Exception e) + { + System.out.println("Cannot set APQHandlers"); + // e.printStackTrace(); + } catch (Throwable t) + { + jalview.bin.Console + .warn("Error setting APQHandlers: " + t.toString()); + jalview.bin.Console.trace(Cache.getStackTraceString(t)); + } + + setName("jalview-desktop"); + FileMenu.setText(MessageManager.getString("action.file")); + HelpMenu.setText(MessageManager.getString("action.help")); + inputLocalFileMenuItem + .setText(MessageManager.getString("label.load_tree_from_file")); + inputLocalFileMenuItem + .setAccelerator( + javax.swing.KeyStroke + .getKeyStroke(java.awt.event.KeyEvent.VK_O, + jalview.util.ShortcutKeyMaskExWrapper + .getMenuShortcutKeyMaskEx(), + false)); inputLocalFileMenuItem .addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { inputLocalFileMenuItem_actionPerformed(null); } }); - inputURLMenuItem.setText("from URL"); + inputURLMenuItem.setText(MessageManager.getString("label.from_url")); inputURLMenuItem.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - inputURLMenuItem_actionPerformed(null); + try + { + inputURLMenuItem_actionPerformed(null); + } catch (FileFormatException e1) + { + System.err.println("Error loading from URL: " + e1.getMessage()); + } } }); - inputTextboxMenuItem.setText("from Textbox"); + inputTextboxMenuItem + .setText(MessageManager.getString("label.from_textbox")); inputTextboxMenuItem .addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { inputTextboxMenuItem_actionPerformed(null); } }); - quit.setText("Quit"); + quit.setText(MessageManager.getString("action.quit")); quit.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { quit(); } }); - aboutMenuItem.setText("About"); + aboutMenuItem.setText(MessageManager.getString("label.about")); aboutMenuItem.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { aboutMenuItem_actionPerformed(e); } }); - documentationMenuItem.setText("Documentation"); + documentationMenuItem + .setText(MessageManager.getString("label.documentation")); documentationMenuItem.setAccelerator(javax.swing.KeyStroke .getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0, false)); documentationMenuItem .addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - documentationMenuItem_actionPerformed(e); + documentationMenuItem_actionPerformed(); } }); this.getContentPane().setLayout(flowLayout1); - windowMenu.setText("Window"); - preferences.setText("Preferences..."); + windowMenu.setText(MessageManager.getString("label.window")); + preferences.setText(MessageManager.getString("label.preferences")); preferences.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { preferences_actionPerformed(e); } }); - toolsMenu.setText("Tools"); - saveState.setText("Save Project"); + toolsMenu.setText(MessageManager.getString("label.tools")); + saveState.setText(MessageManager.getString("action.save_project")); saveState.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - saveState_actionPerformed(e); + saveState_actionPerformed(); } }); - loadState.setText("Load Project"); + saveAsState.setText(MessageManager.getString("action.save_project_as")); + saveAsState.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + saveAsState_actionPerformed(e); + } + }); + loadState.setText(MessageManager.getString("action.load_project")); loadState.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - loadState_actionPerformed(e); + loadState_actionPerformed(); } }); - inputMenu.setText("Input Alignment"); - vamsasStart.setText("New Vamsas Session..."); - vamsasStart.setVisible(false); - vamsasStart.addActionListener(new ActionListener() + inputMenu.setText(MessageManager.getString("label.input_alignment")); + inputSequence + .setText(MessageManager.getString("action.fetch_sequences")); + inputSequence.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - vamsasStart_actionPerformed(e); + inputSequence_actionPerformed(e); } }); - vamsasImport.setText("Load Vamsas Session..."); - vamsasImport.setVisible(false); - vamsasImport.addActionListener(new ActionListener() + closeAll.setText(MessageManager.getString("action.close_all")); + closeAll.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - vamsasImport_actionPerformed(e); + closeAll_actionPerformed(e); } }); - vamsasSave.setText("Save Vamsas Session..."); - vamsasSave.setVisible(false); - vamsasSave.addActionListener(new ActionListener() + raiseRelated.setText( + MessageManager.getString("action.raise_associated_windows")); + raiseRelated.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - vamsasSave_actionPerformed(e); + raiseRelated_actionPerformed(e); } }); - inputSequence.setText("Fetch Sequence(s)..."); - inputSequence.addActionListener(new ActionListener() + minimizeAssociated.setText( + MessageManager.getString("action.minimize_associated_windows")); + minimizeAssociated.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - inputSequence_actionPerformed(e); + minimizeAssociated_actionPerformed(e); } }); - vamsasStop.setText("Stop Vamsas Session"); - vamsasStop.setVisible(false); - vamsasStop.addActionListener(new ActionListener() + garbageCollect + .setText(MessageManager.getString("label.collect_garbage")); + garbageCollect.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - vamsasStop_actionPerformed(e); + garbageCollect_actionPerformed(e); } }); - closeAll.setText("Close All"); - closeAll.addActionListener(new ActionListener() + showMemusage + .setText(MessageManager.getString("label.show_memory_usage")); + showMemusage.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - closeAll_actionPerformed(e); + showMemusage_actionPerformed(e); } }); - raiseRelated.setText("Raise Associated Windows"); - raiseRelated.addActionListener(new ActionListener() + showConsole + .setText(MessageManager.getString("label.show_java_console")); + showConsole.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - raiseRelated_actionPerformed(e); + showConsole_actionPerformed(e); } }); - minimizeAssociated.setText("Minimize Associated Windows"); - minimizeAssociated.addActionListener(new ActionListener() + showNews.setText(MessageManager.getString("label.show_jalview_news")); + showNews.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - minimizeAssociated_actionPerformed(e); + showNews_actionPerformed(e); } }); - garbageCollect.setText("Collect Garbage"); - garbageCollect.addActionListener(new ActionListener() + groovyShell = new JMenuItem(); + groovyShell.setText(MessageManager.getString("label.groovy_console")); + groovyShell.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - garbageCollect_actionPerformed(e); + groovyShell_actionPerformed(); } }); - showMemusage.setText("Show Memory Usage"); - showMemusage.addActionListener(new ActionListener() + experimentalFeatures = new JCheckBoxMenuItem(); + experimentalFeatures + .setText(MessageManager.getString("label.show_experimental")); + experimentalFeatures.setToolTipText( + MessageManager.getString("label.show_experimental_tip")); + experimentalFeatures.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - showMemusage_actionPerformed(e); + showExperimental_actionPerformed(experimentalFeatures.isSelected()); + } + }); + + snapShotWindow.setText(MessageManager.getString("label.take_snapshot")); + snapShotWindow.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + snapShotWindow_actionPerformed(e); } }); + desktopMenubar.add(FileMenu); desktopMenubar.add(toolsMenu); - VamsasMenu.setVisible(false); - desktopMenubar.add(VamsasMenu); desktopMenubar.add(HelpMenu); desktopMenubar.add(windowMenu); FileMenu.add(inputMenu); FileMenu.add(inputSequence); FileMenu.addSeparator(); - FileMenu.add(saveState); + // FileMenu.add(saveState); + FileMenu.add(saveAsState); FileMenu.add(loadState); FileMenu.addSeparator(); - FileMenu.add(quit); - HelpMenu.add(aboutMenuItem); + if (!APQHandlers.setQuit) + { + FileMenu.add(quit); + } + if (!APQHandlers.setAbout) + { + HelpMenu.add(aboutMenuItem); + } HelpMenu.add(documentationMenuItem); - VamsasMenu.add(VamsasStMenu); - VamsasStMenu.setVisible(false); - VamsasMenu.add(vamsasStart); - VamsasMenu.add(vamsasImport); - VamsasMenu.add(vamsasSave); - VamsasMenu.add(vamsasStop); - toolsMenu.add(preferences); - toolsMenu.add(showMemusage); - toolsMenu.add(garbageCollect); + if (!APQHandlers.setPreferences) + { + toolsMenu.add(preferences); + } + if (!Platform.isJS()) + { + toolsMenu.add(showMemusage); + toolsMenu.add(showConsole); + toolsMenu.add(showNews); + toolsMenu.add(garbageCollect); + toolsMenu.add(groovyShell); + } + toolsMenu.add(experimentalFeatures); + // toolsMenu.add(snapShotWindow); inputMenu.add(inputLocalFileMenuItem); inputMenu.add(inputURLMenuItem); inputMenu.add(inputTextboxMenuItem); @@ -331,6 +434,32 @@ public class GDesktop extends JFrame // inputMenu.add(vamsasLoad); } + protected void showExperimental_actionPerformed(boolean selected) + { + } + + protected void groovyShell_actionPerformed() + { + } + + protected void snapShotWindow_actionPerformed(ActionEvent e) + { + // TODO Auto-generated method stub + + } + + protected void showConsole_actionPerformed(ActionEvent e) + { + // TODO Auto-generated method stub + + } + + protected void showNews_actionPerformed(ActionEvent e) + { + // TODO Auto-generated method stub + + } + protected void showMemusage_actionPerformed(ActionEvent e) { // TODO Auto-generated method stub @@ -355,7 +484,7 @@ public class GDesktop extends JFrame * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void inputLocalFileMenuItem_actionPerformed( jalview.gui.AlignViewport av) @@ -366,10 +495,11 @@ public class GDesktop extends JFrame * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! + * @throws FileFormatException */ protected void inputURLMenuItem_actionPerformed( - jalview.gui.AlignViewport av) + jalview.gui.AlignViewport av) throws FileFormatException { } @@ -377,10 +507,10 @@ public class GDesktop extends JFrame * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void inputTextboxMenuItem_actionPerformed( - jalview.gui.AlignViewport av) + AlignmentViewPanel avp) { } @@ -389,25 +519,20 @@ public class GDesktop extends JFrame */ protected void quit() { + // System.out.println("********** GDesktop.quit()"); } /** * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void aboutMenuItem_actionPerformed(ActionEvent e) { } - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void documentationMenuItem_actionPerformed(ActionEvent e) + protected void documentationMenuItem_actionPerformed() { } @@ -415,9 +540,9 @@ public class GDesktop extends JFrame * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ - public void SaveState_actionPerformed(ActionEvent e) + protected void preferences_actionPerformed(ActionEvent e) { } @@ -425,19 +550,13 @@ public class GDesktop extends JFrame * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ - protected void preferences_actionPerformed(ActionEvent e) + public void saveState_actionPerformed() { } - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - public void saveState_actionPerformed(ActionEvent e) + public void saveAsState_actionPerformed(ActionEvent e) { } @@ -445,9 +564,9 @@ public class GDesktop extends JFrame * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ - public void loadState_actionPerformed(ActionEvent e) + public void loadState_actionPerformed() { } @@ -455,7 +574,7 @@ public class GDesktop extends JFrame * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void loadJalviewAlign_actionPerformed(ActionEvent e) {