diff options
author | Simon Rettberg | 2018-06-20 17:01:59 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-06-20 17:01:59 +0200 |
commit | e30422516ba4f22b1c5ff67c1f0e00521d602b62 (patch) | |
tree | ef5b16f3d76e25ea3ff336da990e84245933973c /dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/EditableComboBoxWrapper.java | |
parent | [server] Don't use shared instance in multi-threaded app (diff) | |
download | tutor-module-e30422516ba4f22b1c5ff67c1f0e00521d602b62.tar.gz tutor-module-e30422516ba4f22b1c5ff67c1f0e00521d602b62.tar.xz tutor-module-e30422516ba4f22b1c5ff67c1f0e00521d602b62.zip |
[client] Add GUI change handling classes
Code to track if a dialog contains modified controls
has been messy, error prone and all over the place. Adding
a control to a dialog required adding multiple fields to
the dialog class and adding new code in multiple places.
This is an approach to create a centralized facility that
would only require adding all controls of a dialog to
the monitor in one place, and then defining a callback
to get informed when the validity or content of the whole
form changes.
The monitor class will also remember the original state
of the dialog, so you can tell if the user undoes their
changes manually.
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/EditableComboBoxWrapper.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/EditableComboBoxWrapper.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/EditableComboBoxWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/EditableComboBoxWrapper.java new file mode 100644 index 00000000..d77a5aa5 --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/EditableComboBoxWrapper.java @@ -0,0 +1,33 @@ +package org.openslx.dozmod.gui.changemonitor; + +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.Comparator; + +import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; +import org.openslx.dozmod.gui.control.ComboBox; + +/** + * Monitoring a ComboBox that is editable + */ +class EditableComboBoxWrapper extends AbstractControlWrapper<Object> { + private final ComboBox<?> comboBox; + + public EditableComboBoxWrapper(DialogChangeMonitor dcm, ComboBox<?> combo, Comparator<Object> comparator, ValidationConstraint<Object> constraint, String errorMessage) { + super(dcm, errorMessage, comparator, constraint); + comboBox = combo; + comboBox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() != ItemEvent.SELECTED) + return; + contentChanged(); + } + }); + } + + @Override + Object getCurrentValue() { + return comboBox.getEditor().getItem(); + } + +}
\ No newline at end of file |