diff options
author | Simon Rettberg | 2018-06-21 15:22:50 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-06-21 15:22:50 +0200 |
commit | 4180be8908fa4f520599e6d416b403008e384310 (patch) | |
tree | 98480c8b9f5420e0e8ae8c774f296284e7fd43b0 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor | |
parent | [client] showMessagBox with clickable Hyperlink (diff) | |
download | tutor-module-4180be8908fa4f520599e6d416b403008e384310.tar.gz tutor-module-4180be8908fa4f520599e6d416b403008e384310.tar.xz tutor-module-4180be8908fa4f520599e6d416b403008e384310.zip |
[client] Refactor change monitor classes, better error message handling
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor')
13 files changed, 155 insertions, 110 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/AbstractControlWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/AbstractControlWrapper.java index 4f7f2145..e43b5393 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/AbstractControlWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/AbstractControlWrapper.java @@ -1,6 +1,10 @@ package org.openslx.dozmod.gui.changemonitor; +import java.util.ArrayList; import java.util.Comparator; +import java.util.List; + +import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; /** * Control/element wrapper @@ -9,23 +13,19 @@ public abstract class AbstractControlWrapper<T> { private final DialogChangeMonitor dcm; protected boolean wasEverChanged; protected boolean isCurrentlyChanged; - protected boolean isValid = true; private T originalContent; - private final DialogChangeMonitor.ValidationConstraint<T> constraint; + private List<ValidationConstraint<T>> constraints; private final Comparator<T> cmp; - protected final String constraintErrorMessage; + protected String currentError = null; /** * If muted, this wrapper will not react to changes of the underlying * control. */ private boolean muted = false; - protected AbstractControlWrapper(DialogChangeMonitor dcm, String errorMessage, Comparator<T> comp, - DialogChangeMonitor.ValidationConstraint<T> cons) { + protected AbstractControlWrapper(DialogChangeMonitor dcm, Comparator<T> comp) { this.dcm = dcm; - this.constraintErrorMessage = errorMessage; this.cmp = comp; - this.constraint = cons; } public boolean hasChangedSinceInit() { @@ -37,6 +37,24 @@ public abstract class AbstractControlWrapper<T> { } /** + * Returns the current error message for the first failed constraint. If no + * constraint currently yields invalid, null is returned. + * + * @return + */ + public String currentConstraintError() { + return currentError; + } + + public AbstractControlWrapper<T> addConstraint(ValidationConstraint<T> constraint) { + if (constraints == null) { + constraints = new ArrayList<>(); + } + constraints.add(constraint); + return this; + } + + /** * Resets the change state of this control * and removes the "muted" flag, if set. */ @@ -48,7 +66,7 @@ public abstract class AbstractControlWrapper<T> { dcm.contentChanged(this); } } - + protected final void resetChangeState() { muted = false; isCurrentlyChanged = wasEverChanged = false; @@ -107,12 +125,18 @@ public abstract class AbstractControlWrapper<T> { } protected void checkValid(T text) { - if (muted) + if (muted || constraints == null || constraints.isEmpty()) return; - boolean valid = constraint == null || constraint.isValid(text); - if (isValid != valid) { - isValid = valid; + String error = null; + for (ValidationConstraint<T> i : constraints) { + error = i.checkStateValid(text); + if (error != null) + break; + } + if (error != currentError) { + currentError = error; dcm.validityChanged(this); } } + }
\ No newline at end of file diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ButtonGroupWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ButtonGroupWrapper.java index 3606a99b..1768efb6 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ButtonGroupWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/ButtonGroupWrapper.java @@ -8,16 +8,14 @@ import javax.swing.AbstractButton; import javax.swing.ButtonGroup; import javax.swing.ButtonModel; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; - /** * Monitor a button group (e.g. group of radio boxes) */ class ButtonGroupWrapper extends AbstractControlWrapper<ButtonModel> { private final ButtonGroup buttons; - public ButtonGroupWrapper(DialogChangeMonitor dcm, ButtonGroup group, ValidationConstraint<ButtonModel> constraint, String errorMessage) { - super(dcm, errorMessage, null, constraint); + public ButtonGroupWrapper(DialogChangeMonitor dcm, ButtonGroup group) { + super(dcm, null); buttons = group; ItemListener listener = new ItemListener() { @Override diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/CheckBoxTreeWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/CheckBoxTreeWrapper.java index 23e8a742..5f3d8e2a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/CheckBoxTreeWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/CheckBoxTreeWrapper.java @@ -4,7 +4,6 @@ import java.util.Comparator; import javax.swing.tree.TreePath; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; import org.openslx.dozmod.gui.control.JCheckBoxTree; import org.openslx.dozmod.gui.control.JCheckBoxTree.CheckChangeEvent; import org.openslx.dozmod.gui.control.JCheckBoxTree.CheckChangeEventListener; @@ -39,8 +38,8 @@ class CheckBoxTreeWrapper extends AbstractControlWrapper<TreePath[]> { private final JCheckBoxTree tree; - public CheckBoxTreeWrapper(DialogChangeMonitor dcm, JCheckBoxTree t, ValidationConstraint<TreePath[]> constraint, String errorMessage) { - super(dcm, errorMessage, COMPARATOR, constraint); + public CheckBoxTreeWrapper(DialogChangeMonitor dcm, JCheckBoxTree t) { + super(dcm, COMPARATOR); tree = t; tree.addCheckChangeEventListener(new CheckChangeEventListener() { public void checkStateChanged(CheckChangeEvent event) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/CheckBoxWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/CheckBoxWrapper.java index 4683458e..74f94eb9 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/CheckBoxWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/CheckBoxWrapper.java @@ -5,8 +5,6 @@ import java.awt.event.ItemListener; import javax.swing.JCheckBox; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; - /** * Monitoring a JCheckBox */ @@ -14,8 +12,8 @@ class CheckBoxWrapper extends AbstractControlWrapper<Boolean> { private final JCheckBox checkbox; - public CheckBoxWrapper(DialogChangeMonitor dcm, JCheckBox box, ValidationConstraint<Boolean> constraint, String errorMessage) { - super(dcm, errorMessage, null, constraint); + public CheckBoxWrapper(DialogChangeMonitor dcm, JCheckBox box) { + super(dcm, null); checkbox = box; checkbox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DatePickerWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DatePickerWrapper.java index 40930862..5e471380 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DatePickerWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DatePickerWrapper.java @@ -4,7 +4,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.jdatepicker.JDatePicker; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; /** * Monitoring a JTextField etc. @@ -12,8 +11,8 @@ import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstr class DatePickerWrapper extends AbstractControlWrapper<Object> { private final JDatePicker component; - public DatePickerWrapper(DialogChangeMonitor dcm, JDatePicker picker, ValidationConstraint<Object> constr, String errorMessage) { - super(dcm, errorMessage, null, constr); + public DatePickerWrapper(DialogChangeMonitor dcm, JDatePicker picker) { + super(dcm, null); this.component = picker; picker.addActionListener(new ActionListener() { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DialogChangeMonitor.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DialogChangeMonitor.java index d05fac72..a1d01eaf 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DialogChangeMonitor.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/DialogChangeMonitor.java @@ -3,6 +3,7 @@ package org.openslx.dozmod.gui.changemonitor; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Map; import javax.swing.ButtonGroup; import javax.swing.ButtonModel; @@ -14,6 +15,7 @@ import javax.swing.tree.TreePath; import org.apache.log4j.Logger; import org.jdatepicker.JDatePicker; +import org.openslx.bwlp.thrift.iface.LecturePermissions; import org.openslx.dozmod.gui.control.ComboBox; import org.openslx.dozmod.gui.control.JCheckBoxTree; import org.openslx.dozmod.gui.control.LectureCustomPermissionManager; @@ -37,83 +39,59 @@ public class DialogChangeMonitor { this.callback = cb; } - private void warnConstraint(Object component, ValidationConstraint<?> constraint, String errorMessage) { - if (callback != null && constraint != null && errorMessage == null) { - LOGGER.warn("Adding " + component.getClass().getSimpleName() - + " with constraint but no error message!"); - } - } - /* * Methods for adding various controls */ - private AbstractControlWrapper<?> add(AbstractControlWrapper<?> elem) { + private <T> AbstractControlWrapper<T> add(AbstractControlWrapper<T> elem) { controls.add(elem); elem.resetChangeState(); return elem; } - public AbstractControlWrapper<?> add(JTextComponent component, ValidationConstraint<String> constraint, - String errorMessage) { - warnConstraint(component, constraint, errorMessage); - return add(new TextControlWrapper(this, component, constraint, errorMessage)); - } - - public AbstractControlWrapper<?> add(JTextComponent component) { - return add(component, null, null); + public AbstractControlWrapper<String> add(JTextComponent component) { + return add(new TextControlWrapper(this, component)); } - public <T> AbstractControlWrapper<?> addFixedCombo(ComboBox<T> component, Comparator<T> comparator, - ValidationConstraint<T> constraint, String errorMessage) { - warnConstraint(component, constraint, errorMessage); - return add(new FixedComboBoxWrapper<T>(this, component, comparator, constraint, errorMessage)); + public <T> AbstractControlWrapper<T> addFixedCombo(ComboBox<T> component, Comparator<T> comparator) { + return add(new FixedComboBoxWrapper<T>(this, component, comparator)); } - public AbstractControlWrapper<?> addEditableCombo(ComboBox<?> component, Comparator<Object> comparator, - ValidationConstraint<Object> constraint, String errorMessage) { - warnConstraint(component, constraint, errorMessage); - return add(new EditableComboBoxWrapper(this, component, comparator, constraint, errorMessage)); + public AbstractControlWrapper<Object> addEditableCombo(ComboBox<?> component, + Comparator<Object> comparator) { + return add(new EditableComboBoxWrapper(this, component, comparator)); } - public AbstractControlWrapper<?> add(JCheckBox component, ValidationConstraint<Boolean> constraint, - String errorMessage) { - warnConstraint(component, constraint, errorMessage); - return add(new CheckBoxWrapper(this, component, constraint, errorMessage)); + public AbstractControlWrapper<Boolean> add(JCheckBox component) { + return add(new CheckBoxWrapper(this, component)); } - public AbstractControlWrapper<?> add(JCheckBox component) { - return add(component, null, null); + public AbstractControlWrapper<TreePath[]> add(JCheckBoxTree component) { + return add(new CheckBoxTreeWrapper(this, component)); } - public AbstractControlWrapper<?> add(JCheckBoxTree component, - ValidationConstraint<TreePath[]> constraint, String errorMessage) { - warnConstraint(component, constraint, errorMessage); - return add(new CheckBoxTreeWrapper(this, component, constraint, errorMessage)); + public AbstractControlWrapper<ButtonModel> add(ButtonGroup group) { + return add(new ButtonGroupWrapper(this, group)); } - public AbstractControlWrapper<?> add(ButtonGroup group, ValidationConstraint<ButtonModel> constraint, - String errorMessage) { - warnConstraint(group, constraint, errorMessage); - return add(new ButtonGroupWrapper(this, group, constraint, errorMessage)); + public AbstractControlWrapper<Object> add(JDatePicker picker) { + return add(new DatePickerWrapper(this, picker)); } - public AbstractControlWrapper<?> add(JDatePicker picker, ValidationConstraint<Object> constraint, - String errorMessage) { - warnConstraint(picker, constraint, errorMessage); - return add(new DatePickerWrapper(this, picker, constraint, errorMessage)); + public AbstractControlWrapper<Object> add(JSpinner spinner) { + return add(new TimeSpinnerWrapper(this, spinner)); } - public AbstractControlWrapper<?> add(JSpinner spinner) { - return add(new TimeSpinnerWrapper(this, spinner, null, null)); + public AbstractControlWrapper<Map<String, LecturePermissions>> add(LectureCustomPermissionManager manager) { + return add(new LecturePermissionManagerWrapper(this, manager)); } - public AbstractControlWrapper<?> add(LectureCustomPermissionManager manager) { - return add(new LecturePermissionManagerWrapper(this, manager, null, null)); + public AbstractControlWrapper<ClonedTableModel> add(JTable table) { + return add(new TableWrapper(this, table)); } - public AbstractControlWrapper<?> add(JTable table) { - return add(new TableWrapper(this, table, null, null)); + public <T> AbstractControlWrapper<List<T>> add(ListEditorWindow<T> editor) { + return add(new ListEditorWindowWrapper<T>(this, editor)); } /* @@ -149,19 +127,19 @@ public class DialogChangeMonitor { void validityChanged(AbstractControlWrapper<?> cw) { String error = null; - LOGGER.info(cw.getClass().getSimpleName() + " changed validity to " + cw.isValid); + //LOGGER.info(cw.getClass().getSimpleName() + " changed validity to " + cw.isValid); boolean oldValid = this.isValid; - if (!cw.isValid) { + if (cw.currentError != null) { this.isValid = false; - error = cw.constraintErrorMessage; + error = cw.currentError; } else { this.isValid = true; } if (error == null) { for (AbstractControlWrapper<?> c : controls) { - if (!c.isValid) { + if (c.currentError != null) { this.isValid = false; - error = c.constraintErrorMessage; + error = c.currentError; break; } } @@ -207,18 +185,38 @@ public class DialogChangeMonitor { */ public static interface ValidationConstraint<T> { - boolean isValid(T userInput); + /** + * Method should return <code>null</code> if the input is valid, an + * error message otherwise. + * + * @param userInput Current content/state of the control being monitored + * @return error message if invalid, <code>null</code> otherwise + */ + String checkStateValid(T userInput); } - /* - * Default validators + /** + * Simple validator that checks for text not being empty */ + public static class TextNotEmptyConstraint implements ValidationConstraint<String> { + private final String errorMsg; - public static final ValidationConstraint<String> VC_NOT_EMPTY = new ValidationConstraint<String>() { - public boolean isValid(String userInput) { - return !Util.isEmptyString(userInput); + public TextNotEmptyConstraint(String errorMessage) { + this.errorMsg = errorMessage; } - }; + + @Override + public String checkStateValid(String userInput) { + if (Util.isEmptyString(userInput)) + return errorMsg; + return null; + } + + } + + /* + * Default validators + */ /** * Callback for class using the monitor 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 index d77a5aa5..c6b0245a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/EditableComboBoxWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/EditableComboBoxWrapper.java @@ -4,7 +4,6 @@ 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; /** @@ -13,8 +12,8 @@ import org.openslx.dozmod.gui.control.ComboBox; 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); + public EditableComboBoxWrapper(DialogChangeMonitor dcm, ComboBox<?> combo, Comparator<Object> comparator) { + super(dcm, comparator); comboBox = combo; comboBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/FixedComboBoxWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/FixedComboBoxWrapper.java index 096aaa23..6b7a4b77 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/FixedComboBoxWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/FixedComboBoxWrapper.java @@ -4,7 +4,6 @@ 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; /** @@ -13,8 +12,8 @@ import org.openslx.dozmod.gui.control.ComboBox; class FixedComboBoxWrapper<T> extends AbstractControlWrapper<T> { private final ComboBox<T> comboBox; - public FixedComboBoxWrapper(DialogChangeMonitor dcm, ComboBox<T> combo, Comparator<T> comparator, ValidationConstraint<T> constraint, String errorMessage) { - super(dcm, errorMessage, comparator, constraint); + public FixedComboBoxWrapper(DialogChangeMonitor dcm, ComboBox<T> combo, Comparator<T> comparator) { + super(dcm, comparator); comboBox = combo; comboBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/LecturePermissionManagerWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/LecturePermissionManagerWrapper.java index 88b618d6..a1f066a0 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/LecturePermissionManagerWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/LecturePermissionManagerWrapper.java @@ -4,7 +4,6 @@ import java.util.Comparator; import java.util.Map; import org.openslx.bwlp.thrift.iface.LecturePermissions; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; import org.openslx.dozmod.gui.control.LectureCustomPermissionManager; import org.openslx.dozmod.gui.control.LectureCustomPermissionManager.UserChangeEvent; import org.openslx.dozmod.gui.control.LectureCustomPermissionManager.UserChangeEventListener; @@ -23,9 +22,8 @@ class LecturePermissionManagerWrapper extends AbstractControlWrapper<Map<String, private final LectureCustomPermissionManager component; - public LecturePermissionManagerWrapper(DialogChangeMonitor dcm, LectureCustomPermissionManager manager, - ValidationConstraint<Map<String, LecturePermissions>> constr, String errorMessage) { - super(dcm, errorMessage, COMPARATOR, constr); + public LecturePermissionManagerWrapper(DialogChangeMonitor dcm, LectureCustomPermissionManager manager) { + super(dcm, COMPARATOR); this.component = manager; manager.addUserChangeEventListener(new UserChangeEventListener() { 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 diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TableWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TableWrapper.java index f8bcfa01..5c03c2fc 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TableWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TableWrapper.java @@ -9,8 +9,6 @@ import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; - /** * Monitoring a JTable etc. */ @@ -47,9 +45,8 @@ class TableWrapper extends AbstractControlWrapper<ClonedTableModel> { private final JTable component; - public TableWrapper(DialogChangeMonitor dcm, JTable table, - ValidationConstraint<ClonedTableModel> constr, String errorMessage) { - super(dcm, errorMessage, COMPARATOR, constr); + public TableWrapper(DialogChangeMonitor dcm, JTable table) { + super(dcm, COMPARATOR); this.component = table; final TableModelListener changeListener = new TableModelListener() { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TextControlWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TextControlWrapper.java index 6535a113..0a06dd8e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TextControlWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TextControlWrapper.java @@ -4,17 +4,14 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.JTextComponent; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; - /** * Monitoring a JTextField etc. */ class TextControlWrapper extends AbstractControlWrapper<String> { private final JTextComponent component; - public TextControlWrapper(DialogChangeMonitor dcm, JTextComponent textField, - ValidationConstraint<String> constr, String errorMessage) { - super(dcm, errorMessage, null, constr); + public TextControlWrapper(DialogChangeMonitor dcm, JTextComponent textField) { + super(dcm, null); this.component = textField; textField.getDocument().addDocumentListener(new DocumentListener() { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TimeSpinnerWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TimeSpinnerWrapper.java index ecb6e50c..a7d94f5d 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TimeSpinnerWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/changemonitor/TimeSpinnerWrapper.java @@ -7,16 +7,14 @@ import javax.swing.JSpinner; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; - class TimeSpinnerWrapper extends AbstractControlWrapper<Object> { private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("k:m"); private final JSpinner component; - public TimeSpinnerWrapper(DialogChangeMonitor dcm, JSpinner picker, ValidationConstraint<Object> constr, String errorMessage) { - super(dcm, errorMessage, null, constr); + public TimeSpinnerWrapper(DialogChangeMonitor dcm, JSpinner picker) { + super(dcm, null); this.component = picker; picker.addChangeListener(new ChangeListener() { @@ -33,4 +31,5 @@ class TimeSpinnerWrapper extends AbstractControlWrapper<Object> { } return value; } + }
\ No newline at end of file |