/** * {@inheritDoc} * * @see org.eclipse.emf.compare.provider.ReferenceChangeItemProvider#getText(java.lang.Object) */ @Override public String getText(Object object) { final ReferenceChange refChange = (ReferenceChange) object; final String valueText = getValueText(refChange); final String referenceText = getReferenceText(refChange); String remotely = ""; // $NON-NLS-1$ if (refChange.getSource() == DifferenceSource.RIGHT) { remotely = "remotely "; // $NON-NLS-1$ } String ret = ""; // $NON-NLS-1$ switch (refChange.getKind()) { case ADD: ret = valueText + " has been " + remotely + "added to " + referenceText; //$NON-NLS-1$ //$NON-NLS-2$ break; case DELETE: ret = valueText + " has been " + remotely + "deleted from " + referenceText; //$NON-NLS-1$ //$NON-NLS-2$ break; case CHANGE: String changeText = changeText(refChange, refChange.getReference()); ret = referenceText + " " + valueText + " has been " + remotely + changeText; //$NON-NLS-1$ //$NON-NLS-2$ break; case MOVE: ret = valueText + " has been " + remotely + "moved in " + referenceText; //$NON-NLS-1$ //$NON-NLS-2$ break; default: throw new IllegalStateException( "Unsupported " + DifferenceKind.class.getSimpleName() // $NON-NLS-1$ + " value: " + refChange.getKind()); // $NON-NLS-1$ } return ret; }
/** * {@inheritDoc} * * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getChildren(java.lang.Object) */ @Override public Collection<?> getChildren(Object object) { Collection<?> superChildren = super.getChildren(object); List<? super Object> ret = newArrayList(superChildren); ReferenceChange referenceChange = (ReferenceChange) object; EReference reference = referenceChange.getReference(); if (reference.isContainment()) { Match matchOfValue = referenceChange.getMatch().getComparison().getMatch(referenceChange.getValue()); if (matchOfValue != null) { Collection<?> children = getChildren(matchOfValue); children.remove(referenceChange); ret.addAll(children); } } return ImmutableList.copyOf(filter(ret, not(MatchItemProviderSpec.REFINED_DIFF))); }
/** * {@inheritDoc} * * @see org.eclipse.emf.compare.provider.ReferenceChangeItemProvider#getText(java.lang.Object) */ @Override public String getText(Object object) { final ReferenceChange refChange = (ReferenceChange) object; EObject value = refChange.getValue(); final String valueName = CompareItemProviderAdapterFactorySpec.getText(adapterFactory, value); String change = ""; if (refChange.getSource() == DifferenceSource.RIGHT) { change = "remotely "; } if (refChange.getKind() == DifferenceKind.ADD) { change += "added to"; } else if (refChange.getKind() == DifferenceKind.DELETE) { change += "deleted from"; } else if (refChange.getKind() == DifferenceKind.CHANGE) { change += "changed from"; } else { change += "moved from"; } final String objectName; if (refChange.getMatch().getLeft() instanceof ENamedElement) { objectName = ((ENamedElement) refChange.getMatch().getLeft()).getName(); } else if (refChange.getMatch().getRight() instanceof ENamedElement) { objectName = ((ENamedElement) refChange.getMatch().getRight()).getName(); } else if (refChange.getMatch().getOrigin() instanceof ENamedElement) { objectName = ((ENamedElement) refChange.getMatch().getOrigin()).getName(); } else { objectName = ""; } return "value " + valueName + " has been " + change + " reference " + refChange.getReference().getName() + " of object " + objectName; }
protected String getReferenceText(final ReferenceChange refChange) { return refChange.getReference().getName(); }
/** * Tests the behavior of reference <code>reference</code>'s accessors. * * @generated */ @Test public void testReference() { EStructuralFeature feature = org.eclipse.emf.compare.ComparePackage.eINSTANCE.getReferenceChange_Reference(); ReferenceChange referenceChange = CompareFactory.eINSTANCE.createReferenceChange(); referenceChange.eAdapters().add(new MockEAdapter()); org.eclipse.emf.ecore.EReference referenceValue = org.eclipse.emf.ecore.EcoreFactory.eINSTANCE.createEReference(); assertFalse(referenceChange.eIsSet(feature)); assertNull(referenceChange.getReference()); referenceChange.setReference(referenceValue); assertTrue(notified); notified = false; assertSame(referenceValue, referenceChange.getReference()); assertSame(referenceChange.getReference(), referenceChange.eGet(feature)); assertSame(referenceChange.getReference(), referenceChange.eGet(feature, false)); assertTrue(referenceChange.eIsSet(feature)); referenceChange.eUnset(feature); assertTrue(notified); notified = false; assertNull(referenceChange.getReference()); assertSame(referenceChange.getReference(), referenceChange.eGet(feature)); assertSame(referenceChange.getReference(), referenceChange.eGet(feature, false)); assertFalse(referenceChange.eIsSet(feature)); referenceChange.setReference(referenceValue); assertTrue(notified); notified = false; assertSame(referenceValue, referenceChange.getReference()); assertSame(referenceChange.getReference(), referenceChange.eGet(feature)); assertSame(referenceChange.getReference(), referenceChange.eGet(feature, false)); assertTrue(referenceChange.eIsSet(feature)); referenceChange.eSet(feature, referenceValue); assertTrue(notified); notified = false; assertSame(referenceValue, referenceChange.getReference()); assertSame(referenceChange.getReference(), referenceChange.eGet(feature)); assertSame(referenceChange.getReference(), referenceChange.eGet(feature, false)); assertTrue(referenceChange.eIsSet(feature)); referenceChange.setReference(null); assertTrue(notified); notified = false; assertNull(referenceChange.getReference()); assertSame(feature.getDefaultValue(), referenceChange.getReference()); assertSame(referenceChange.getReference(), referenceChange.eGet(feature)); assertSame(referenceChange.getReference(), referenceChange.eGet(feature, false)); assertFalse(referenceChange.eIsSet(feature)); }