package org.eclipse.emf.emfstore.client.ui.views.users; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.emf.emfstore.server.model.ProjectInfo; import org.eclipse.emf.emfstore.server.model.accesscontrol.Role; import org.eclipse.emf.emfstore.server.model.accesscontrol.RoleAssignment; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; class RoleSelectionContentProvider implements ITreeContentProvider { private UserUiController controller; public RoleSelectionContentProvider(UserUiController controller) { this.controller = controller; } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } public void dispose() { } public boolean hasChildren(Object element) { return ((RoleSelection) element).getRole() == null; } public Object getParent(Object element) { return null; } public Object[] getElements(Object inputElement) { Collection<RoleAssignment> roles = (Collection<RoleAssignment>) inputElement; // RoleSelectionContent content = (RoleSelectionContent) inputElement; List<Object> elements = new ArrayList<Object>(); for (Role roleData : controller.getPermissionSet().getRoles()) { if (roleData.isSystemRole()) { elements.add(new RoleSelection(roleData, null)); } } for (ProjectInfo projectInfo : controller.getProjects()) { if (projectInfo.getProjectId() == null) { throw new RuntimeException("project info with null project ID"); } elements.add(new RoleSelection(null, projectInfo)); } return elements.toArray(); } public Object[] getChildren(Object parentElement) { if (((RoleSelection) parentElement).getRole() == null) { RoleSelection sel = (RoleSelection) parentElement; List<RoleSelection> roleSelections = new ArrayList<RoleSelection>(); for (Role role : controller.getPermissionSet().getRoles()) { if (!role.isSystemRole()) { roleSelections.add(new RoleSelection(role, sel.getProject())); } } return roleSelections.toArray(); } return null; } }