summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ListEditorWindow.java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ListEditorWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ListEditorWindow.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ListEditorWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ListEditorWindow.java
new file mode 100644
index 00000000..ebefd326
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ListEditorWindow.java
@@ -0,0 +1,40 @@
+package org.openslx.dozmod.gui.changemonitor;
+
+import java.util.List;
+
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ * For wrapping editors that contain controls to edit a list of some kind.
+ * When implementing inside a pop-up window, it should be sufficient to
+ * trigger the change event only once, when the user cancels or saves the
+ * changes, since the main window that's interested in the changes will
+ * be covered anyways during editing.
+ */
+public interface ListEditorWindow<T> {
+
+ public List<T> getState();
+
+ public void addChangeListener(ChangeListener l);
+
+}
+
+class ListEditorWindowWrapper<T> extends AbstractControlWrapper<List<T>> {
+ private final ListEditorWindow<T> component;
+
+ public ListEditorWindowWrapper(DialogChangeMonitor dcm, ListEditorWindow<T> comp) {
+ super(dcm, null);
+ this.component = comp;
+
+ comp.addChangeListener(new ChangeListener() {
+ public void stateChanged(ChangeEvent e) {
+ contentChanged();
+ }
+ });
+ }
+
+ List<T> getCurrentValue() {
+ return this.component.getState();
+ }
+} \ No newline at end of file