diff options
author | Jonathan Bauer | 2015-07-21 18:24:15 +0200 |
---|---|---|
committer | Jonathan Bauer | 2015-07-21 18:24:15 +0200 |
commit | d879b5c0416505fcdf068a462b7a73ccfebdf794 (patch) | |
tree | f5a0ef45085e503e9542955ce6dcaf548d59cb89 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard | |
parent | [client] Fixed some comments. (diff) | |
download | tutor-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')
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); + } } |