package org.eclipse.uml2.diagram.common.editpolicies;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.uml2.diagram.common.conventions.AssociationEndConvention;
import org.eclipse.uml2.diagram.common.draw2d.AssociationLinkFigureBase;
import org.eclipse.uml2.uml.Association;
import org.eclipse.uml2.uml.Property;
import org.eclipse.uml2.uml.UMLPackage;
public class AssociationEndDecorationEditPolicy extends AbstractVisualEffectEditPolicy {
@Override
protected boolean shouldHandleNotificationEvent(Notification event) {
return UMLPackage.eINSTANCE.getProperty().isInstance(event.getNotifier());
}
@Override
protected void refreshVisualEffect() {
ConnectionNodeEditPart editPart = (ConnectionNodeEditPart) getHostImpl();
refreshDecorations((AssociationLinkFigureBase) editPart.getConnectionFigure(), (IPreferenceStore) editPart.getDiagramPreferencesHint().getPreferenceStore());
}
@Override
protected void installVisualEffect() {
}
private void refreshDecorations(AssociationLinkFigureBase linkFigure, IPreferenceStore store) {
Association association = (Association) resolveSemanticElement();
if (association == null || !association.isBinary()) {
return;
}
Property sourceEnd = AssociationEndConvention.getSourceEnd(association);
Property targetEnd = AssociationEndConvention.getTargetEnd(association);
linkFigure.getSourceDecorationImpl().update(association, sourceEnd, targetEnd, store);
linkFigure.getTargetDecorationImpl().update(association, targetEnd, sourceEnd, store);
}
}