summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
diff options
context:
space:
mode:
authorJonathan Bauer2015-09-03 12:44:52 +0200
committerJonathan Bauer2015-09-03 12:44:52 +0200
commit36100fc3d58d34e7288bf971700035179f696d98 (patch)
tree5058ed18b6556ebac2a32e35bd60990b4d6b242e /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
parent[client] Add "open folder" button to download panel (diff)
downloadtutor-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.java39
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();
}
}