diff options
Diffstat (limited to 'dozentenmodul/src/main/java')
7 files changed, 152 insertions, 81 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java index 0c6d1837..39524fcc 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/ImageCustomPermissionManager.java @@ -1,6 +1,5 @@ package org.openslx.dozmod.gui.control; -import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -9,6 +8,8 @@ import java.util.Map; import java.util.Map.Entry; import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -19,6 +20,7 @@ import org.openslx.bwlp.thrift.iface.ImagePermissions; import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.dozmod.gui.control.table.ImagePermissionTable; import org.openslx.dozmod.gui.control.table.ImagePermissionTable.UserImagePermissions; +import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.gui.window.UserListWindow; import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; @@ -28,11 +30,11 @@ import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; */ public class ImageCustomPermissionManager extends JPanel { -protected ImagePermissionTable permissionTable; - + protected ImagePermissionTable permissionTable; + protected JButton btnAddUser; protected JButton btnRemoveUser; - + private ImageCustomPermissionManager me; private ArrayList<UserImagePermissions> permissionList = new ArrayList<UserImagePermissions>(); @@ -46,17 +48,28 @@ protected ImagePermissionTable permissionTable; public ImageCustomPermissionManager(){ super(); me = this; - setLayout(new BorderLayout()); - setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + GridManager grid = new GridManager(this, 1); + permissionTable = new ImagePermissionTable(); - add(new JScrollPane(permissionTable), BorderLayout.CENTER); + + // Panel for the add- and remove buttons JPanel userButtonPane = new JPanel(); + userButtonPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + userButtonPane.setLayout(new BoxLayout(userButtonPane, BoxLayout.LINE_AXIS)); + btnAddUser = new JButton("Benutzer hinzufügern"); userButtonPane.add(btnAddUser); btnRemoveUser = new JButton("Benutzer entfernen"); userButtonPane.add(btnRemoveUser); - add(userButtonPane, BorderLayout.SOUTH); - + userButtonPane.add(Box.createGlue()); + + // Put everything into the grid + grid.add(new JScrollPane(permissionTable)).fill(true, true).expand(true, true); + grid.nextRow(); + grid.add(userButtonPane).fill(true, false).expand(true, false); + grid.nextRow(); + grid.finish(false); + // add user button listener btnAddUser.addActionListener(new ActionListener() { @Override @@ -82,7 +95,7 @@ protected ImagePermissionTable permissionTable; }, "Hinzufügen"); } }); - + // delete user button listener btnRemoveUser.addActionListener(new ActionListener() { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java index 22f1111d..6921ea2e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/LectureCustomPermissionManager.java @@ -28,6 +28,9 @@ import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; */ public class LectureCustomPermissionManager extends JPanel{ + /** + * Self reference + */ private LectureCustomPermissionManager me; protected LecturePermissionTable permissionTable; @@ -132,5 +135,4 @@ public class LectureCustomPermissionManager extends JPanel{ } return newPermissionMap; } - } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java index 27f1f9d8..0029f250 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageCustomPermissionWindow.java @@ -5,17 +5,9 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Map; -import javax.swing.JOptionPane; - import org.apache.log4j.Logger; -import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.ImagePermissions; -import org.openslx.dozmod.gui.Gui; -import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.window.layout.ImageCustomPermissionWindowLayout; -import org.openslx.dozmod.thrift.Session; -import org.openslx.dozmod.thrift.ThriftActions; -import org.openslx.thrifthelper.ThriftManager; /** * Window for modifying the custom permissions of an image. @@ -25,18 +17,19 @@ public class ImageCustomPermissionWindow extends ImageCustomPermissionWindowLayo private static final Logger LOGGER = Logger.getLogger(ImageCustomPermissionWindow.class); - private final ImageCustomPermissionWindow me; + private ImagePermissions defaultPermissions; + + private boolean okUsed = false; - protected ImageCustomPermissionWindow(final Frame modalParent, final Map<String, ImagePermissions> permissionMap, final ImagePermissions defaultPermissions, final String imageBaseId) { + protected ImageCustomPermissionWindow(final Frame modalParent, final Map<String, ImagePermissions> permissionMap, final ImagePermissions defaultPermissions) { super(modalParent); - me = this; imagePermissionManager.initPanel(permissionMap, defaultPermissions); + this.defaultPermissions = defaultPermissions; - btnSave.addActionListener(new ActionListener() { + btnOk.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - ThriftActions.writeImagePermissions(JOptionPane.getFrameForComponent(me), - imageBaseId, imagePermissionManager.getMap()); + okUsed = true; dispose(); } }); @@ -48,9 +41,49 @@ public class ImageCustomPermissionWindow extends ImageCustomPermissionWindowLayo } }); + chkCustomPermAdmin.setSelected(defaultPermissions.admin); + chkCustomPermEdit.setSelected(defaultPermissions.edit); + chkCustomPermDownload.setSelected(defaultPermissions.download); + chkCustomPermLink.setSelected(defaultPermissions.link); + } + + + /** + * Set a created ImageCustomPermissionWindow visible and return resulting permissions + * @return PermissionLink with default- and customPermissions + */ + private PermissionLink runAndReturn(){ + setVisible(true); + return new PermissionLink(imagePermissionManager.getMap(), new ImagePermissions(chkCustomPermLink.isSelected(), chkCustomPermDownload.isSelected(), chkCustomPermEdit.isSelected(), chkCustomPermAdmin.isSelected()), okUsed); + } + + /** + * Creates a new ImageCustomPermissionWindow dialog and returns the resulting Permissions + * @param modalParent + * @param permissionMap The current user permissions with which the permission manager to initialise, null creates empty list. + * @param defaultPermissions The current default permissions, should not be null! + * @return PermissionLink with resulting permissions + */ + public static PermissionLink open(Frame modalParent, Map<String, ImagePermissions> permissionMap, ImagePermissions defaultPermissions) { + return new ImageCustomPermissionWindow(modalParent, permissionMap, defaultPermissions).runAndReturn(); + } - public static void open(Frame modalParent, Map<String, ImagePermissions> permissionMap, ImagePermissions defaultPermissions, String imageBaseId) { - new ImageCustomPermissionWindow(modalParent, permissionMap, defaultPermissions, imageBaseId).setVisible(true); + /** + * Helper class for returning the default- and custom permissions of an image. + */ + public static class PermissionLink{ + public final Map<String, ImagePermissions> customPermissions; + public final ImagePermissions defaultPermissions; + public final boolean okUsed; + + public PermissionLink(Map<String, ImagePermissions> customPermissions, ImagePermissions defaultPermissions, boolean okUsed){ + this.customPermissions = customPermissions; + this.defaultPermissions = defaultPermissions; + this.okUsed = okUsed; + } } + } + + 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 d9182b30..22ac4d04 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 @@ -19,6 +19,7 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import org.apache.log4j.Logger; +import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.ImageBaseWrite; import org.openslx.bwlp.thrift.iface.ImageDetailsRead; import org.openslx.bwlp.thrift.iface.ImagePermissions; @@ -33,6 +34,7 @@ import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.helper.PopupMenu; import org.openslx.dozmod.gui.helper.UiFeedback; +import org.openslx.dozmod.gui.window.ImageCustomPermissionWindow.PermissionLink; import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; import org.openslx.dozmod.gui.window.layout.ImageDetailsWindowLayout; import org.openslx.dozmod.gui.wizard.LectureWizard; @@ -45,6 +47,7 @@ import org.openslx.dozmod.thrift.ThriftActions.ImageMetaCallback; import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.dozmod.thrift.cache.UserCache; import org.openslx.dozmod.util.FormatHelper; +import org.openslx.thrifthelper.ThriftManager; @SuppressWarnings("serial") public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFeedback { @@ -76,6 +79,11 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe * The custom permissions of the image */ private Map<String, ImagePermissions> permissionMap; + + /** + * Whether the custom permission window has been used. + */ + private boolean permissionsChanged = false; /** * Popup menu items @@ -134,7 +142,13 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe @Override public void actionPerformed(ActionEvent arg0) { - ImageCustomPermissionWindow.open(JOptionPane.getFrameForComponent(me), permissionMap, image.defaultPermissions, image.imageBaseId); + PermissionLink pl = ImageCustomPermissionWindow.open(JOptionPane.getFrameForComponent(me), me.permissionMap, image.defaultPermissions); + if (pl != null && pl.defaultPermissions != null && pl.customPermissions != null && pl.okUsed == true){ + image.defaultPermissions = pl.defaultPermissions; + permissionMap = pl.customPermissions; + permissionsChanged = true; + } + reactToChange(); } }); @@ -239,7 +253,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe fill(); } }; - ThriftActions.getImageDetails(JOptionPane.getFrameForComponent(me), imageBaseId, callback); + ThriftActions.getImageFullDetails(JOptionPane.getFrameForComponent(me), imageBaseId, callback); } /** @@ -268,11 +282,18 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe ((OperatingSystem)cboOperatingSystem.getSelectedItem()).osId, image.virtId, chkIsTemplate.isSelected(), - new ImagePermissions(chkCustomPermLink.isSelected(), chkCustomPermDownload.isSelected(), chkCustomPermEdit.isSelected(), chkCustomPermAdmin.isSelected()), + new ImagePermissions(image.defaultPermissions.link, image.defaultPermissions.download, image.defaultPermissions.edit, image.defaultPermissions.admin), image.shareMode); // now trigger the actual action if (!ThriftActions.updateImageBase(JOptionPane.getFrameForComponent(me), image.getImageBaseId(), ibw)) return; + try { + LOGGER.info(permissionMap); + ThriftManager.getSatClient().writeImagePermissions(Session.getSatelliteToken(), image.imageBaseId, permissionMap); + permissionsChanged = false; + } catch (TException e) { + LOGGER.error("Fehler beim Übertragen der benutzerdefinierten Berechtigungen: ", e); + } // success btnSaveChanges.setEnabled(false); refresh(true); @@ -299,6 +320,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe * @param version image version to delete */ private void deleteVersion(final ImageVersionDetails version) { + if(version == null) + return; ThriftActions.deleteImageBaseOrVersion(JOptionPane.getFrameForComponent(this), image.getImageBaseId(), version.versionId, new DeleteCallback() { @Override @@ -406,16 +429,9 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe reactToChange(); } }; - chkCustomPermAdmin.setSelected(image.defaultPermissions.admin); - chkCustomPermEdit.setSelected(image.defaultPermissions.edit); - chkCustomPermDownload.setSelected(image.defaultPermissions.download); - chkCustomPermLink.setSelected(image.defaultPermissions.link); + chkIsTemplate.addActionListener(checkBoxListener); - chkCustomPermAdmin.addActionListener(checkBoxListener); - chkCustomPermEdit.addActionListener(checkBoxListener); - chkCustomPermDownload.addActionListener(checkBoxListener); - chkCustomPermLink.addActionListener(checkBoxListener); // make fields editable is allowed makeEditable(true); @@ -437,12 +453,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe txtTags.setEditable(editable); cboOperatingSystem.setEnabled(editable); cboShareMode.setEnabled(editable); - btnCustomPermissions.setEnabled(editable); + btnCustomPermissions.setEnabled(adminEdit); btnChangeOwner.setEnabled(adminEdit); - chkCustomPermAdmin.setEnabled(adminEdit); - chkCustomPermEdit.setEnabled(adminEdit); - chkCustomPermDownload.setEnabled(adminEdit); - chkCustomPermLink.setEnabled(adminEdit); } /** @@ -468,13 +480,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe changed = true; } else if (chkIsTemplate.isSelected() != image.isTemplate) { changed = true; - } else if (chkCustomPermAdmin.isSelected() != image.defaultPermissions.admin) { - changed = true; - } else if (chkCustomPermEdit.isSelected() != image.defaultPermissions.edit) { - changed = true; - } else if (chkCustomPermDownload.isSelected() != image.defaultPermissions.download) { - changed = true; - } else if (chkCustomPermLink.isSelected() != image.defaultPermissions.link) { + } else if (permissionsChanged){ changed = true; } // TODO TAGS diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java index cf657c2e..b537250f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageCustomPermissionWindowLayout.java @@ -1,7 +1,5 @@ package org.openslx.dozmod.gui.window.layout; -import java.awt.BorderLayout; -import java.awt.Container; import java.awt.Dimension; import java.awt.Frame; @@ -9,21 +7,32 @@ import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JPanel; import org.apache.log4j.Logger; import org.openslx.dozmod.gui.control.ImageCustomPermissionManager; +import org.openslx.dozmod.gui.helper.GridManager; +/** + * Window for editing permissions of an Image + */ @SuppressWarnings("serial") public class ImageCustomPermissionWindowLayout extends JDialog { private static final Logger LOGGER = Logger.getLogger(ImageCustomPermissionWindowLayout.class); + + protected final JCheckBox chkCustomPermAdmin; + protected final JCheckBox chkCustomPermEdit; + protected final JCheckBox chkCustomPermDownload; + protected final JCheckBox chkCustomPermLink; - protected final JButton btnSave; + protected final JButton btnOk; protected final JButton btnClose; + protected final ImageCustomPermissionManager imagePermissionManager; private static String title = "Benutzerdefinierte Berechtigungen"; @@ -32,23 +41,47 @@ public class ImageCustomPermissionWindowLayout extends JDialog { super(modalParent, title, modalParent != null ? ModalityType.APPLICATION_MODAL : ModalityType.MODELESS); + // Panel to add everything into, needed for the border. + JPanel contentPanel = new JPanel(); + contentPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + add(contentPanel); + + GridManager grid = new GridManager(contentPanel, 1); + imagePermissionManager = new ImageCustomPermissionManager(); - // spaced buttons + // Panel for the buttons at the bottom JPanel buttonPane = new JPanel(); buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS)); - buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10)); - btnSave = new JButton("Änderungen speichern"); - buttonPane.add(btnSave); + btnOk = new JButton("Übernehmen"); buttonPane.add(Box.createGlue()); + buttonPane.add(btnOk); btnClose = new JButton("Abbrechen"); buttonPane.add(btnClose); - // pack it all - Container contentPane = getContentPane(); - contentPane.add(imagePermissionManager, BorderLayout.CENTER); - contentPane.add(buttonPane, BorderLayout.PAGE_END); - setPreferredSize(new Dimension(480, 350)); + // Panel with the permissions for other users + JPanel defaultPermissionPane = new JPanel(); + defaultPermissionPane.setBorder(BorderFactory.createTitledBorder( "Andere Nutzer")); + chkCustomPermAdmin = new JCheckBox("Admin"); + chkCustomPermDownload = new JCheckBox("Download"); + chkCustomPermEdit = new JCheckBox("Bearbeiten"); + chkCustomPermLink = new JCheckBox("Link"); + defaultPermissionPane.add(chkCustomPermLink); + defaultPermissionPane.add(chkCustomPermDownload); + defaultPermissionPane.add(chkCustomPermEdit); + defaultPermissionPane.add(chkCustomPermAdmin); + + // Put everything into the grid + grid.add(imagePermissionManager).fill(true, true).expand(true, true); + grid.nextRow(); + grid.add(defaultPermissionPane).fill(true, false).expand(true, false); + grid.nextRow(); + grid.add(buttonPane).fill(true, false).expand(false, false); + grid.nextRow(); + grid.finish(false); + + contentPanel.setPreferredSize(new Dimension(480, 350)); + pack(); setLocationRelativeTo( modalParent ); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java index 565d7b12..13e6e39a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java @@ -50,10 +50,6 @@ public abstract class ImageDetailsWindowLayout extends JDialog { protected final JTextField txtId; protected final JTextField txtVersion; - protected final JCheckBox chkCustomPermAdmin; - protected final JCheckBox chkCustomPermEdit; - protected final JCheckBox chkCustomPermDownload; - protected final JCheckBox chkCustomPermLink; protected final JButton btnCustomPermissions; @@ -179,19 +175,7 @@ public abstract class ImageDetailsWindowLayout extends JDialog { grid.add(txtId, 2).expand(true, false).fill(true, false); grid.nextRow(); - JPanel defaultPermissionPane = new JPanel(); - defaultPermissionPane.setBorder(BorderFactory.createTitledBorder( "Default Berechtigungen")); - chkCustomPermAdmin = new JCheckBox("Admin"); - chkCustomPermDownload = new JCheckBox("Download"); - chkCustomPermEdit = new JCheckBox("Bearbeiten"); - chkCustomPermLink = new JCheckBox("Link"); - defaultPermissionPane.add(chkCustomPermLink); - defaultPermissionPane.add(chkCustomPermDownload); - defaultPermissionPane.add(chkCustomPermEdit); - defaultPermissionPane.add(chkCustomPermAdmin); - - grid.add(defaultPermissionPane, 3); - grid.nextRow(); + btnCustomPermissions = new JButton("Benutzerdefinierte Berechtigungen"); @@ -211,9 +195,9 @@ public abstract class ImageDetailsWindowLayout extends JDialog { btnSaveChanges = new JButton("Speichern"); btnClose = new JButton("Schließen"); btnUpdateImage = new JButton("Neue Imageversion hochladen"); - buttonPanel.add(btnSaveChanges); buttonPanel.add(btnUpdateImage); buttonPanel.add(Box.createGlue()); + buttonPanel.add(btnSaveChanges); buttonPanel.add(btnClose); // --- Version table on the right (EAST) side diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java index 7926ac11..4b0dc2cc 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java @@ -95,7 +95,7 @@ public abstract class ImageMetaDataPageLayout extends WizardPage { grid.nextRow(); // -- end permissions group -- isTemplateCheck = new JCheckBox("Vorlage erstellen"); - grid.add(isTemplateCheck); + grid.add(isTemplateCheck, 2); grid.nextRow(); grid.finish(true); |
