| package org.eclipse.epf.authoring.ui.providers; |
| |
| import org.eclipse.emf.edit.provider.IItemLabelProvider; |
| import org.eclipse.emf.edit.provider.ItemProviderAdapter; |
| import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; |
| import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; |
| import org.eclipse.epf.library.configuration.closure.ConfigurationClosure; |
| import org.eclipse.epf.library.configuration.closure.ElementDependencyError; |
| import org.eclipse.epf.uma.Process; |
| import org.eclipse.epf.uma.ProcessComponent; |
| import org.eclipse.jface.viewers.ILabelProvider; |
| import org.eclipse.jface.viewers.LabelProvider; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.ui.ISharedImages; |
| import org.eclipse.ui.PlatformUI; |
| |
| public class ConfigPackageLabelProvider extends LabelProvider { |
| |
| private ConfigurationClosure closure = null; |
| private ConfigPackageContentProvider contentProvider; |
| private AdapterFactoryLabelProvider afProvider; |
| |
| /** |
| * Creates an instance |
| * @param contentProvider |
| */ |
| public ConfigPackageLabelProvider( |
| ConfigPackageContentProvider contentProvider) { |
| this.contentProvider = contentProvider; |
| afProvider = new AdapterFactoryLabelProvider(contentProvider |
| .getAdapterFactory()); |
| } |
| |
| private ElementDependencyError getFirstChildError(Object e) { |
| ElementDependencyError error = null; |
| Object[] children = contentProvider.getChildren(e); |
| if (children == null || children.length == 0) { |
| return null; |
| } |
| |
| for (int i = 0; i < children.length; i++) { |
| Object object = children[i]; |
| if (object instanceof ItemProviderAdapter) { |
| return getFirstChildError(object); |
| } else { |
| error = closure.getError(object); |
| if (error != null) { |
| return error; |
| } |
| } |
| } |
| |
| return error; |
| } |
| |
| /** |
| * This implements {@link ILabelProvider}.getImage by forwarding it to |
| * an object that implements |
| * {@link IItemLabelProvider#getImage IItemLabelProvider.getImage} |
| */ |
| public Image getImage(Object object) { |
| if (closure != null) { |
| |
| ElementDependencyError error = null; |
| if (object instanceof ItemProviderAdapter) { |
| error = getFirstChildError(object); |
| } else { |
| error = closure.getError(object); |
| } |
| |
| if (error != null) { |
| if (error.isError() || error.isChildError()) { |
| return PlatformUI.getWorkbench().getSharedImages() |
| .getImage(ISharedImages.IMG_OBJS_ERROR_TSK); |
| } else if (error.isWarning() || error.isChildWarning()) { |
| return PlatformUI.getWorkbench().getSharedImages() |
| .getImage(ISharedImages.IMG_OBJS_WARN_TSK); |
| } |
| } |
| } |
| |
| return afProvider.getImage(object); |
| } |
| |
| protected Image getImageFromObject(Object object) { |
| return ExtendedImageRegistry.getInstance().getImage(object); |
| } |
| |
| /** |
| * This implements {@link ILabelProvider}.getText by forwarding it to |
| * an object that implements |
| * {@link IItemLabelProvider#getText IItemLabelProvider.getText} |
| */ |
| public String getText(Object object) { |
| if (object instanceof ProcessComponent) { |
| Process proc = (Process) ((ProcessComponent) object) |
| .getProcess(); |
| if (proc != null) |
| return proc.getPresentationName(); |
| else |
| // if process is null, return processcomponent name |
| return ((ProcessComponent) object).getName(); |
| } else |
| return afProvider.getText(object); |
| } |
| |
| /** |
| * @see org.eclipse.jface.viewers.LabelProvider#dispose() |
| */ |
| public void dispose() { |
| super.dispose(); |
| |
| contentProvider = null; |
| afProvider = null; |
| } |
| |
| public void setClosure(ConfigurationClosure closure) { |
| this.closure = closure; |
| } |
| |
| } |