import jalview.io.JalviewFileView;
import jalview.jbgui.GSplitFrame;
import jalview.jbgui.GStructureViewer;
+import jalview.project.Jalview2XML;
import jalview.structure.StructureSelectionManager;
import jalview.urls.IdOrgSettings;
import jalview.util.ImageMaker;
import java.awt.desktop.QuitEvent;
import java.awt.desktop.QuitHandler;
import java.awt.desktop.QuitResponse;
+import java.awt.desktop.QuitStrategy;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
private static final String EXPERIMENTAL_FEATURES = "EXPERIMENTAL_FEATURES";
+ private static final String CONFIRM_KEYBOARD_QUIT = "CONFIRM_KEYBOARD_QUIT";
+
public static HashMap<String, FileWriter> savingFiles = new HashMap<>();
private JalviewChangeSupport changeSupport = new JalviewChangeSupport();
private File projectFile;
+ private static boolean setAPQHandlers = false;
+
/**
* @param listener
* @see jalview.gui.JalviewChangeSupport#addJalviewPropertyChangeListener(java.beans.PropertyChangeListener)
doConfigureStructurePrefs();
setTitle("Jalview " + jalview.bin.Cache.getProperty("VERSION"));
- // setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- /* comments
- * galore
- * to
- * change the line numbers
- */
-
+ /*
if (!Platform.isAMac())
{
// this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
else
{
- // this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
- java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
+ this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+ }
+ */
+
+ // flagging this test to avoid unnecessary reflection
+ if (!setAPQHandlers)
+ {
+ // see if the Quit, About and Preferences handlers are available
+ Class desktopClass = java.awt.Desktop.class;
+ java.awt.Desktop hdesktop = java.awt.Desktop.getDesktop();
- desktop.setAboutHandler(new AboutHandler()
+ try
{
- @Override
- public void handleAbout(AboutEvent e)
+
+ if (desktopClass.getDeclaredMethod("setAboutHandler",
+ new Class[]
+ { AboutHandler.class }) != null)
{
- aboutMenuItem_actionPerformed(null);
+
+ hdesktop.setAboutHandler(new AboutHandler()
+ {
+ @Override
+ public void handleAbout(AboutEvent e)
+ {
+ aboutMenuItem_actionPerformed(null);
+ }
+ });
+
}
- });
- desktop.setPreferencesHandler(new PreferencesHandler()
- {
- @Override
- public void handlePreferences(PreferencesEvent e)
+
+ if (desktopClass.getDeclaredMethod("setPreferencesHandler",
+ new Class[]
+ { PreferencesHandler.class }) != null)
{
- preferences_actionPerformed(null);
- }
- });
- desktop.setQuitHandler(new QuitHandler()
- {
- @Override
- public void handleQuitRequestWith(QuitEvent e, QuitResponse r)
- {
- int n = JOptionPane.showConfirmDialog(null,
- MessageManager.getString("label.quit_jalview"),
- MessageManager.getString("action.quit"),
- JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,
- null);
- if (n == JOptionPane.OK_OPTION)
+
+ hdesktop.setPreferencesHandler(new PreferencesHandler()
{
- System.out.println("Shortcut Quit confirmed by user");
- quit();
- }
- else
+ @Override
+ public void handlePreferences(PreferencesEvent e)
+ {
+ preferences_actionPerformed(null);
+ }
+ });
+
+ }
+
+ if (desktopClass.getDeclaredMethod("setQuitHandler",
+ new Class[]
+ { QuitHandler.class }) != null)
+ {
+
+ hdesktop.setQuitHandler(new QuitHandler()
{
- System.out.println("Shortcut Quit cancelled by user");
- }
+ @Override
+ public void handleQuitRequestWith(QuitEvent e, QuitResponse r)
+ {
+ boolean confirmQuit = jalview.bin.Cache
+ .getDefault(CONFIRM_KEYBOARD_QUIT, true);
+ int n;
+ if (confirmQuit)
+ {
+ n = JOptionPane.showConfirmDialog(null,
+ MessageManager.getString("label.quit_jalview"),
+ MessageManager.getString("action.quit"),
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.PLAIN_MESSAGE, null);
+ }
+ else
+ {
+ n = JOptionPane.OK_OPTION;
+ }
+ if (n == JOptionPane.OK_OPTION)
+ {
+ System.out.println("Shortcut Quit confirmed by user");
+ quit();
+ r.performQuit(); // probably won't reach this line, but just in
+ // case
+ }
+ else
+ {
+ r.cancelQuit();
+ System.out.println("Shortcut Quit cancelled by user");
+ }
+ }
+ });
+ hdesktop.setQuitStrategy(QuitStrategy.CLOSE_ALL_WINDOWS);
+
}
- });
- addWindowListener(new WindowAdapter()
+ } catch (NoSuchMethodException e)
{
+ System.out.println(
+ "NoSuchMethodException when looking for About, Preferences, Quit Handlers");
+ e.printStackTrace();
+ }
- @Override
- public void windowClosing(WindowEvent ev)
- {
- quit();
- }
- });
+ setAPQHandlers = true;
}
+ addWindowListener(new WindowAdapter()
+ {
+
+ @Override
+ public void windowClosing(WindowEvent ev)
+ {
+ quit();
+ }
+ });
+
boolean selmemusage = jalview.bin.Cache.getDefault("SHOW_MEMUSAGE",
false);
}
/**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
+ * Shows a file chooser dialog and writes out the current session as a Jalview
+ * project file
*/
@Override
- public void saveState_actionPerformed(ActionEvent e)
+ public void saveState_actionPerformed()
{
JalviewFileChooser chooser = new JalviewFileChooser("jvp",
"Jalview Project");
}
/**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
+ * Shows a file chooser dialog and tries to read in the selected file as a
+ * Jalview project
*/
@Override
- public void loadState_actionPerformed(ActionEvent e)
+ public void loadState_actionPerformed()
{
+ final String[] suffix = new String[] { "jvp", "jar" };
+ final String[] desc = new String[] { "Jalview Project",
+ "Jalview Project (old)" };
JalviewFileChooser chooser = new JalviewFileChooser(
- Cache.getProperty("LAST_DIRECTORY"), new String[]
- { "jvp", "jar" },
- new String[]
- { "Jalview Project", "Jalview Project (old)" },
+ Cache.getProperty("LAST_DIRECTORY"), suffix,
+ desc,
"Jalview Project");
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager.getString("label.restore_state"));