public class TreeMergeViewerItemContentProvider extends Object implements IMergeViewerItemContentProvider
IMergeViewerItem
s which uses their 'left', 'right' and 'ancestor' sides in
combination with the given AdapterFactory
to create the children and parent
IMergeViewerItem
s.Constructor and Description |
---|
TreeMergeViewerItemContentProvider() |
Modifier and Type | Method and Description |
---|---|
boolean |
canHandle(Object object)
Indicates whether this provider wants to handle the given
object . |
protected List<? extends Diff> |
collectAndFilterDifferences(Iterable<Object> objects,
IMergeViewerItemProviderConfiguration configuration)
Determines the differences related to the given objects and filters them according to the
visibleContainmentDiffPredicate(IMergeViewerItemProviderConfiguration) . |
protected IMergeViewerItem |
createBasicContainer(ResourceAttachmentChange diff,
IMergeViewerItem mergeViewerItem,
AdapterFactory adapterFactory)
Create an IMergeViewerItem for the parent of the given
ResourceAttachmentChange . |
protected List<IMergeViewerItem> |
createInsertionPoints(IMergeViewerItem parent,
List<IMergeViewerItem> values,
List<? extends Diff> differences,
IMergeViewerItemProviderConfiguration configuration)
Creates and inserts the insertion points for the given
values . |
protected List<IMergeViewerItem> |
createInsertionPoints(IMergeViewerItem parent,
List<Object> sideContent,
List<Object> oppositeContent,
List<Object> ancestorContent,
List<? extends IMergeViewerItem> values,
List<? extends Diff> differences,
IMergeViewerItemProviderConfiguration configuration)
Creates the insertion points for the given
values based on the children of each side. |
protected IMergeViewerItem |
createMergeViewerItem(Comparison comparison,
Diff diff,
Match match,
IMergeViewer.MergeViewerSide side,
AdapterFactory adapterFactory)
Creates the
IMergeViewerItem from the given data. |
protected IMergeViewerItem |
createMergeViewerItem(Comparison comparison,
Diff diff,
Object left,
Object right,
Object ancestor,
IMergeViewer.MergeViewerSide side,
AdapterFactory adapterFactory)
Creates the
IMergeViewerItem from the given data. |
protected IMergeViewerItem |
createMergeViewerItemFrom(EObject eObject,
IMergeViewerItem parent,
IMergeViewerItemProviderConfiguration configuration)
Creates an IMergeViewerItem from an EObject.
|
protected List<IMergeViewerItem> |
createMergeViewerItemsFrom(Collection<?> values,
IMergeViewerItem parent,
IMergeViewerItemProviderConfiguration configuration)
Creates the Merge Viewer Items for the given
values . |
protected Object |
getBestSideValue(IMergeViewerItem mergeViewerItem,
IMergeViewer.MergeViewerSide side)
Get a non-null side of the the given
IMergeViewerItem , preferring but not limited to the given
side. |
Object[] |
getChildren(Object object,
IMergeViewerItemProviderConfiguration configuration)
Determine the children of the given
object |
protected List<Object> |
getChildrenFromContentProvider(Object object,
AdapterFactory adapterFactory)
Adapts to
ITreeItemMergeViewerContentProvider or ITreeItemContentProvider and calls
getChildren. |
protected Object |
getDiffValue(Diff diff)
Determines the value of the given diff.
|
protected Object |
getFirstValue(Iterable<Diff> diffs)
Determines the first non-null value of the given diffs.
|
Object |
getParent(Object object,
IMergeViewerItemProviderConfiguration configuration)
Determine the parent of the given
object . |
protected Object |
getSideValue(IMergeViewerItem mergeViewerItem,
IMergeViewer.MergeViewerSide side) |
protected Iterable<? extends Diff> |
getVisibleContainmentDiffs(EObject object,
IMergeViewerItemProviderConfiguration configuration)
Determines all differences regarding the given
object which are related to a containment
reference change and are visible in the viewer. |
boolean |
hasChildren(Object object,
IMergeViewerItemProviderConfiguration configuration)
Indicates whether the given
object has children. |
protected com.google.common.base.Predicate<Diff> |
visibleContainmentDiffPredicate(IMergeViewerItemProviderConfiguration configuration)
Predicate for checking if the given
diff is visible and itself (or any of its 'refining' diffs)
is a containment reference change. |
protected com.google.common.base.Predicate<Diff> |
visibleInMergeViewerPredicate(com.google.common.base.Predicate<? super EObject> predicate,
IDifferenceGroupProvider groupProvider)
Predicate for checking if the given
diff is visible in the merge viewer. |
protected boolean |
yieldsInsertionPoint(IMergeViewerItem parent,
Iterable<? extends Diff> diffs,
IMergeViewerItemProviderConfiguration configuration)
Indicates whether for the given diffs at least one
IMergeViewerItem insertion point should be
created. |
protected boolean |
yieldsMergeViewerItem(Comparison comparison,
Diff diff,
Collection<?> values)
Indicates whether for the given values at least one
IMergeViewerItem should be created. |
public boolean canHandle(Object object)
object
.canHandle
in interface IOptionalProvider
object
- the Object
.true
if the provider wants to handle the given object
, false
otherwise.public Object getParent(Object object, IMergeViewerItemProviderConfiguration configuration)
object
.getParent
in interface IMergeViewerItemContentProvider
object
- the Object
for which the parent is to be determined.configuration
- the IMergeViewerItemProviderConfiguration
.null
if there is none.public boolean hasChildren(Object object, IMergeViewerItemProviderConfiguration configuration)
object
has children.hasChildren
in interface IMergeViewerItemContentProvider
object
- the Object
for which it is indicated whether it has children.configuration
- the IMergeViewerItemProviderConfiguration
.true
if the given object has children, false
otherwise.public Object[] getChildren(Object object, IMergeViewerItemProviderConfiguration configuration)
object
getChildren
in interface IMergeViewerItemContentProvider
object
- the Object
for which the children are to be determined.configuration
- the IMergeViewerItemProviderConfiguration
.protected List<? extends Diff> collectAndFilterDifferences(Iterable<Object> objects, IMergeViewerItemProviderConfiguration configuration)
visibleContainmentDiffPredicate(IMergeViewerItemProviderConfiguration)
.objects
- the objects.configuration
- the IMergeViewerItemProviderConfiguration
.protected List<IMergeViewerItem> createInsertionPoints(IMergeViewerItem parent, List<IMergeViewerItem> values, List<? extends Diff> differences, IMergeViewerItemProviderConfiguration configuration)
values
.parent
- the IMergeViewerItem
parent.values
- the list of IMergeViewerItem
children for which insertion points are to be created.differences
- the list of relevant differences.configuration
- the IMergeViewerItemProviderConfiguration
.values
containing the created insertion points.protected List<IMergeViewerItem> createInsertionPoints(IMergeViewerItem parent, List<Object> sideContent, List<Object> oppositeContent, List<Object> ancestorContent, List<? extends IMergeViewerItem> values, List<? extends Diff> differences, IMergeViewerItemProviderConfiguration configuration)
values
based on the children of each side.parent
- the IMergeViewerItem
parent.sideContent
- the object for 'this' side.oppositeContent
- the object for the 'other' side.ancestorContent
- the objects for the 'origin' side-values
- the IMergeViewerItem
s for which the insertion points are to be created.differences
- the list of relevant differences.configuration
- the IMergeViewerItemProviderConfiguration
.values
containing the created insertion points.protected Object getDiffValue(Diff diff)
diff
- the Diff
to check.null
will be returned.protected Object getFirstValue(Iterable<Diff> diffs)
diffs
- the Diff
s to check.null
otherwise.protected List<Object> getChildrenFromContentProvider(Object object, AdapterFactory adapterFactory)
ITreeItemMergeViewerContentProvider
or ITreeItemContentProvider
and calls
getChildren. Also unwraps FeatureMap.Entry
.object
- The object for which the children are to be determined.object
.protected boolean yieldsInsertionPoint(IMergeViewerItem parent, Iterable<? extends Diff> diffs, IMergeViewerItemProviderConfiguration configuration)
IMergeViewerItem
insertion point should be
created.comparison
- the Comparison
.diffs
- the Diff
s.configuration
- the IMergeViewerItemProviderConfiguration
.true
if at least one IMergeViewerItem
should be created, false
otherwise.protected boolean yieldsMergeViewerItem(Comparison comparison, Diff diff, Collection<?> values)
IMergeViewerItem
should be created.comparison
- the Comparison
.diff
- the Diff
.values
- the values.true
if at least one IMergeViewerItem
should be created, false
otherwise.protected Iterable<? extends Diff> getVisibleContainmentDiffs(EObject object, IMergeViewerItemProviderConfiguration configuration)
object
which are related to a containment
reference change and are visible in the viewer.object
- the EObject
.configuration
- the IMergeViewerItemProviderConfiguration
.object
related to containment differences.protected Object getBestSideValue(IMergeViewerItem mergeViewerItem, IMergeViewer.MergeViewerSide side)
IMergeViewerItem
, preferring but not limited to the given
side.mergeViewerItem
- the IMergeViewerItem
.side
- IMergeViewer.MergeViewerSide
protected Object getSideValue(IMergeViewerItem mergeViewerItem, IMergeViewer.MergeViewerSide side)
mergeViewerItem
- org.eclipse.emf.compare.rcp.ui.mergeviewer.item.ide.ui.internal.contentmergeviewer.IMergeViewerItem#getSideValue(org.eclipse.emf.compare.rcp.ui.mergeviewer.ide.ui.internal.contentmergeviewer.IMergeViewer.MergeViewerSide)
protected IMergeViewerItem createBasicContainer(ResourceAttachmentChange diff, IMergeViewerItem mergeViewerItem, AdapterFactory adapterFactory)
ResourceAttachmentChange
.diff
- the given ResourceAttachmentChange
.protected com.google.common.base.Predicate<Diff> visibleContainmentDiffPredicate(IMergeViewerItemProviderConfiguration configuration)
diff
is visible and itself (or any of its 'refining' diffs)
is a containment reference change.configuration
- the IMergeViewerItemProviderConfiguration
.Predicate
.protected com.google.common.base.Predicate<Diff> visibleInMergeViewerPredicate(com.google.common.base.Predicate<? super EObject> predicate, IDifferenceGroupProvider groupProvider)
diff
is visible in the merge viewer.predicate
- the filtering Predicate
.groupProvider
- the active IDifferenceGroupProvider
.Predicate
.protected List<IMergeViewerItem> createMergeViewerItemsFrom(Collection<?> values, IMergeViewerItem parent, IMergeViewerItemProviderConfiguration configuration)
values
.values
- the object for which IMergeViewerItem
s shall be created.parent
- the IMergeViewerItem
parent of the children to createconfiguration
- the IMergeViewerItemProviderConfiguration
.protected IMergeViewerItem createMergeViewerItemFrom(EObject eObject, IMergeViewerItem parent, IMergeViewerItemProviderConfiguration configuration)
eObject
- the given eObject.parent
- the IMergeViewerItem
parent of the child to create.configuration
- the IMergeViewerItemProviderConfiguration
.protected IMergeViewerItem createMergeViewerItem(Comparison comparison, Diff diff, Object left, Object right, Object ancestor, IMergeViewer.MergeViewerSide side, AdapterFactory adapterFactory)
IMergeViewerItem
from the given data.comparison
- the Comparison
.diff
- the Diff
. May be null.left
- the left object. May be null. (One of left, right, ancestor should be non-null).right
- the right object. May be null. (One of left, right, ancestor should be non-null).ancestor
- the ancestor object. May be null. (One of left, right, ancestor should be non-null).side
- the IMergeViewer.MergeViewerSide
.adapterFactory
- the AdapterFactory
.IMergeViewerItem
.protected IMergeViewerItem createMergeViewerItem(Comparison comparison, Diff diff, Match match, IMergeViewer.MergeViewerSide side, AdapterFactory adapterFactory)
IMergeViewerItem
from the given data.comparison
- the Comparison
.diff
- the Diff
. May be null.match
- the Match
.side
- the IMergeViewer.MergeViewerSide
.adapterFactory
- the AdapterFactory
.IMergeViewerItem
.
Copyright (c) 2006, 2015 Obeo and others. All rights reserved.