Various API issues
[EMFCompare2.git] / plugins / org.eclipse.emf.compare.edit / src / org / eclipse / emf / compare / provider / spec / MatchItemProviderSpec.java
blobda031515f708d28b318a2947a87afac25bae9bb8
1 /*******************************************************************************
2 * Copyright (c) 2012, 2014 Obeo.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Obeo - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.emf.compare.provider.spec;
13 import static com.google.common.base.Strings.isNullOrEmpty;
15 import org.eclipse.emf.common.notify.AdapterFactory;
16 import org.eclipse.emf.compare.Match;
17 import org.eclipse.emf.compare.provider.IItemDescriptionProvider;
18 import org.eclipse.emf.compare.provider.IItemStyledLabelProvider;
19 import org.eclipse.emf.compare.provider.MatchItemProvider;
20 import org.eclipse.emf.compare.provider.utils.ComposedStyledString;
21 import org.eclipse.emf.compare.provider.utils.IStyledString;
22 import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
24 /**
25 * Specialized {@link MatchItemProvider} returning nice output for {@link #getText(Object)} and
26 * {@link #getImage(Object)}.
28 * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
30 public class MatchItemProviderSpec extends MatchItemProvider implements IItemStyledLabelProvider, IItemDescriptionProvider {
31 /** The image provider used with this item provider. */
32 private final OverlayImageProvider overlayProvider;
34 /** The item delegator for match objects. */
35 private final AdapterFactoryItemDelegator itemDelegator;
37 /**
38 * Constructor calling super {@link #MatchItemProvider(AdapterFactory)}.
40 * @param adapterFactory
41 * the adapter factory
43 public MatchItemProviderSpec(AdapterFactory adapterFactory) {
44 super(adapterFactory);
45 itemDelegator = new AdapterFactoryItemDelegator(getRootAdapterFactory());
46 overlayProvider = new OverlayImageProvider(getResourceLocator());
49 /**
50 * {@inheritDoc}
52 * @see org.eclipse.emf.compare.provider.MatchItemProvider#getImage(java.lang.Object)
54 @Override
55 public Object getImage(Object object) {
56 Match match = (Match)object;
57 Object ret = itemDelegator.getImage(match.getLeft());
59 if (ret == null) {
60 ret = itemDelegator.getImage(match.getOrigin());
63 if (ret == null) {
64 ret = itemDelegator.getImage(match.getRight());
67 if (ret == null) {
68 ret = super.getImage(object);
71 Object matchImage = overlayProvider.getComposedImage(match, ret);
72 ret = overlayImage(object, matchImage);
74 return ret;
77 /**
78 * {@inheritDoc}
80 * @see org.eclipse.emf.compare.provider.MatchItemProvider#getText(java.lang.Object)
82 @Override
83 public String getText(Object object) {
84 Match match = (Match)object;
85 String ret = itemDelegator.getText(match.getLeft());
87 if (isNullOrEmpty(ret)) {
88 ret = itemDelegator.getText(match.getOrigin());
91 if (isNullOrEmpty(ret)) {
92 ret = itemDelegator.getText(match.getRight());
95 if (isNullOrEmpty(ret)) {
96 ret = super.getText(object);
99 return ret;
102 /* Missing override : only for EMF 2.10 and later. Do not tag. */
104 * {@inheritDoc}
106 * @see org.eclipse.emf.compare.provider.IItemStyledLabelProvider#getStyledText(java.lang.Object)
107 * @since 3.0
109 public IStyledString.IComposedStyledString getStyledText(Object object) {
110 ComposedStyledString styledString = new ComposedStyledString(getText(object));
111 return styledString;
115 * {@inheritDoc}
117 * @see org.eclipse.emf.compare.provider.IItemDescriptionProvider#getDescription(java.lang.Object)
119 public String getDescription(Object object) {
120 return getText(object);