diff options
author | Jonathan Bauer | 2016-08-31 16:54:59 +0200 |
---|---|---|
committer | Jonathan Bauer | 2016-08-31 16:54:59 +0200 |
commit | 26cd5699373dbe35ee24700189e8a3e580ae6243 (patch) | |
tree | 0389541c704fbfe05aeb514365e4643f84bbfa20 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java | |
parent | [client] Reset filter when hiding lecture list if filtered by linked image (diff) | |
download | tutor-module-26cd5699373dbe35ee24700189e8a3e580ae6243.tar.gz tutor-module-26cd5699373dbe35ee24700189e8a3e580ae6243.tar.xz tutor-module-26cd5699373dbe35ee24700189e8a3e580ae6243.zip |
[client] vm-config editor finished, accessible from the popup menu of image's versions
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java new file mode 100644 index 00000000..4a10e776 --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java @@ -0,0 +1,80 @@ +package org.openslx.dozmod.gui.window; + +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import org.apache.log4j.Logger; +import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.helper.MessageType; +import org.openslx.dozmod.gui.helper.TextChangeListener; +import org.openslx.dozmod.gui.helper.UiFeedback; +import org.openslx.dozmod.gui.window.layout.VirtConfigEditorWindowLayout; + + +@SuppressWarnings("serial") +public class VirtConfigEditorWindow extends VirtConfigEditorWindowLayout implements UiFeedback { + + private final static Logger LOGGER = Logger.getLogger(VirtConfigEditorWindow.class); + + public interface VirtConfigChanged { + public void virtConfigChanged(String newVmx); + } + private final String originalMachineDescription; + private final VirtConfigEditorWindow me = this; + + protected VirtConfigEditorWindow(Window modalParent, final VirtConfigChanged cb, final String machineDescription) { + super(modalParent); + originalMachineDescription = machineDescription; + + // listener for the text fields + pnlEditor.getDocument().addDocumentListener(new TextChangeListener() { + @Override + public void changed() { + btnSave.setEnabled(!originalMachineDescription.equals(pnlEditor.getText()));; + } + }); + + btnSave.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + cb.virtConfigChanged(pnlEditor.getText()); + // above command throws exception + dispose(); + } + }); + + btnCancel.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + safeClose(); + } + }); + // finally set the editor's content to the vmx + pnlEditor.setText(machineDescription); + pnlEditor.setCaretPosition(0); + } + + public static void open(Window modalParent, final VirtConfigChanged cb, final String machineDescription) { + VirtConfigEditorWindow win = new VirtConfigEditorWindow(modalParent, cb, machineDescription); + win.setVisible(true); + } + + private void safeClose() { + if (originalMachineDescription.equals(pnlEditor.getText()) || + Gui.showMessageBox(me, "Ihre Ă„nderungen werden verloren gehen, wollen Sie trotzdem abbrechen?", MessageType.QUESTION_YESNO, + LOGGER, null)) + dispose(); + } + + @Override + public boolean wantConfirmQuit() { + return !originalMachineDescription.equals(pnlEditor.getText()); + } + + @Override + public void escapePressed() { + safeClose(); + } + +}
\ No newline at end of file |