blob: bdf4d36ed9cb650677db01803b148b3268ebf275 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Christian W. Damus 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:
* Christian W. Damus - initial API and implementation
*******************************************************************************/
package org.eclipse.papyrus.compare.uml2.edit.internal.decorator;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.compare.provider.ExtendedItemProviderDecorator;
import org.eclipse.emf.compare.provider.IItemDescriptionProvider;
import org.eclipse.emf.compare.provider.IItemStyledLabelProvider;
import org.eclipse.emf.compare.provider.ISemanticObjectLabelProvider;
import org.eclipse.emf.compare.provider.utils.ComposedStyledString;
import org.eclipse.emf.compare.provider.utils.IStyledString.IComposedStyledString;
import org.eclipse.emf.edit.EMFEditPlugin;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedImage;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemColorProvider;
import org.eclipse.emf.edit.provider.IItemFontProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.papyrus.compare.uml2.edit.Activator;
/**
* A simple forwarding item-provider decorator that implements all of the optional provider interfaces.
*/
public class ForwardingItemProviderDecorator extends ExtendedItemProviderDecorator implements IEditingDomainItemProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider, IItemDescriptionProvider, ISemanticObjectLabelProvider {
/**
* Initializes me with my adapter factory.
*
* @param adapterFactory
* my adapter factory
*/
public ForwardingItemProviderDecorator(ComposeableAdapterFactory adapterFactory) {
super(adapterFactory);
}
public String getSemanticObjectLabel(Object object) {
if (decoratedItemProvider instanceof ISemanticObjectLabelProvider) {
return ((ISemanticObjectLabelProvider)decoratedItemProvider).getSemanticObjectLabel(object);
}
return null;
}
public String getDescription(Object object) {
if (decoratedItemProvider instanceof IItemDescriptionProvider) {
return ((IItemDescriptionProvider)decoratedItemProvider).getDescription(object);
}
return getText(object);
}
public IComposedStyledString getStyledText(Object object) {
if (decoratedItemProvider instanceof IItemStyledLabelProvider) {
return ((IItemStyledLabelProvider)decoratedItemProvider).getStyledText(object);
}
String text = getText(object);
if (text != null) {
return new ComposedStyledString(text);
}
return null;
}
protected String getString(String key) {
return Activator.getDefault().getResourceLocator().getString(key);
}
protected String getString(String key, boolean translate) {
return Activator.getDefault().getResourceLocator().getString(key, translate);
}
protected String getString(String key, Object[] substitutions) {
return Activator.getDefault().getResourceLocator().getString(key, substitutions);
}
protected String getString(String key, Object[] substitutions, boolean translate) {
return Activator.getDefault().getResourceLocator().getString(key, substitutions, translate);
}
protected Object overlayImage(Object object, Object image) {
Object result = image;
if (AdapterFactoryEditingDomain.isControlled(object)) {
List<Object> images = new ArrayList<Object>(2);
images.add(image);
images.add(EMFEditPlugin.INSTANCE.getImage("full/ovr16/ControlledObject")); //$NON-NLS-1$
result = new ComposedImage(images);
}
return result;
}
}