package org.eclipse.emf.emfstore.client.ui.views.users;
import java.util.Collection;
import java.util.List;
import org.eclipse.emf.emfstore.server.model.ProjectId;
import org.eclipse.emf.emfstore.server.model.ProjectInfo;
import org.eclipse.emf.emfstore.server.model.accesscontrol.RoleAssignment;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
import org.eclipse.ui.model.WorkbenchLabelProvider;
public class CheckedTreeRoleSelectionDialog extends CheckedTreeSelectionDialog {
private UserUiController controller;;
//
// private class CheckStateProvider implements ICheckStateProvider {
//
// public boolean isChecked(Object element) {
// Object[] sel = getTreeViewer().getCheckedElements();
// if (((RoleSelection) element).getRoleId().equals("")) {
// RoleSelection selection = (RoleSelection) element;
//
// for (Object obj : sel) {
// RoleSelection roleSelection = (RoleSelection) obj;
// if (selection.getProjectId().equals(roleSelection.getProjectId()) && selection != roleSelection) {
// return true;
// }
// }
// return false;
// }
// return Arrays.asList(sel).contains(element);
// }
//
// public boolean isGrayed(Object element) {
// if (((RoleSelection) element).getRoleId().equals("")) {
// return true;
// }
// return false;
// }
// }
public CheckedTreeRoleSelectionDialog(Shell shell, UserUiController controller) {
super(shell, new WorkbenchLabelProvider(), new RoleSelectionContentProvider(controller));
this.controller = controller;
setContainerMode(true);
}
@SuppressWarnings("unchecked")
@Override
protected List getInitialElementSelections() {
List<RoleSelection> list = super.getInitialElementSelections();
Collection<RoleAssignment> assignments = (Collection<RoleAssignment>) getTreeViewer().getInput();
for (RoleAssignment roleAssignment : assignments) {
ProjectId projectId = roleAssignment.getProjectId();
ProjectInfo info = null;
if (projectId != null) {
// list.add(new RoleSelection(null, projectId.getId()));
info = controller.getProject(projectId);
}
list.add(new RoleSelection(roleAssignment.getRole(), info));
}
for (RoleSelection sel : list) {
getTreeViewer().expandToLevel(new RoleSelection(null, sel.getProject()), TreeViewer.ALL_LEVELS);
getTreeViewer().expandToLevel(sel, TreeViewer.ALL_LEVELS);
}
return list;
}
@Override
protected CheckboxTreeViewer createTreeViewer(Composite parent) {
final CheckboxTreeViewer viewer = super.createTreeViewer(parent);
Util.configureRoleSelectionTreeViewer(viewer);
return viewer;
}
}