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
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
;
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
;
38 * Constructor calling super {@link #MatchItemProvider(AdapterFactory)}.
40 * @param adapterFactory
43 public MatchItemProviderSpec(AdapterFactory adapterFactory
) {
44 super(adapterFactory
);
45 itemDelegator
= new AdapterFactoryItemDelegator(getRootAdapterFactory());
46 overlayProvider
= new OverlayImageProvider(getResourceLocator());
52 * @see org.eclipse.emf.compare.provider.MatchItemProvider#getImage(java.lang.Object)
55 public Object
getImage(Object object
) {
56 Match match
= (Match
)object
;
57 Object ret
= itemDelegator
.getImage(match
.getLeft());
60 ret
= itemDelegator
.getImage(match
.getOrigin());
64 ret
= itemDelegator
.getImage(match
.getRight());
68 ret
= super.getImage(object
);
71 Object matchImage
= overlayProvider
.getComposedImage(match
, ret
);
72 ret
= overlayImage(object
, matchImage
);
80 * @see org.eclipse.emf.compare.provider.MatchItemProvider#getText(java.lang.Object)
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
);
102 /* Missing override : only for EMF 2.10 and later. Do not tag. */
106 * @see org.eclipse.emf.compare.provider.IItemStyledLabelProvider#getStyledText(java.lang.Object)
109 public IStyledString
.IComposedStyledString
getStyledText(Object object
) {
110 ComposedStyledString styledString
= new ComposedStyledString(getText(object
));
117 * @see org.eclipse.emf.compare.provider.IItemDescriptionProvider#getDescription(java.lang.Object)
119 public String
getDescription(Object object
) {
120 return getText(object
);