diff options
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.java | 40 |
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 |