Class TreeMergeViewerItemContentProvider
java.lang.Object
org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.tree.provider.TreeMergeViewerItemContentProvider
- All Implemented Interfaces:
IMergeViewerItemContentProvider
,IOptionalProvider
public class TreeMergeViewerItemContentProvider
extends Object
implements IMergeViewerItemContentProvider
ContentProvider for
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 Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Indicates whether this provider wants to handle the givenobject
.collectAndFilterDifferences
(Iterable<Object> objects, IMergeViewerItemProviderConfiguration configuration) Determines the differences related to the given objects and filters them according to thevisibleContainmentDiffPredicate(IMergeViewerItemProviderConfiguration)
.protected IMergeViewerItem
createBasicContainer
(ResourceAttachmentChange diff, IMergeViewerItem mergeViewerItem, AdapterFactory adapterFactory) Create an IMergeViewerItem for the parent of the givenResourceAttachmentChange
.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 givenvalues
based on the children of each side.protected List<IMergeViewerItem>
createInsertionPoints
(IMergeViewerItem parent, List<IMergeViewerItem> values, List<? extends Diff> differences, IMergeViewerItemProviderConfiguration configuration) Creates and inserts the insertion points for the givenvalues
.protected IMergeViewerItem
createMergeViewerItem
(Comparison comparison, Diff diff, Object left, Object right, Object ancestor, IMergeViewer.MergeViewerSide side, AdapterFactory adapterFactory) Creates theIMergeViewerItem
from the given data.protected IMergeViewerItem
createMergeViewerItem
(Comparison comparison, Diff diff, Match match, IMergeViewer.MergeViewerSide side, AdapterFactory adapterFactory) Creates theIMergeViewerItem
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 givenvalues
.protected Object
getBestSideValue
(IMergeViewerItem mergeViewerItem, IMergeViewer.MergeViewerSide side) Get a non-null side of the the givenIMergeViewerItem
, preferring but not limited to the given side.Object[]
getChildren
(Object object, IMergeViewerItemProviderConfiguration configuration) Determine the children of the givenobject
getChildrenFromContentProvider
(Object object, AdapterFactory adapterFactory) Adapts toITreeItemMergeViewerContentProvider
orITreeItemContentProvider
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.getParent
(Object object, IMergeViewerItemProviderConfiguration configuration) Determine the parent of the givenobject
.protected Object
getSideValue
(IMergeViewerItem mergeViewerItem, IMergeViewer.MergeViewerSide side) getVisibleContainmentDiffs
(EObject object, IMergeViewerItemProviderConfiguration configuration) Determines all differences regarding the givenobject
which are related to a containment reference change and are visible in the viewer.boolean
hasChildren
(Object object, IMergeViewerItemProviderConfiguration configuration) Indicates whether the givenobject
has children.protected com.google.common.base.Predicate<Diff>
Predicate for checking if the givendiff
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 givendiff
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 oneIMergeViewerItem
insertion point should be created.protected boolean
yieldsMergeViewerItem
(Comparison comparison, Diff diff, Collection<?> values) Indicates whether for the given values at least oneIMergeViewerItem
should be created.
-
Constructor Details
-
TreeMergeViewerItemContentProvider
public TreeMergeViewerItemContentProvider()
-
-
Method Details
-
canHandle
Indicates whether this provider wants to handle the givenobject
.- Specified by:
canHandle
in interfaceIOptionalProvider
- Parameters:
object
- theObject
.- Returns:
true
if the provider wants to handle the givenobject
,false
otherwise.
-
getParent
Determine the parent of the givenobject
.- Specified by:
getParent
in interfaceIMergeViewerItemContentProvider
- Parameters:
object
- theObject
for which the parent is to be determined.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
- the determined parent object,
null
if there is none.
-
hasChildren
Indicates whether the givenobject
has children.- Specified by:
hasChildren
in interfaceIMergeViewerItemContentProvider
- Parameters:
object
- theObject
for which it is indicated whether it has children.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
true
if the given object has children,false
otherwise.
-
getChildren
Determine the children of the givenobject
- Specified by:
getChildren
in interfaceIMergeViewerItemContentProvider
- Parameters:
object
- theObject
for which the children are to be determined.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
- an array with the determined children, an empty array if there are none.
-
collectAndFilterDifferences
protected List<? extends Diff> collectAndFilterDifferences(Iterable<Object> objects, IMergeViewerItemProviderConfiguration configuration) Determines the differences related to the given objects and filters them according to thevisibleContainmentDiffPredicate(IMergeViewerItemProviderConfiguration)
.- Parameters:
objects
- the objects.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
- the determined differences.
-
createInsertionPoints
protected List<IMergeViewerItem> createInsertionPoints(IMergeViewerItem parent, List<IMergeViewerItem> values, List<? extends Diff> differences, IMergeViewerItemProviderConfiguration configuration) Creates and inserts the insertion points for the givenvalues
.- Parameters:
parent
- theIMergeViewerItem
parent.values
- the list ofIMergeViewerItem
children for which insertion points are to be created.differences
- the list of relevant differences.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
- the list of
values
containing the created insertion points.
-
createInsertionPoints
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 givenvalues
based on the children of each side.- Parameters:
parent
- theIMergeViewerItem
parent.sideContent
- the object for 'this' side.oppositeContent
- the object for the 'other' side.ancestorContent
- the objects for the 'origin' side-values
- theIMergeViewerItem
s for which the insertion points are to be created.differences
- the list of relevant differences.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
- the list of
values
containing the created insertion points.
-
getDiffValue
Determines the value of the given diff. If the diff has no "value", its prime refining or refined-by counterparts are also checked.- Parameters:
diff
- theDiff
to check.- Returns:
- the value of the given diff. If no value exists
null
will be returned.
-
getFirstValue
Determines the first non-null value of the given diffs.- Parameters:
diffs
- theDiff
s to check.- Returns:
- the first non-null value if it exists,
null
otherwise.
-
getChildrenFromContentProvider
Adapts toITreeItemMergeViewerContentProvider
orITreeItemContentProvider
and calls getChildren. Also unwrapsFeatureMap.Entry
.- Parameters:
object
- The object for which the children are to be determined.- Returns:
- A list of all children of the given
object
.
-
yieldsInsertionPoint
protected boolean yieldsInsertionPoint(IMergeViewerItem parent, Iterable<? extends Diff> diffs, IMergeViewerItemProviderConfiguration configuration) Indicates whether for the given diffs at least oneIMergeViewerItem
insertion point should be created.- Parameters:
comparison
- theComparison
.diffs
- theDiff
s.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
true
if at least oneIMergeViewerItem
should be created,false
otherwise.
-
yieldsMergeViewerItem
Indicates whether for the given values at least oneIMergeViewerItem
should be created.- Parameters:
comparison
- theComparison
.diff
- theDiff
.values
- the values.- Returns:
true
if at least oneIMergeViewerItem
should be created,false
otherwise.
-
getVisibleContainmentDiffs
protected Iterable<? extends Diff> getVisibleContainmentDiffs(EObject object, IMergeViewerItemProviderConfiguration configuration) Determines all differences regarding the givenobject
which are related to a containment reference change and are visible in the viewer.- Parameters:
object
- theEObject
.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
- all visible diffs regarding
object
related to containment differences.
-
getBestSideValue
protected Object getBestSideValue(IMergeViewerItem mergeViewerItem, IMergeViewer.MergeViewerSide side) Get a non-null side of the the givenIMergeViewerItem
, preferring but not limited to the given side.- Parameters:
mergeViewerItem
- theIMergeViewerItem
.side
-IMergeViewer.MergeViewerSide
- Returns:
- the side object. May be null if all sides are null.
-
getSideValue
- Parameters:
mergeViewerItem
-- See Also:
-
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)
-
createBasicContainer
protected IMergeViewerItem createBasicContainer(ResourceAttachmentChange diff, IMergeViewerItem mergeViewerItem, AdapterFactory adapterFactory) Create an IMergeViewerItem for the parent of the givenResourceAttachmentChange
.- Parameters:
diff
- the givenResourceAttachmentChange
.- Returns:
- an IMergeViewerItem.
-
visibleContainmentDiffPredicate
protected com.google.common.base.Predicate<Diff> visibleContainmentDiffPredicate(IMergeViewerItemProviderConfiguration configuration) Predicate for checking if the givendiff
is visible and itself (or any of its 'refining' diffs) is a containment reference change.- Parameters:
configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
- the
Predicate
.
-
visibleInMergeViewerPredicate
protected com.google.common.base.Predicate<Diff> visibleInMergeViewerPredicate(com.google.common.base.Predicate<? super EObject> predicate, IDifferenceGroupProvider groupProvider) Predicate for checking if the givendiff
is visible in the merge viewer.- Parameters:
predicate
- the filteringPredicate
.groupProvider
- the activeIDifferenceGroupProvider
.- Returns:
- the
Predicate
.
-
createMergeViewerItemsFrom
protected List<IMergeViewerItem> createMergeViewerItemsFrom(Collection<?> values, IMergeViewerItem parent, IMergeViewerItemProviderConfiguration configuration) Creates the Merge Viewer Items for the givenvalues
.- Parameters:
values
- the object for whichIMergeViewerItem
s shall be created.parent
- theIMergeViewerItem
parent of the children to createconfiguration
- theIMergeViewerItemProviderConfiguration
.- Returns:
-
createMergeViewerItemFrom
protected IMergeViewerItem createMergeViewerItemFrom(EObject eObject, IMergeViewerItem parent, IMergeViewerItemProviderConfiguration configuration) Creates an IMergeViewerItem from an EObject.- Parameters:
eObject
- the given eObject.parent
- theIMergeViewerItem
parent of the child to create.configuration
- theIMergeViewerItemProviderConfiguration
.- Returns:
- an IMergeViewerItem.
-
createMergeViewerItem
protected IMergeViewerItem createMergeViewerItem(Comparison comparison, Diff diff, Object left, Object right, Object ancestor, IMergeViewer.MergeViewerSide side, AdapterFactory adapterFactory) Creates theIMergeViewerItem
from the given data.- Parameters:
comparison
- theComparison
.diff
- theDiff
. 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
- theIMergeViewer.MergeViewerSide
.adapterFactory
- theAdapterFactory
.- Returns:
- the created
IMergeViewerItem
.
-
createMergeViewerItem
protected IMergeViewerItem createMergeViewerItem(Comparison comparison, Diff diff, Match match, IMergeViewer.MergeViewerSide side, AdapterFactory adapterFactory) Creates theIMergeViewerItem
from the given data.- Parameters:
comparison
- theComparison
.diff
- theDiff
. May be null.match
- theMatch
.side
- theIMergeViewer.MergeViewerSide
.adapterFactory
- theAdapterFactory
.- Returns:
- the created
IMergeViewerItem
.
-