/******************************************************************************* * Copyright (c) 2015 Obeo. * 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: * Obeo - initial API and implementation *******************************************************************************/ package org.eclipse.emf.compare.uml2.internal.provider.tooltips; import java.util.ArrayList; import java.util.Collection; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.compare.provider.ITooltipLabelProvider; import org.eclipse.emf.compare.uml2.internal.util.UMLCompareAdapterFactory; import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; /** * This factory return for each UML change a class implementing the {@link ITooltipLabelProvider} interface. * This allow to compute the tooltips used in the ui for each change. * * @author <a href="mailto:mathieu.cartaud@obeo.fr">Mathieu Cartaud</a> * @since 4.2 */ public class UMLTooltipLabelProviderFactory extends UMLCompareAdapterFactory implements ComposeableAdapterFactory { /** * The composed adapter factory. */ protected ComposedAdapterFactory parentAdapterFactory; /** * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. */ protected Collection<Object> supportedTypes = new ArrayList<Object>(); /** * The constructor. */ public UMLTooltipLabelProviderFactory() { supportedTypes.add(ITooltipLabelProvider.class); } @Override public Adapter createStereotypeApplicationChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createStereotypeAttributeChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createStereotypedElementChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createStereotypeReferenceChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createIntervalConstraintChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createDirectedRelationshipChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createGeneralizationSetChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createOpaqueElementBodyChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createMessageChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createExecutionSpecificationChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createAssociationChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createProfileApplicationChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } @Override public Adapter createExtendChangeAdapter() { return new DefaultUMLTooltipProvider(parentAdapterFactory); } /** * This returns the root adapter factory that contains this factory. * * @return the composed adapter factory */ public ComposeableAdapterFactory getRootAdapterFactory() { if (parentAdapterFactory == null) { return this; } else { return parentAdapterFactory.getRootAdapterFactory(); } } /** * This sets the composed adapter factory that contains this factory. * * @param parentAdapterFactory * The composed adapter factory */ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) { this.parentAdapterFactory = parentAdapterFactory; } @Override public boolean isFactoryForType(Object type) { return supportedTypes.contains(type) || super.isFactoryForType(type); } }