diff options
author | Jonathan Bauer | 2015-09-03 12:44:52 +0200 |
---|---|---|
committer | Jonathan Bauer | 2015-09-03 12:44:52 +0200 |
commit | 36100fc3d58d34e7288bf971700035179f696d98 (patch) | |
tree | 5058ed18b6556ebac2a32e35bd60990b4d6b242e /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | |
parent | [client] Add "open folder" button to download panel (diff) | |
download | tutor-module-36100fc3d58d34e7288bf971700035179f696d98.tar.gz tutor-module-36100fc3d58d34e7288bf971700035179f696d98.tar.xz tutor-module-36100fc3d58d34e7288bf971700035179f696d98.zip |
[client] add hooks to all potential ways to close ImageDetails and ask user for confirmation if there are unsaved changes
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java index ac0e1790..f716ce1b 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -7,11 +7,14 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; +import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.event.DocumentEvent; @@ -103,18 +106,21 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe public ImageDetailsWindow(Frame modalParent, ImageUpdatedCallback callback) { super(modalParent); this.callback = callback; - + // Hook when user presses X (top right) + setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + safeClose(); + } + }); /** * Button listeners */ btnClose.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - if (reactToChange() && - !Gui.showMessageBox(me, - "Ă„nderungen werden verworfen, wollen Sie wirklich abbrechen?", MessageType.QUESTION_YESNO, LOGGER, null)) - return; - dispose(); + safeClose(); } }); btnSaveChanges.addActionListener(new ActionListener() { @@ -512,7 +518,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe win.setImage(imageBaseId); win.setVisible(true); } - /******************************************************************************** + /* ******************************************************************************* * * Dialog class overrides * @@ -527,19 +533,30 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe super.show(); } - /******************************************************************************** + /* ******************************************************************************* * * UIFeedback implementation * ********************************************************************************/ @Override public boolean wantConfirmQuit() { - return btnSaveChanges.isEnabled(); + return reactToChange() && btnSaveChanges.isEnabled(); } @Override public void escapePressed() { - // Also ask if applicable - this.dispose(); + safeClose(); + } + + /* + * Safe close helper: checks if we have unsaved work and prompt the user for + * confirmation if so + */ + private void safeClose() { + if (reactToChange() && + !Gui.showMessageBox(me, + "Ă„nderungen werden verworfen, wollen Sie wirklich abbrechen?", MessageType.QUESTION_YESNO, LOGGER, null)) + return; + dispose(); } } |