/**
   * {@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.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;
  }