diff options
author | Jonathan Bauer | 2015-09-10 17:44:24 +0200 |
---|---|---|
committer | Jonathan Bauer | 2015-09-10 17:44:24 +0200 |
commit | 74615b70074eb245ab9247151e3671928652e4d1 (patch) | |
tree | 9b493eca4bcd1a2d99f50facc693658dcd3f8d41 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | |
parent | [client] added user feedback & reworked how we reactToInput() in ImageDetails... (diff) | |
download | tutor-module-74615b70074eb245ab9247151e3671928652e4d1.tar.gz tutor-module-74615b70074eb245ab9247151e3671928652e4d1.tar.xz tutor-module-74615b70074eb245ab9247151e3671928652e4d1.zip |
[client] workaround for wrongly assigned error message when uploading new image versions in ImageDetailsWindow
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | 107 |
1 files changed, 61 insertions, 46 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java index 821f13cf..f1ca0c2a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -85,10 +85,18 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe private ImageDetailsRead image = null; /** - * The custom permissions of the image + * The current state of custom permissions of the image */ private Map<String, ImagePermissions> customPermissions; + + /** + * The original custom permissions as fetched from the server + */ private Map<String, ImagePermissions> originalCustomPermissions; + + /** + * The original default permissions as fetched from the server + */ private ImagePermissions originalDefaultPermissions; /** @@ -98,6 +106,37 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe private JMenuItem popupItemDownload = new JMenuItem("Download"); private JMenuItem popupItemDelete = new JMenuItem("Löschen"); + private final DocumentListener docListener = new DocumentListener() { + @Override + public void removeUpdate(DocumentEvent e) { + changedUpdate(e); + } + + @Override + public void insertUpdate(DocumentEvent e) { + changedUpdate(e); + } + + @Override + public void changedUpdate(DocumentEvent e) { + reactToChange(); + } + }; + private final ItemListener comboItemListener = new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + reactToChange(); + } + } + }; + // Listener to detect changes in checkboxes + private final ActionListener checkBoxListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + reactToChange(); + } + }; /** * Constructor * @@ -383,6 +422,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe private void fill() { if (image == null) return; + listenToChange(false); // remember default permissions if (image.defaultPermissions != null) { originalDefaultPermissions = new ImagePermissions(image.defaultPermissions); @@ -446,58 +486,33 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe // set the versions of the image to the table versionTable.setData(image.getVersions(), true); // start listening to changes - listenToChange(); + listenToChange(true); // make fields editable is allowed makeEditable(true); // finally do show it all setVisible(true); } - /** - * Creates listeners to register change in the fields of the details panel + * Manages listeners of image details fields. Adds them if enabled is true, + * removes them otherwise. + * @param enabled whether to enable or disable the listeners. */ - private void listenToChange() { - // final step, add listeners to react to change - final DocumentListener docListener = new DocumentListener() { - @Override - public void removeUpdate(DocumentEvent e) { - changedUpdate(e); - } - - @Override - public void insertUpdate(DocumentEvent e) { - changedUpdate(e); - } - - @Override - public void changedUpdate(DocumentEvent e) { - reactToChange(); - } - }; - txtTitle.getDocument().addDocumentListener(docListener); - txtDescription.getDocument().addDocumentListener(docListener); - txtTags.getDocument().addDocumentListener(docListener); - - // Comboboxes - final ItemListener comboItemListener = new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - reactToChange(); - } - } - }; - cboOperatingSystem.addItemListener(comboItemListener); - cboShareMode.addItemListener(comboItemListener); - - // Listener to detect changes in checkboxes - final ActionListener checkBoxListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - reactToChange(); - } - }; - chkIsTemplate.addActionListener(checkBoxListener); + private void listenToChange(boolean enabled) { + if (enabled) { + txtTitle.getDocument().addDocumentListener(docListener); + txtDescription.getDocument().addDocumentListener(docListener); + txtTags.getDocument().addDocumentListener(docListener); + cboOperatingSystem.addItemListener(comboItemListener); + cboShareMode.addItemListener(comboItemListener); + chkIsTemplate.addActionListener(checkBoxListener); + } else { + txtTitle.getDocument().removeDocumentListener(docListener); + txtDescription.getDocument().removeDocumentListener(docListener); + txtTags.getDocument().removeDocumentListener(docListener); + cboOperatingSystem.removeItemListener(comboItemListener); + cboShareMode.removeItemListener(comboItemListener); + chkIsTemplate.removeActionListener(checkBoxListener); + } } /** |