package org.eclipse.emf.emfstore.client.ui.views.emfstorebrowser.dialogs.admin; import org.eclipse.emf.emfstore.server.model.accesscontrol.ACUser; import org.eclipse.emf.emfstore.server.model.accesscontrol.PermissionSet; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.CheckboxTreeViewer; import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer; public class ChooseUsersPage extends WizardPage { private static class ViewerLabelProvider extends LabelProvider { @Override public Image getImage(Object element) { return super.getImage(element); } @Override public String getText(Object element) { if (element instanceof ACUser) { ACUser user = (ACUser) element; return user.getName(); } return super.getText(element); } } private static class TreeContentProvider implements ITreeContentProvider { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } public void dispose() { } public Object[] getElements(Object inputElement) { if (inputElement instanceof PermissionSet) { PermissionSet permSet = (PermissionSet) inputElement; return permSet.getUsers().toArray(); } return null; } public Object[] getChildren(Object parentElement) { return new Object[] {}; } public Object getParent(Object element) { return null; } public boolean hasChildren(Object element) { return getChildren(element).length > 0; } } private AssignRolesWizard wizard; /** * Create the wizard. * * @param assignRolesWizard */ public ChooseUsersPage(AssignRolesWizard assignRolesWizard) { super("wizardPage"); setTitle("Choose Users"); setDescription("Choose Users which roles will be assigned to"); this.wizard = assignRolesWizard; } /** * Create contents of the wizard. * * @param parent */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); setControl(container); container.setLayout(new FillLayout(SWT.HORIZONTAL)); CheckboxTreeViewer treeViewer = new ContainerCheckedTreeViewer(container, SWT.BORDER); Tree tree = treeViewer.getTree(); TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE); TreeColumn trclmnUser = treeViewerColumn.getColumn(); trclmnUser.setWidth(200); trclmnUser.setText("User"); TreeViewerColumn treeViewerColumn_1 = new TreeViewerColumn(treeViewer, SWT.NONE); TreeColumn trclmnRoles = treeViewerColumn_1.getColumn(); trclmnRoles.setWidth(200); trclmnRoles.setText("Roles"); treeViewer.setLabelProvider(new ViewerLabelProvider()); TreeContentProvider contentProvider = new TreeContentProvider(); treeViewer.setContentProvider(contentProvider); treeViewer.setInput(wizard.getPermissionSet()); treeViewer.addCheckStateListener(new ICheckStateListener() { public void checkStateChanged(CheckStateChangedEvent event) { if (event.getChecked()) { wizard.getSelectedUsers().add((ACUser) event.getElement()); } else { wizard.getSelectedUsers().remove(event.getElement()); } } }); } @Override public boolean canFlipToNextPage() { return wizard.getSelectedUsers().size() > 0; } }