[509748] Introduce SizeChange for changes of a diagram node's size
Bug: 509748
Change-Id: I805125e1108fc470d76f459c6af95af7a417faab
Signed-off-by: Philip Langer <planger@eclipsesource.com>
diff --git a/plugins/org.eclipse.emf.compare.diagram.edit/icons/full/obj16/SizeChange.gif b/plugins/org.eclipse.emf.compare.diagram.edit/icons/full/obj16/SizeChange.gif
new file mode 100644
index 0000000..f8041d2
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.edit/icons/full/obj16/SizeChange.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.diagram.edit/plugin.properties b/plugins/org.eclipse.emf.compare.diagram.edit/plugin.properties
index bc2b4cd..624cfdb 100644
--- a/plugins/org.eclipse.emf.compare.diagram.edit/plugin.properties
+++ b/plugins/org.eclipse.emf.compare.diagram.edit/plugin.properties
@@ -39,3 +39,4 @@
_UI_CoordinatesChange_type = Coordinates Change
_UI_DiagramChange_type = Diagram Change
+_UI_SizeChange_type = Size Change
diff --git a/plugins/org.eclipse.emf.compare.diagram.edit/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/provider/ExtensionsItemProviderAdapterFactory.java b/plugins/org.eclipse.emf.compare.diagram.edit/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/provider/ExtensionsItemProviderAdapterFactory.java
index a328c74..35b692b 100644
--- a/plugins/org.eclipse.emf.compare.diagram.edit/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/provider/ExtensionsItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.emf.compare.diagram.edit/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/provider/ExtensionsItemProviderAdapterFactory.java
@@ -135,6 +135,29 @@
}
/**
+ * This keeps track of the one adapter used for all {@link org.eclipse.emf.compare.diagram.internal.extensions.SizeChange} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SizeChangeItemProvider sizeChangeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.emf.compare.diagram.internal.extensions.SizeChange}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSizeChangeAdapter() {
+ if (sizeChangeItemProvider == null) {
+ sizeChangeItemProvider = new SizeChangeItemProvider(this);
+ }
+
+ return sizeChangeItemProvider;
+ }
+
+ /**
* This creates an adapter for a {@link org.eclipse.emf.compare.diagram.internal.extensions.EdgeChange}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.compare.diagram.edit/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/provider/SizeChangeItemProvider.java b/plugins/org.eclipse.emf.compare.diagram.edit/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/provider/SizeChangeItemProvider.java
new file mode 100644
index 0000000..f2d9d90
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.edit/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/provider/SizeChangeItemProvider.java
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2013 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.diagram.internal.extensions.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.compare.DifferenceKind;
+
+import org.eclipse.emf.compare.diagram.internal.extensions.SizeChange;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.compare.diagram.internal.extensions.SizeChange} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SizeChangeItemProvider extends NodeChangeItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SizeChangeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns SizeChange.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/SizeChange"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ DifferenceKind labelValue = ((SizeChange)object).getKind();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_SizeChange_type") :
+ getString("_UI_SizeChange_type") + " " + label;
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.edit/src/org/eclipse/emf/compare/diagram/internal/extensions/provider/spec/ExtensionsItemProviderAdapterFactorySpec.java b/plugins/org.eclipse.emf.compare.diagram.edit/src/org/eclipse/emf/compare/diagram/internal/extensions/provider/spec/ExtensionsItemProviderAdapterFactorySpec.java
index c73c6e0..90e36c8 100644
--- a/plugins/org.eclipse.emf.compare.diagram.edit/src/org/eclipse/emf/compare/diagram/internal/extensions/provider/spec/ExtensionsItemProviderAdapterFactorySpec.java
+++ b/plugins/org.eclipse.emf.compare.diagram.edit/src/org/eclipse/emf/compare/diagram/internal/extensions/provider/spec/ExtensionsItemProviderAdapterFactorySpec.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2015 Obeo.
+ * Copyright (c) 2013, 2016 Obeo and others.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* Obeo - initial API and implementation
+ * Philip Langer - add SizeChangeItemProviderSpec
*******************************************************************************/
package org.eclipse.emf.compare.diagram.internal.extensions.provider.spec;
@@ -39,6 +40,9 @@
/** Item provider used for the coordinates change. */
CoordinatesChangeItemProviderSpec fCoordinatesChangeItemProvider;
+ /** Item provider used for the size change. */
+ SizeChangeItemProviderSpec fSizeChangeItemProvider;
+
/** Item provider used for the diagram change. */
DiagramChangeItemProviderSpec fDiagramChangeItemProvider;
@@ -124,6 +128,20 @@
/**
* {@inheritDoc}
*
+ * @see org.eclipse.emf.compare.diagram.internal.extensions.provider.ExtensionsItemProviderAdapterFactory#createSizeChangeAdapter()
+ */
+ @Override
+ public Adapter createSizeChangeAdapter() {
+ if (fSizeChangeItemProvider == null) {
+ fSizeChangeItemProvider = new SizeChangeItemProviderSpec(
+ (ItemProviderAdapter)super.createSizeChangeAdapter());
+ }
+ return fSizeChangeItemProvider;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
* @see org.eclipse.emf.compare.diagram.internal.extensions.provider.ExtensionsItemProviderAdapterFactory#createDiagramChangeAdapter()
*/
@Override
diff --git a/plugins/org.eclipse.emf.compare.diagram.edit/src/org/eclipse/emf/compare/diagram/internal/extensions/provider/spec/SizeChangeItemProviderSpec.java b/plugins/org.eclipse.emf.compare.diagram.edit/src/org/eclipse/emf/compare/diagram/internal/extensions/provider/spec/SizeChangeItemProviderSpec.java
new file mode 100644
index 0000000..da96ebc
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram.edit/src/org/eclipse/emf/compare/diagram/internal/extensions/provider/spec/SizeChangeItemProviderSpec.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2016 EclipseSource Services GmbH.
+ * 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:
+ * Philip Langer - initial API and implementation
+ */
+package org.eclipse.emf.compare.diagram.internal.extensions.provider.spec;
+
+import org.eclipse.emf.compare.diagram.internal.extensions.DiagramDiff;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * Item provider for size changes.
+ *
+ * @author Philip Langer <planger@eclipsesource.com>
+ */
+public class SizeChangeItemProviderSpec extends ForwardingDiagramDiffItemProvider {
+
+ /**
+ * Constructor.
+ *
+ * @param delegate
+ * The origin item provider adapter.
+ */
+ public SizeChangeItemProviderSpec(ItemProviderAdapter delegate) {
+ super(delegate);
+ }
+
+ @Override
+ protected String getReferenceText(DiagramDiff diagramDiff) {
+ return "size"; //$NON-NLS-1$
+ }
+
+}
diff --git a/plugins/org.eclipse.emf.compare.diagram.ide.ui/src/org/eclipse/emf/compare/diagram/ide/ui/internal/contentmergeviewer/diagram/DiagramContentMergeViewer.java b/plugins/org.eclipse.emf.compare.diagram.ide.ui/src/org/eclipse/emf/compare/diagram/ide/ui/internal/contentmergeviewer/diagram/DiagramContentMergeViewer.java
index b16b74b..8f799ff 100644
--- a/plugins/org.eclipse.emf.compare.diagram.ide.ui/src/org/eclipse/emf/compare/diagram/ide/ui/internal/contentmergeviewer/diagram/DiagramContentMergeViewer.java
+++ b/plugins/org.eclipse.emf.compare.diagram.ide.ui/src/org/eclipse/emf/compare/diagram/ide/ui/internal/contentmergeviewer/diagram/DiagramContentMergeViewer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013, 2015 Obeo.
+ * Copyright (c) 2013, 2016 Obeo and others.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* Obeo - initial API and implementation
+ * Philip Langer - adaptation for refactoring regarding SizeChange
*******************************************************************************/
package org.eclipse.emf.compare.diagram.ide.ui.internal.contentmergeviewer.diagram;
@@ -57,7 +58,6 @@
import org.eclipse.emf.compare.diagram.internal.extensions.DiagramDiff;
import org.eclipse.emf.compare.diagram.internal.extensions.Hide;
import org.eclipse.emf.compare.diagram.internal.extensions.Show;
-import org.eclipse.emf.compare.diagram.internal.factories.extensions.CoordinatesChangeFactory;
import org.eclipse.emf.compare.ide.ui.internal.configuration.EMFCompareConfiguration;
import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.EMFCompareContentMergeViewer;
import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.tree.TreeContentMergeViewerContentProvider;
@@ -1258,13 +1258,13 @@
// Look for a related change coordinates on the extremity of the edge reference.
Collection<Diff> diffs = Collections2.filter(
getCompareConfiguration().getComparison().getDifferences(referenceView),
- CoordinatesChangeFactory.isCoordinatesChangeExtension());
+ instanceOf(CoordinatesChange.class));
if (diffs.isEmpty()) {
// Look for a related change coordinates on the matching extremity (other side) of the edge
// reference.
diffs = Collections2.filter(
getCompareConfiguration().getComparison().getDifferences(extremity),
- CoordinatesChangeFactory.isCoordinatesChangeExtension());
+ instanceOf(CoordinatesChange.class));
}
return !diffs.isEmpty();
}
diff --git a/plugins/org.eclipse.emf.compare.diagram/model/diagramCompare.ecore b/plugins/org.eclipse.emf.compare.diagram/model/diagramCompare.ecore
index 654befd..c484343 100644
--- a/plugins/org.eclipse.emf.compare.diagram/model/diagramCompare.ecore
+++ b/plugins/org.eclipse.emf.compare.diagram/model/diagramCompare.ecore
@@ -6,6 +6,7 @@
<eClassifiers xsi:type="ecore:EClass" name="Hide" eSuperTypes="#//DiagramDiff"/>
<eClassifiers xsi:type="ecore:EClass" name="NodeChange" eSuperTypes="#//DiagramDiff"/>
<eClassifiers xsi:type="ecore:EClass" name="CoordinatesChange" eSuperTypes="#//NodeChange"/>
+ <eClassifiers xsi:type="ecore:EClass" name="SizeChange" eSuperTypes="#//NodeChange"/>
<eClassifiers xsi:type="ecore:EClass" name="EdgeChange" eSuperTypes="#//DiagramDiff"/>
<eClassifiers xsi:type="ecore:EClass" name="DiagramDiff" abstract="true" eSuperTypes="../../org.eclipse.emf.compare/model/compare.ecore#//Diff">
<eStructuralFeatures xsi:type="ecore:EReference" name="semanticDiff" eType="ecore:EClass ../../org.eclipse.emf.compare/model/compare.ecore#//Diff"/>
diff --git a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/ExtensionsFactory.java b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/ExtensionsFactory.java
index 61578b7..44dfd3e 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/ExtensionsFactory.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/ExtensionsFactory.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2013 Obeo.
+ * Copyright (c) 2013, 2016 Obeo and others.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* Obeo - initial API and implementation
+ * Philip Langer - add SizeChange
*/
package org.eclipse.emf.compare.diagram.internal.extensions;
@@ -66,6 +67,15 @@
CoordinatesChange createCoordinatesChange();
/**
+ * Returns a new object of class '<em>Size Change</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Size Change</em>'.
+ * @generated
+ */
+ SizeChange createSizeChange();
+
+ /**
* Returns a new object of class '<em>Edge Change</em>'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/ExtensionsPackage.java b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/ExtensionsPackage.java
index b6f034b..ef9b918 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/ExtensionsPackage.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/ExtensionsPackage.java
@@ -72,7 +72,7 @@
* @see org.eclipse.emf.compare.diagram.internal.extensions.impl.ExtensionsPackageImpl#getDiagramDiff()
* @generated
*/
- int DIAGRAM_DIFF = 5;
+ int DIAGRAM_DIFF = 6;
/**
* The feature id for the '<em><b>Match</b></em>' container reference.
@@ -835,6 +835,160 @@
int COORDINATES_CHANGE_FEATURE_COUNT = NODE_CHANGE_FEATURE_COUNT + 0;
/**
+ * The meta object id for the '{@link org.eclipse.emf.compare.diagram.internal.extensions.impl.SizeChangeImpl <em>Size Change</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.compare.diagram.internal.extensions.impl.SizeChangeImpl
+ * @see org.eclipse.emf.compare.diagram.internal.extensions.impl.ExtensionsPackageImpl#getSizeChange()
+ * @generated
+ */
+ int SIZE_CHANGE = 4;
+
+ /**
+ * The feature id for the '<em><b>Match</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__MATCH = NODE_CHANGE__MATCH;
+
+ /**
+ * The feature id for the '<em><b>Requires</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__REQUIRES = NODE_CHANGE__REQUIRES;
+
+ /**
+ * The feature id for the '<em><b>Required By</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__REQUIRED_BY = NODE_CHANGE__REQUIRED_BY;
+
+ /**
+ * The feature id for the '<em><b>Implies</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__IMPLIES = NODE_CHANGE__IMPLIES;
+
+ /**
+ * The feature id for the '<em><b>Implied By</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__IMPLIED_BY = NODE_CHANGE__IMPLIED_BY;
+
+ /**
+ * The feature id for the '<em><b>Refines</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__REFINES = NODE_CHANGE__REFINES;
+
+ /**
+ * The feature id for the '<em><b>Refined By</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__REFINED_BY = NODE_CHANGE__REFINED_BY;
+
+ /**
+ * The feature id for the '<em><b>Prime Refining</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__PRIME_REFINING = NODE_CHANGE__PRIME_REFINING;
+
+ /**
+ * The feature id for the '<em><b>Kind</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__KIND = NODE_CHANGE__KIND;
+
+ /**
+ * The feature id for the '<em><b>Source</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__SOURCE = NODE_CHANGE__SOURCE;
+
+ /**
+ * The feature id for the '<em><b>State</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__STATE = NODE_CHANGE__STATE;
+
+ /**
+ * The feature id for the '<em><b>Equivalence</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__EQUIVALENCE = NODE_CHANGE__EQUIVALENCE;
+
+ /**
+ * The feature id for the '<em><b>Conflict</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__CONFLICT = NODE_CHANGE__CONFLICT;
+
+ /**
+ * The feature id for the '<em><b>Semantic Diff</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__SEMANTIC_DIFF = NODE_CHANGE__SEMANTIC_DIFF;
+
+ /**
+ * The feature id for the '<em><b>View</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE__VIEW = NODE_CHANGE__VIEW;
+
+ /**
+ * The number of structural features of the '<em>Size Change</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIZE_CHANGE_FEATURE_COUNT = NODE_CHANGE_FEATURE_COUNT + 0;
+
+ /**
* The meta object id for the '{@link org.eclipse.emf.compare.diagram.internal.extensions.impl.EdgeChangeImpl <em>Edge Change</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -842,7 +996,7 @@
* @see org.eclipse.emf.compare.diagram.internal.extensions.impl.ExtensionsPackageImpl#getEdgeChange()
* @generated
*/
- int EDGE_CHANGE = 4;
+ int EDGE_CHANGE = 5;
/**
* The feature id for the '<em><b>Match</b></em>' container reference.
@@ -997,7 +1151,7 @@
* @see org.eclipse.emf.compare.diagram.internal.extensions.impl.ExtensionsPackageImpl#getDiagramChange()
* @generated
*/
- int DIAGRAM_CHANGE = 6;
+ int DIAGRAM_CHANGE = 7;
/**
* The feature id for the '<em><b>Match</b></em>' container reference.
@@ -1185,6 +1339,16 @@
EClass getCoordinatesChange();
/**
+ * Returns the meta object for class '{@link org.eclipse.emf.compare.diagram.internal.extensions.SizeChange <em>Size Change</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Size Change</em>'.
+ * @see org.eclipse.emf.compare.diagram.internal.extensions.SizeChange
+ * @generated
+ */
+ EClass getSizeChange();
+
+ /**
* Returns the meta object for class '{@link org.eclipse.emf.compare.diagram.internal.extensions.EdgeChange <em>Edge Change</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1299,6 +1463,16 @@
EClass COORDINATES_CHANGE = eINSTANCE.getCoordinatesChange();
/**
+ * The meta object literal for the '{@link org.eclipse.emf.compare.diagram.internal.extensions.impl.SizeChangeImpl <em>Size Change</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.compare.diagram.internal.extensions.impl.SizeChangeImpl
+ * @see org.eclipse.emf.compare.diagram.internal.extensions.impl.ExtensionsPackageImpl#getSizeChange()
+ * @generated
+ */
+ EClass SIZE_CHANGE = eINSTANCE.getSizeChange();
+
+ /**
* The meta object literal for the '{@link org.eclipse.emf.compare.diagram.internal.extensions.impl.EdgeChangeImpl <em>Edge Change</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/SizeChange.java b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/SizeChange.java
new file mode 100644
index 0000000..5461553
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/SizeChange.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2013 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.diagram.internal.extensions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Size Change</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.compare.diagram.internal.extensions.ExtensionsPackage#getSizeChange()
+ * @model
+ * @generated
+ */
+public interface SizeChange extends NodeChange {
+} // SizeChange
diff --git a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/ExtensionsFactoryImpl.java b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/ExtensionsFactoryImpl.java
index 9e12199..31596d3 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/ExtensionsFactoryImpl.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/ExtensionsFactoryImpl.java
@@ -35,7 +35,7 @@
*/
public static ExtensionsFactory init() {
try {
- ExtensionsFactory theExtensionsFactory = (ExtensionsFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/emf/compare/diagram/2.0");
+ ExtensionsFactory theExtensionsFactory = (ExtensionsFactory)EPackage.Registry.INSTANCE.getEFactory(ExtensionsPackage.eNS_URI);
if (theExtensionsFactory != null) {
return theExtensionsFactory;
}
@@ -68,6 +68,7 @@
case ExtensionsPackage.HIDE: return createHide();
case ExtensionsPackage.NODE_CHANGE: return createNodeChange();
case ExtensionsPackage.COORDINATES_CHANGE: return createCoordinatesChange();
+ case ExtensionsPackage.SIZE_CHANGE: return createSizeChange();
case ExtensionsPackage.EDGE_CHANGE: return createEdgeChange();
case ExtensionsPackage.DIAGRAM_CHANGE: return createDiagramChange();
default:
@@ -120,6 +121,16 @@
* <!-- end-user-doc -->
* @generated
*/
+ public SizeChange createSizeChange() {
+ SizeChangeImpl sizeChange = new SizeChangeImpl();
+ return sizeChange;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EdgeChange createEdgeChange() {
EdgeChangeImpl edgeChange = new EdgeChangeImpl();
return edgeChange;
diff --git a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/ExtensionsPackageImpl.java b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/ExtensionsPackageImpl.java
index c690f43..666db8a 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/ExtensionsPackageImpl.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/ExtensionsPackageImpl.java
@@ -22,6 +22,7 @@
import org.eclipse.emf.compare.diagram.internal.extensions.NodeChange;
import org.eclipse.emf.compare.diagram.internal.extensions.Show;
+import org.eclipse.emf.compare.diagram.internal.extensions.SizeChange;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
@@ -69,6 +70,13 @@
* <!-- end-user-doc -->
* @generated
*/
+ private EClass sizeChangeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
private EClass edgeChangeEClass = null;
/**
@@ -190,6 +198,15 @@
* <!-- end-user-doc -->
* @generated
*/
+ public EClass getSizeChange() {
+ return sizeChangeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getEdgeChange() {
return edgeChangeEClass;
}
@@ -266,6 +283,8 @@
coordinatesChangeEClass = createEClass(COORDINATES_CHANGE);
+ sizeChangeEClass = createEClass(SIZE_CHANGE);
+
edgeChangeEClass = createEClass(EDGE_CHANGE);
diagramDiffEClass = createEClass(DIAGRAM_DIFF);
@@ -311,6 +330,7 @@
hideEClass.getESuperTypes().add(this.getDiagramDiff());
nodeChangeEClass.getESuperTypes().add(this.getDiagramDiff());
coordinatesChangeEClass.getESuperTypes().add(this.getNodeChange());
+ sizeChangeEClass.getESuperTypes().add(this.getNodeChange());
edgeChangeEClass.getESuperTypes().add(this.getDiagramDiff());
diagramDiffEClass.getESuperTypes().add(theComparePackage.getDiff());
diagramChangeEClass.getESuperTypes().add(this.getDiagramDiff());
@@ -324,6 +344,8 @@
initEClass(coordinatesChangeEClass, CoordinatesChange.class, "CoordinatesChange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(sizeChangeEClass, SizeChange.class, "SizeChange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
initEClass(edgeChangeEClass, EdgeChange.class, "EdgeChange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(diagramDiffEClass, DiagramDiff.class, "DiagramDiff", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
diff --git a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/SizeChangeImpl.java b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/SizeChangeImpl.java
new file mode 100644
index 0000000..e650457
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/impl/SizeChangeImpl.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2013 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.diagram.internal.extensions.impl;
+
+import org.eclipse.emf.compare.diagram.internal.extensions.ExtensionsPackage;
+import org.eclipse.emf.compare.diagram.internal.extensions.SizeChange;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Size Change</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SizeChangeImpl extends NodeChangeImpl implements SizeChange {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SizeChangeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExtensionsPackage.Literals.SIZE_CHANGE;
+ }
+
+} //SizeChangeImpl
diff --git a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/util/ExtensionsAdapterFactory.java b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/util/ExtensionsAdapterFactory.java
index 7abd4ac..8bc9236 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/util/ExtensionsAdapterFactory.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/util/ExtensionsAdapterFactory.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2013 Obeo.
+ * Copyright (c) 2013, 2016 Obeo and others.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* Obeo - initial API and implementation
+ * Philip Langer - add SizeChange
*/
package org.eclipse.emf.compare.diagram.internal.extensions.util;
@@ -94,6 +95,10 @@
return createCoordinatesChangeAdapter();
}
@Override
+ public Adapter caseSizeChange(SizeChange object) {
+ return createSizeChangeAdapter();
+ }
+ @Override
public Adapter caseEdgeChange(EdgeChange object) {
return createEdgeChangeAdapter();
}
@@ -186,6 +191,20 @@
}
/**
+ * Creates a new adapter for an object of class '{@link org.eclipse.emf.compare.diagram.internal.extensions.SizeChange <em>Size Change</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.emf.compare.diagram.internal.extensions.SizeChange
+ * @generated
+ */
+ public Adapter createSizeChangeAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for an object of class '{@link org.eclipse.emf.compare.diagram.internal.extensions.EdgeChange <em>Edge Change</em>}'.
* <!-- begin-user-doc -->
* This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/util/ExtensionsSwitch.java b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/util/ExtensionsSwitch.java
index 4bc7a72..2017bb1 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/util/ExtensionsSwitch.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src-gen/org/eclipse/emf/compare/diagram/internal/extensions/util/ExtensionsSwitch.java
@@ -57,7 +57,7 @@
* Checks whether this is a switch for the given package.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @parameter ePackage the package in question.
+ * @param ePackage the package in question.
* @return whether this is a switch for the given package.
* @generated
*/
@@ -109,6 +109,15 @@
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case ExtensionsPackage.SIZE_CHANGE: {
+ SizeChange sizeChange = (SizeChange)theEObject;
+ T result = caseSizeChange(sizeChange);
+ if (result == null) result = caseNodeChange(sizeChange);
+ if (result == null) result = caseDiagramDiff(sizeChange);
+ if (result == null) result = caseDiff(sizeChange);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
case ExtensionsPackage.EDGE_CHANGE: {
EdgeChange edgeChange = (EdgeChange)theEObject;
T result = caseEdgeChange(edgeChange);
@@ -197,6 +206,21 @@
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>Size Change</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Size Change</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSizeChange(SizeChange object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>Edge Change</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;
diff --git a/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/DiagramExtensionFactoryRegistry.java b/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/DiagramExtensionFactoryRegistry.java
index e93f0ca..6f59e8e 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/DiagramExtensionFactoryRegistry.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/DiagramExtensionFactoryRegistry.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013 Obeo.
+ * Copyright (c) 2013, 2016 Obeo and others.
* 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
@@ -7,6 +7,7 @@
*
* Contributors:
* Obeo - initial API and implementation
+ * Philip Langer - add SizeChange
*******************************************************************************/
package org.eclipse.emf.compare.diagram.internal.factories;
@@ -24,6 +25,7 @@
import org.eclipse.emf.compare.diagram.internal.factories.extensions.HideFactory;
import org.eclipse.emf.compare.diagram.internal.factories.extensions.NodeChangeFactory;
import org.eclipse.emf.compare.diagram.internal.factories.extensions.ShowFactory;
+import org.eclipse.emf.compare.diagram.internal.factories.extensions.SizeChangeFactory;
import org.eclipse.emf.compare.internal.postprocessor.factories.IChangeFactory;
/**
@@ -56,6 +58,7 @@
factories.add(new ShowFactory());
factories.add(new NodeChangeFactory());
factories.add(new CoordinatesChangeFactory(configuration));
+ factories.add(new SizeChangeFactory());
factories.add(new EdgeChangeFactory());
factories.add(new DiagramChangeFactory());
diff --git a/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/CoordinatesChangeFactory.java b/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/CoordinatesChangeFactory.java
index b44ca26..1e1d994 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/CoordinatesChangeFactory.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/CoordinatesChangeFactory.java
@@ -11,13 +11,11 @@
*******************************************************************************/
package org.eclipse.emf.compare.diagram.internal.factories.extensions;
-import static com.google.common.base.Predicates.and;
-import static com.google.common.base.Predicates.instanceOf;
+import static com.google.common.collect.Collections2.filter;
+import static org.eclipse.emf.compare.DifferenceKind.CHANGE;
import static org.eclipse.emf.compare.utils.EMFComparePredicates.fromSide;
-import static org.eclipse.emf.compare.utils.EMFComparePredicates.ofKind;
import com.google.common.base.Predicate;
-import com.google.common.collect.Collections2;
import com.google.common.collect.Iterators;
import java.util.ArrayList;
@@ -89,8 +87,8 @@
@Override
public void setRefiningChanges(Diff extension, DifferenceKind extensionKind, Diff refiningDiff) {
if (extensionKind == DifferenceKind.CHANGE) {
- extension.getRefinedBy().addAll(Collections2.filter(getAllDifferencesForChange(refiningDiff),
- fromSide(extension.getSource())));
+ extension.getRefinedBy().addAll(
+ filter(getAllDifferencesForChange(refiningDiff), fromSide(extension.getSource())));
}
}
@@ -102,7 +100,7 @@
@Override
protected Collection<Diff> getAllDifferencesForChange(final Diff input) {
final Collection<Diff> diffs = super.getAllDifferencesForChange(input);
- return Collections2.filter(diffs, new Predicate<Diff>() {
+ return filter(diffs, new Predicate<Diff>() {
public boolean apply(Diff diff) {
return diff instanceof AttributeChange && isCoordinatesChange((AttributeChange)diff)
&& fromSide(input.getSource()).apply(diff);
@@ -111,23 +109,13 @@
}
/**
- * It returns the predicate to check that the given difference is a macroscopic coordinates change.
- *
- * @return The predicate.
- */
- public static Predicate<? super Diff> isCoordinatesChangeExtension() {
- return and(instanceOf(CoordinatesChange.class), ofKind(DifferenceKind.CHANGE));
- }
-
- /**
* {@inheritDoc}
*
* @see org.eclipse.emf.compare.internal.postprocessor.factories.AbstractChangeFactory#isRelatedToAnExtensionMove(org.eclipse.emf.compare.AttributeChange)
*/
@Override
protected boolean isRelatedToAnExtensionChange(AttributeChange input) {
- return isCoordinatesChange(input)
- && Collections2.filter(input.getRefines(), isCoordinatesChangeExtension()).isEmpty()
+ return isCoordinatesChange(input) && filter(input.getRefines(), isExtensionKind(CHANGE)).isEmpty()
&& isOverThreshold(input) && !isLeadedByMoveNode(input);
}
diff --git a/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/NodeChangeFactory.java b/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/NodeChangeFactory.java
index ffe98a1..6f16bbf 100644
--- a/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/NodeChangeFactory.java
+++ b/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/NodeChangeFactory.java
@@ -256,4 +256,16 @@
&& ReferenceUtil.safeEGet(input.getValue(), NotationPackage.Literals.VIEW__ELEMENT) != null;
}
+ /**
+ * It returns the predicate to check that the given difference is an instance of this
+ * {@link #getExtensionKind()} and of the specified <code>diffKind</code>.
+ *
+ * @param diffKind
+ * The difference kind.
+ * @return The predicate.
+ */
+ public Predicate<? super Diff> isExtensionKind(DifferenceKind diffKind) {
+ return and(instanceOf(getExtensionKind()), ofKind(diffKind));
+ }
+
}
diff --git a/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/SizeChangeFactory.java b/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/SizeChangeFactory.java
new file mode 100644
index 0000000..d4a2f21
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.diagram/src/org/eclipse/emf/compare/diagram/internal/factories/extensions/SizeChangeFactory.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2016 EclipseSource Services GmbH and others.
+ * 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:
+ * Philip Langer - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.diagram.internal.factories.extensions;
+
+import static com.google.common.collect.Collections2.filter;
+import static org.eclipse.emf.compare.DifferenceKind.CHANGE;
+import static org.eclipse.emf.compare.utils.EMFComparePredicates.fromSide;
+
+import com.google.common.base.Predicate;
+
+import java.util.Collection;
+
+import org.eclipse.emf.compare.AttributeChange;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.DifferenceKind;
+import org.eclipse.emf.compare.diagram.internal.extensions.DiagramDiff;
+import org.eclipse.emf.compare.diagram.internal.extensions.ExtensionsFactory;
+import org.eclipse.emf.compare.diagram.internal.extensions.SizeChange;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+
+/**
+ * Factory of size changes.
+ *
+ * @author Philip Langer <planger@eclipsesource.com>
+ */
+public class SizeChangeFactory extends NodeChangeFactory {
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.internal.postprocessor.factories.AbstractChangeFactory#getExtensionKind()
+ */
+ @Override
+ public Class<? extends Diff> getExtensionKind() {
+ return SizeChange.class;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.internal.postprocessor.factories.AbstractChangeFactory#createExtension()
+ */
+ @Override
+ public DiagramDiff createExtension() {
+ return ExtensionsFactory.eINSTANCE.createSizeChange();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.diagram.internal.factories.extensions.NodeChangeFactory#setRefiningChanges(org.eclipse.emf.compare.Diff,
+ * org.eclipse.emf.compare.DifferenceKind, org.eclipse.emf.compare.Diff)
+ */
+ @Override
+ public void setRefiningChanges(Diff extension, DifferenceKind extensionKind, Diff refiningDiff) {
+ if (extensionKind == CHANGE) {
+ extension.getRefinedBy().addAll(
+ filter(getAllDifferencesForChange(refiningDiff), fromSide(extension.getSource())));
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.diagram.internal.factories.extensions.NodeChangeFactory#getAllDifferencesForChange(org.eclipse.emf.compare.Diff)
+ */
+ @Override
+ protected Collection<Diff> getAllDifferencesForChange(final Diff input) {
+ final Collection<Diff> diffs = super.getAllDifferencesForChange(input);
+ return filter(diffs, new Predicate<Diff>() {
+ public boolean apply(Diff diff) {
+ return diff instanceof AttributeChange && isSizeChange((AttributeChange)diff)
+ && fromSide(input.getSource()).apply(diff);
+ }
+ });
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.internal.postprocessor.factories.AbstractChangeFactory#isRelatedToAnExtensionMove(org.eclipse.emf.compare.AttributeChange)
+ */
+ @Override
+ protected boolean isRelatedToAnExtensionChange(AttributeChange input) {
+ return isSizeChange(input) && filter(input.getRefines(), isExtensionKind(CHANGE)).isEmpty();
+ }
+
+ /**
+ * It checks that the given attribute change concerns a change of coordinates.
+ *
+ * @param input
+ * The difference.
+ * @return True if it is a change of coordinates.
+ */
+ private static boolean isSizeChange(AttributeChange input) {
+ return input.getAttribute() == NotationPackage.Literals.SIZE__HEIGHT
+ || input.getAttribute() == NotationPackage.Literals.SIZE__WIDTH;
+ }
+
+}