package org.eclipse.emf.editor.provider; /** * <copyright> * * Copyright (c) 2008 itemis AG and others. * 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 * * Contributors: * itemis AG - Initial API and implementation * * </copyright> * */ import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.provider.ReflectiveItemProvider; import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; import org.eclipse.emf.editor.EEPlugin; import org.eclipse.emf.editor.ValidationInfoAdapter; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.DecorationOverlayIcon; import org.eclipse.jface.viewers.IDecoration; import org.eclipse.swt.graphics.Image; /** * @author Dennis Huebner * */ public class ExtendedReflectiveItemProviderAdapterFactory extends ReflectiveItemProviderAdapterFactory { public ExtendedReflectiveItemProviderAdapterFactory(final DecoratingLabelProvider decoratingLabelProvider) { super(); reflectiveItemProviderAdapter = new ExtendedReflectiveItemProvider(this, decoratingLabelProvider); } public final class ExtendedReflectiveItemProvider extends ReflectiveItemProvider { private final DecoratingLabelProvider labelProvider; private LocalResourceManager localResourceManager; private ExtendedReflectiveItemProvider(AdapterFactory adapterFactory, DecoratingLabelProvider decoratingLabelProvider) { super(adapterFactory); this.labelProvider = decoratingLabelProvider; } public String getTextForFeature(EStructuralFeature feature) { return getFeatureText(feature); } @Override public String getText(Object object) { String text = labelProvider.getText(object); if (text == null) { text = super.getText(object); } return text; } protected Image annotateImage(Image image, int severity) { ImageDescriptor[] descriptors = new ImageDescriptor[5]; if (severity == IMessageProvider.ERROR) descriptors[IDecoration.BOTTOM_LEFT] = EEPlugin.getDefault().getImageDescriptor("/icons/error.gif"); if (severity == IMessageProvider.WARNING) descriptors[IDecoration.BOTTOM_RIGHT] = EEPlugin.getDefault().getImageDescriptor( "/icons/warning_co.gif"); image = getImageManager().createImage(new DecorationOverlayIcon(image, descriptors)); return image; } private org.eclipse.jface.resource.ResourceManager getImageManager() { if (localResourceManager == null) localResourceManager = new LocalResourceManager(JFaceResources.getResources()); return localResourceManager; } @Override public Object getImage(Object object) { Object imURI = labelProvider.getImage(object); if (imURI == null) imURI = super.getImage(object); Image im = ExtendedImageRegistry.getInstance().getImage(imURI); if (im != null) { if (object instanceof EObject) { ValidationInfoAdapter find = ValidationInfoAdapter.find((EObject) object); if (find != null) im = annotateImage(im, find.getSeverity()); } return im; } return imURI; } } }