diff options
Diffstat (limited to 'dozentenmodul/src/main/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); + } } /** |
