summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard
diff options
context:
space:
mode:
authorJonathan Bauer2015-07-21 18:24:15 +0200
committerJonathan Bauer2015-07-21 18:24:15 +0200
commitd879b5c0416505fcdf068a462b7a73ccfebdf794 (patch)
treef5a0ef45085e503e9542955ce6dcaf548d59cb89 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard
parent[client] Fixed some comments. (diff)
downloadtutor-module-d879b5c0416505fcdf068a462b7a73ccfebdf794.tar.gz
tutor-module-d879b5c0416505fcdf068a462b7a73ccfebdf794.tar.xz
tutor-module-d879b5c0416505fcdf068a462b7a73ccfebdf794.zip
[client] user permissions checkbox table [wip]
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java15
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java15
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java200
3 files changed, 145 insertions, 85 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
index a947bc87..3f56f586 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
@@ -92,6 +92,21 @@ public class ImageWizard extends Wizard {
LOGGER.error("Could not fetch image details of newly created image!", e);
return false;
}
+
+ if (uploadWizardState.permissionList != null) {
+ // user skipped permission list stuff
+ // TODO push permission list to servor
+ try {
+ ThriftManager.getSatClient().writeImagePermissions(
+ Session.getSatelliteToken(),
+ uploadWizardState.uuid,
+ uploadWizardState.permissionList);
+ } catch (TException e) {
+ // TODO Auto-generated catch block
+ LOGGER.error("Could not push permission list to satellite: ", e);
+ return false;
+ }
+ }
if (imageDetailsRead != null) {
// it did work :)
LOGGER.debug(imageDetailsRead.toString());
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java
index eb353b56..7a56b016 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageCustomPermissionPageLayout.java
@@ -14,7 +14,8 @@ public class ImageCustomPermissionPageLayout extends WizardPage {
protected Composite container;
- // The table viewer
+ // The table stuff
+ protected Table permissionTable;
protected TableViewer permissionTableViewer;
// Buttons
@@ -41,14 +42,10 @@ public class ImageCustomPermissionPageLayout extends WizardPage {
layout.numColumns = 2;
// table
- Table vmTable = new Table(container, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
- vmTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
- vmTable.setHeaderVisible(true);
- vmTable.setLinesVisible(true);
-
- // TableViewer on the table
- permissionTableViewer = new TableViewer(vmTable);
- permissionTableViewer.setContentProvider(ArrayContentProvider.getInstance());
+ permissionTable = new Table(container, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ permissionTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+ permissionTable.setHeaderVisible(true);
+ permissionTable.setLinesVisible(true);
// Buttons below Table
addUser = new Button(container, SWT.PUSH);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java
index 16aff2da..8cc21587 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java
@@ -6,7 +6,9 @@ import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
@@ -14,7 +16,6 @@ import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.UserInfo;
@@ -22,114 +23,161 @@ import org.openslx.dozmod.gui.helper.TableHelper;
import org.openslx.dozmod.gui.helper.UserToPermissionLink;
import org.openslx.dozmod.gui.wizard.layout.ImageCustomPermissionPageLayout;
import org.openslx.dozmod.state.UploadWizardState;
-import org.openslx.dozmod.thrift.ImageCache;
import org.openslx.dozmod.thrift.UserCache;
-
public class ImageCustomPermissionPage extends ImageCustomPermissionPageLayout {
- private final static Logger LOGGER = Logger.getLogger(ImageCustomPermissionPage.class);
-
- private UploadWizardState uploadWizardState;
-
+ private final static Logger LOGGER = Logger
+ .getLogger(ImageCustomPermissionPage.class);
+ private UploadWizardState uploadWizardState = null;
+ private ArrayList<UserToPermissionLink> permissionList = null;
+ private Map<String, ImagePermissions> imagePermissionsMap = null;
/**
* wizard page for setting custom permissions
*/
+ @SuppressWarnings("serial")
public ImageCustomPermissionPage(UploadWizardState uploadWizardState) {
super();
this.uploadWizardState = uploadWizardState;
+ // data "model"
+ imagePermissionsMap = new HashMap<String, ImagePermissions>() {
+ {
+ for (UserInfo user : UserCache.getAll()) {
+ put(user.getUserId(), new ImagePermissions(true, true, true, false));
+ }
+ }
+ };
+ permissionList = new ArrayList<UserToPermissionLink>();
}
- @SuppressWarnings("serial")
@Override
public void createControl(Composite parent) {
super.createControl(parent);
- ImagePermissions perms = new ImagePermissions(true, true, false, false);
- TableHelper.createImagePermissionTableColumns(permissionTableViewer,
- new ColumnLabelProvider() {
- private HashMap<Object, Button> buttons = new HashMap<Object, Button>();
- private final Button createButton(Composite parent, int style) {
- Button newButton = new Button(parent, style);
- newButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- Button o = (Button)e.getSource();
- System.out.println(o.toString());
- }
- });
- return newButton;
+
+ List<String> mapKeys = new ArrayList<String>(imagePermissionsMap.keySet());
+ if (imagePermissionsMap != null) {
+ for (String key : mapKeys) {
+ permissionList.add(new UserToPermissionLink(key, imagePermissionsMap
+ .get(key)));
}
+ }
+
+ // Initialize the table viewer now that everything is ready
+ permissionTableViewer = new TableViewer(permissionTable);
+ permissionTableViewer.setContentProvider(ArrayContentProvider.getInstance());
+
+ // create table columns through TableHelper
+ TableHelper.createImagePermissionTableColumns(permissionTableViewer,
+ new ColumnLabelProvider() {
@Override
public void update(ViewerCell cell) {
- TableItem item = (TableItem) cell.getItem();
- Button button;
- if (buttons.containsKey(cell.getElement())) {
- button = buttons.get(cell.getElement());
- } else {
- button = createButton((Composite) cell
+ TableItem item = (TableItem) cell.getItem();
+ Object cellElement = cell.getElement();
+ UserToPermissionLink userPermLink = null;
+ if (cellElement instanceof UserToPermissionLink) {
+ userPermLink = (UserToPermissionLink) cellElement;
+ }
+ if (userPermLink == null) {
+ // TODO handle properly
+ LOGGER.debug("Could not cast '" + cellElement
+ + "' to UserToPermissionLink!");
+ return;
+ }
+ int cellIndex = cell.getColumnIndex();
+ // CASE there are 5 columns, therefore we need to subtract 1
+ // (for the user label) when using cellIndex as index for the buttons array!!!
+ if (userPermLink.buttons[cellIndex - 1] == null) {
+ userPermLink.buttons[cellIndex - 1] = createButton((Composite) cell
.getViewerRow().getControl(), SWT.CHECK);
- buttons.put(cell.getElement(), button);
+ userPermLink.buttons[cellIndex - 1].setData("userId", userPermLink.getUserId());
+ userPermLink.buttons[cellIndex - 1].setData("index", cellIndex - 1);
}
+ // finally set the button's state according to the perms
+ boolean savedPerm = false;
+ switch (cellIndex) {
+ case 1:
+ savedPerm = userPermLink.getPermission().link;
+ break;
+ case 2:
+ savedPerm = userPermLink.getPermission().download;
+ break;
+ case 3:
+ savedPerm = userPermLink.getPermission().edit;
+ break;
+ case 4:
+ savedPerm = userPermLink.getPermission().admin;
+ default:
+ break;
+ }
+ userPermLink.buttons[cellIndex -1].setSelection(savedPerm);
TableEditor editor = new TableEditor(item.getParent());
editor.grabHorizontal = true;
editor.grabVertical = true;
- editor.setEditor(button, item, cell.getColumnIndex());
+ editor.setEditor(userPermLink.buttons[cellIndex - 1], item, cell.getColumnIndex());
editor.layout();
}
});
- List<UserInfo> userList = UserCache.getAll();
- List<HashMap<String, ImagePermissions>> perms2 = new ArrayList<HashMap<String, ImagePermissions>>();
- for (final UserInfo user : userList) {
- perms2.add(new HashMap<String, ImagePermissions>() {{
- put(user.getUserId(), new ImagePermissions(true, true, false, false));
- }});
- }
- permissionTableViewer.setInput(userList);
- permissionTableViewer.refresh();
- for (TableColumn tc : permissionTableViewer.getTable().getColumns()) {
- tc.pack();
- }
+ permissionTableViewer.setInput(permissionList);
+ permissionTableViewer.refresh();
+ // add user button adapter
addUser.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- System.out.println(ImageCache.get(false).get(0).getOwnerId());
- ArrayList<UserToPermissionLink> permissionList = new ArrayList<UserToPermissionLink>();
- Map<String, ImagePermissions> imagePermissionsMap = new HashMap<String, ImagePermissions>(){{
- put("foo", new ImagePermissions(false, false, false, false));
- }};
-// try {
-// ThriftManager.getSatClient().writeImagePermissions(Session.getSatelliteToken(), ImageCache.get(false).get(0).getImageBaseId(),
-// new HashMap<String, ImagePermissions>(){{
-// put("foo", new ImagePermissions(false, false, false, false));
-// }});
-// } catch (TException e1) {
-// // TODO Auto-generated catch block
-// e1.printStackTrace();
-// }
-// try {
-// imagePermissionsMap = ThriftManager.getSatClient().getImagePermissions(Session.getSatelliteToken(), ImageCache.get(false).get(0).getImageBaseId());
-// } catch (TException e1) {
-// // TODO Auto-generated catch block
-// e1.printStackTrace();
-// }
-
-
-
- List<String> mapKeys = new ArrayList<String>(imagePermissionsMap.keySet());
- if (imagePermissionsMap != null){
- for (String key : mapKeys) {
- permissionList.add(new UserToPermissionLink(key, imagePermissionsMap.get(key)));
- }
- }
-
-
- permissionTableViewer.setInput(permissionList);
- permissionTableViewer.refresh();
+ LOGGER.debug("addUser called");
}
});
}
-
+ /**
+ * @param parent Parent to this button
+ * @param style Style
+ * @return the button
+ */
+ private Button createButton(Composite parent, int style) {
+ Button newButton = new Button(parent, style);
+ newButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Button o = (Button) e.getSource();
+ callback(o);
+ }
+ });
+ return newButton;
+ }
+
+ /**
+ * @param button
+ */
+ public void callback(final Button button) {
+ int index = (int)button.getData("index");
+ String userId = (String) button.getData("userId");
+ ImagePermissions perm = null;
+ if (imagePermissionsMap.containsKey(userId)) {
+ perm = imagePermissionsMap.get(userId);
+ } else {
+ LOGGER.error(userId + " is not in the permission map!");
+ return;
+ }
+ LOGGER.debug("Before: " + perm);
+ switch(index) {
+ case 0:
+ perm.link = button.getSelection();
+ break;
+ case 1:
+ perm.download = button.getSelection();
+ break;
+ case 2:
+ perm.edit = button.getSelection();
+ break;
+ case 3:
+ perm.admin = button.getSelection();
+ break;
+ default:
+ break;
+ }
+ uploadWizardState.permissionList = imagePermissionsMap;
+ LOGGER.debug("After: " + perm);
+ }
}