diff options
author | Jonathan Bauer | 2018-09-10 13:00:38 +0200 |
---|---|---|
committer | Jonathan Bauer | 2018-09-10 13:00:38 +0200 |
commit | 35de892767ee8260eb130ea2e903c23c2e4f6c3b (patch) | |
tree | 50628826ddb217d4f7d3b1dd633f4594b25d98ef /dozentenmodul | |
parent | [client] async fetch of image details (diff) | |
download | tutor-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.java | 48 | ||||
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java | 2 |
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() { |