summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2015-08-07 17:29:16 +0200
committerJonathan Bauer2015-08-07 17:29:16 +0200
commit61e12701afeb2766fcea6d6ccf6dbeabddaf78d8 (patch)
tree17a39bfaad7729226b30eab5529be7e0139effa9
parent[client] better add user popup for lecture permisssion page of wizard (diff)
downloadtutor-module-61e12701afeb2766fcea6d6ccf6dbeabddaf78d8.tar.gz
tutor-module-61e12701afeb2766fcea6d6ccf6dbeabddaf78d8.tar.xz
tutor-module-61e12701afeb2766fcea6d6ccf6dbeabddaf78d8.zip
[client] make image details editable also if user has admin rights or if he does not have any custom permissions, the default permissions allows it
and some code cleanup
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java46
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java1
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java22
3 files changed, 45 insertions, 24 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 15adc4f3..be2ff02c 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
@@ -46,10 +46,17 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout {
public ImageDetailsWindow(Frame modalParent) {
super(modalParent);
+ setFocusable(true);
- popupMenuItems[0] = new JMenuItem("Neue Veranstaltung");
- popupMenuItems[1] = new JMenuItem("Löschen");
-
+ // ESC closes this window
+ addKeyListener(new KeyAdapter() {
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+ dispose();
+ }
+ }
+ });
// Close button closes window
btnClose.addActionListener(new ActionListener() {
@Override
@@ -57,15 +64,17 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout {
dispose();
}
});
- // ESC closes this window
- addKeyListener(new KeyAdapter() {
+
+ // nothing to save at first since nothing changed
+ btnSaveChanges.setEnabled(false);
+ btnSaveChanges.addActionListener(new ActionListener() {
@Override
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
- dispose();
- }
+ public void actionPerformed(ActionEvent e) {
+ LOGGER.debug(("Speichern clicked"));
+ // TODO do save
}
});
+ // Setup popup menu for the right panel
final PopupMenu pop = new PopupMenu(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(popupMenuItems[0])) {
@@ -79,30 +88,29 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout {
}
});
- // add our menu items to the popup menu
+ // our menu items
+ popupMenuItems[0] = new JMenuItem("Neue Veranstaltung");
+ popupMenuItems[1] = new JMenuItem("Löschen");
+ // add them to the popup menu
pop.addMenuItem(popupMenuItems[0]);
pop.addSeparator();
pop.addMenuItem(popupMenuItems[1]);
+ // mouse adapter to register clicks and react on the right panel
final MouseAdapter ma = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
processClick(e);
}
-
@Override
public void mouseReleased(MouseEvent e) {
processClick(e);
}
-
private void processClick(MouseEvent e) {
int r = versionTable.rowAtPoint(e.getPoint());
- LOGGER.debug(e.getSource().getClass() + " @ " + r);
if (r >= 0 && r < versionTable.getRowCount()) {
+ // highlight the row and popup the menu
versionTable.setRowSelectionInterval(r, r);
- ImageVersionDetails isr = versionTable.getSelectedItem();
- ImagePermissions userPermissions = image.getUserPermissions();
- // open popup
if (e.isPopupTrigger()) {
pop.show(e.getComponent(), e.getX(), e.getY());
}
@@ -111,12 +119,13 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout {
}
}
};
-
+ // register mouse adapter for the right panel
versionTableScrollPane.addMouseListener(ma);
versionTable.addMouseListener(ma);
- setFocusable(true);
+
}
+
/**
* @param imageBaseId the id of the image to be displayed
*/
@@ -220,7 +229,6 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout {
btnIsTemplate.setEnabled(editable);
cboOperatingSystem.setEnabled(editable);
cboShareMode.setEnabled(editable);
- btnSaveChanges.setEnabled(editable);
}
/**
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 9e5486ae..845bddcb 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
@@ -146,6 +146,7 @@ public abstract class ImageDetailsWindowLayout extends JDialog {
add(infoPanel, BorderLayout.CENTER);
// button panel on the bottom
JPanel buttonPanel = new JPanel();
+ buttonPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
btnSaveChanges = new JButton("Speichern");
btnClose = new JButton("Schließen");
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
index 9633e13b..0f93ca9a 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
@@ -1,6 +1,8 @@
package org.openslx.dozmod.permissions;
+import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.ImageDetailsRead;
+import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.dozmod.thrift.Session;
/**
@@ -8,13 +10,23 @@ import org.openslx.dozmod.thrift.Session;
*/
public class ImagePerms {
- public static boolean canEdit(ImageDetailsRead image){
+ private final static Logger LOGGER = Logger.getLogger(ImagePerms.class);
+
+ public static boolean canEdit(final ImageDetailsRead image){
+ // check if we are the owner of the image
if(image.getOwnerId().equals(Session.getUserId()))
return true;
- if(image.userPermissions !=null) {
- return image.userPermissions.edit;
+ // we are not, lets see which permissions we have
+ ImagePermissions perms = image.getUserPermissions();
+ if(perms != null) {
+ LOGGER.debug("You can: " + perms);
+ } else {
+ // no user specific permissions, check defaults
+ perms = image.getDefaultPermissions();
+ if (perms != null) {
+ LOGGER.debug("Everybody can: " + perms);
+ }
}
- return image.defaultPermissions.edit;
+ return perms != null && (perms.isSetAdmin() || perms.isSetEdit());
}
-
}