/** * <copyright> Copyright (c) 2008-2009 Jonas Helming, Maximilian Koegel. All rights reserved. This program and the * accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html </copyright> */ package org.eclipse.emf.emfstore.client.ui.views; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; import org.eclipse.emf.emfstore.client.ui.views.emfstorebrowser.dialogs.admin.RoleAssignmentData; import org.eclipse.emf.emfstore.client.ui.views.emfstorebrowser.dialogs.admin.RoleBox; import org.eclipse.emf.emfstore.client.ui.views.users.RoleSelection; import org.eclipse.emf.emfstore.client.ui.views.users.UsersView.AdministrationNavigatorRootNode; import org.eclipse.emf.emfstore.server.model.accesscontrol.Role; import org.eclipse.emf.emfstore.server.model.accesscontrol.provider.AccesscontrolItemProviderAdapterFactory; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.model.IWorkbenchAdapter; /** * this adapter factory knows objects used in the UI views and provides adaptation to LabelProvider, this is registered * in plugin.xml and used by the WorkspaceLabelProvider. The ContentProvider part of the WorkbenchAdapter is not * implemented * * @author boehlke * */ public class LabelProviderAdpaterFactory implements IAdapterFactory { private class WorkbenchAdapter implements IWorkbenchAdapter { private AdapterFactoryLabelProvider roleLabelProvider; public WorkbenchAdapter() { roleLabelProvider = new AdapterFactoryLabelProvider(new AccesscontrolItemProviderAdapterFactory()); } ILabelProvider labelProvider = new LabelProvider() { @Override public String getText(Object element) { if (element instanceof RoleBox) { RoleBox role = (RoleBox) element; return role.getRole().getName(); } else if (element instanceof RoleSelection) { RoleSelection roleSelection = (RoleSelection) element; Role role = roleSelection.getRole(); if (role == null) { return roleSelection.getProject().getName(); } return role.getName(); } else if (element instanceof RoleAssignmentData) { RoleAssignmentData data = (RoleAssignmentData) element; return data.getRole().getName() + " for " + data.getOrgUnit().getName(); } else if (element instanceof AdministrationNavigatorRootNode) { AdministrationNavigatorRootNode node = (AdministrationNavigatorRootNode) element; switch (node.getType()) { case Users: return "Users"; case Groups: return "Groups"; case SystemRoles: return "System roles"; case ProjectRoles: return "Project roles"; } } return super.getText(element); } @Override public Image getImage(Object element) { if (element instanceof RoleSelection) { RoleSelection sel = (RoleSelection) element; if (sel.getRole() != null) { return roleLabelProvider.getImage(((RoleSelection) element).getRole()); } } return super.getImage(element); } }; public Object[] getChildren(Object o) { throw new UnsupportedOperationException(); } public ImageDescriptor getImageDescriptor(Object object) { Image image = labelProvider.getImage(object); if (image != null) { return ImageDescriptor.createFromImage(image); } return null; } public String getLabel(Object o) { return labelProvider.getText(o); } public Object getParent(Object o) { throw new UnsupportedOperationException(); } } /** * {@inheritDoc} * * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class) */ public Object getAdapter(Object adaptableObject, Class adapterType) { if (adapterType == IWorkbenchAdapter.class) { return new WorkbenchAdapter(); } return null; } /** * {@inheritDoc} * * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList() */ public Class[] getAdapterList() { return new Class[] { IWorkbenchAdapter.class }; } }