summaryrefslogtreecommitdiffstats
path: root/dozentenmodul
diff options
context:
space:
mode:
authorJonathan Bauer2018-09-10 13:00:38 +0200
committerJonathan Bauer2018-09-10 13:00:38 +0200
commit35de892767ee8260eb130ea2e903c23c2e4f6c3b (patch)
tree50628826ddb217d4f7d3b1dd633f4594b25d98ef /dozentenmodul
parent[client] async fetch of image details (diff)
downloadtutor-module-35de892767ee8260eb130ea2e903c23c2e4f6c3b.tar.gz
tutor-module-35de892767ee8260eb130ea2e903c23c2e4f6c3b.tar.xz
tutor-module-35de892767ee8260eb130ea2e903c23c2e4f6c3b.zip
[client] enable save button when changing linked VM of a lecture
Closes #3422
Diffstat (limited to 'dozentenmodul')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java48
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java2
2 files changed, 38 insertions, 12 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java
index 6fbaac77..a2654896 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java
@@ -5,14 +5,19 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.util.ArrayList;
+import java.util.List;
import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor;
+import org.openslx.dozmod.gui.changemonitor.GenericControlWindow;
import org.openslx.dozmod.gui.control.table.ImageTable;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
@@ -23,21 +28,18 @@ import org.openslx.dozmod.permissions.ImagePerms;
* Window for changing the linked image of a lecture
*/
@SuppressWarnings("serial")
-public class LectureChangeImage extends LectureChangeImageLayout implements UiFeedback {
+public class LectureChangeImage extends LectureChangeImageLayout implements UiFeedback, GenericControlWindow<ImageSummaryRead> {
private static final Logger LOGGER = Logger.getLogger(LectureChangeImage.class);
private boolean okUsed = false;
private ImageTable imageTable;
-
- private LectureChangeImage me;
-
+ private List<ChangeListener> listeners;
/**
* Don't use this constructor, use static function open instead.
*/
protected LectureChangeImage(final Window modalParent) {
super(modalParent);
- me = this;
/**
* initialise the ImageListViewer
@@ -76,10 +78,10 @@ public class LectureChangeImage extends LectureChangeImageLayout implements UiFe
dispose();
} else {
if (!image.isValid) {
- Gui.showMessageBox(me, "Ausgewählte VM ist ungültig!", MessageType.ERROR,
+ Gui.showMessageBox(LectureChangeImage.this, "Ausgewählte VM ist ungültig!", MessageType.ERROR,
LOGGER, null);
} else {
- Gui.showMessageBox(me, "Keine Rechte zum Verlinken auf die ausgewählte VM.",
+ Gui.showMessageBox(LectureChangeImage.this, "Keine Rechte zum Verlinken auf die ausgewählte VM.",
MessageType.ERROR, LOGGER, null);
}
}
@@ -121,10 +123,32 @@ public class LectureChangeImage extends LectureChangeImageLayout implements UiFe
*/
private ImageSummaryRead runAndReturn() {
setVisible(true);
+ if (okUsed)
+ fireChangeEvent();
+ return getState();
+ }
+
+ @Override
+ public ImageSummaryRead getState() {
if (okUsed) {
return imageTable.getSelectedItem();
- } else {
- return null;
+ }
+ return null;
+ }
+
+ @Override
+ public void addChangeListener(ChangeListener l) {
+ if (listeners == null) {
+ listeners = new ArrayList<>();
+ }
+ listeners.add(l);
+ }
+
+ private void fireChangeEvent() {
+ if (listeners == null)
+ return;
+ for (ChangeListener cl : listeners) {
+ cl.stateChanged(null);
}
}
@@ -135,8 +159,10 @@ public class LectureChangeImage extends LectureChangeImageLayout implements UiFe
* @return ImageSummaryRead of selected image or null, if abort has been
* used
*/
- public static ImageSummaryRead open(Window modalParent) {
- return new LectureChangeImage(modalParent).runAndReturn();
+ public static ImageSummaryRead open(Window modalParent, DialogChangeMonitor monitor) {
+ LectureChangeImage lci = new LectureChangeImage(modalParent);
+ monitor.add(lci);
+ return lci.runAndReturn();
}
@Override
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
index 74119cd2..ac94333b 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
@@ -200,7 +200,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
btnLinkImage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- final ImageSummaryRead newImage = LectureChangeImage.open(me);
+ final ImageSummaryRead newImage = LectureChangeImage.open(LectureDetailsWindow.this, changeMonitor);
if (newImage == null)
return;
final ImageMetaCallback callback = new ImageMetaCallback() {