package org.eclipse.uml2.diagram.clazz.edit.policies;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand;
import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
import org.eclipse.gmf.runtime.notation.FontStyle;
import org.eclipse.gmf.runtime.notation.NotationPackage;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.uml2.diagram.common.editpolicies.AbstractVisualEffectEditPolicy;
import org.eclipse.uml2.uml.Property;
import org.eclipse.uml2.uml.UMLPackage;
public class StaticPropertyVisualEffectEditPolicy extends AbstractVisualEffectEditPolicy {
@Override
protected void installVisualEffect() {
ensureHasStyle(NotationPackage.eINSTANCE.getFontStyle());
}
@Override
protected void refreshVisualEffect() {
EObject semanticHost = getSemanticHost();
if (false == semanticHost instanceof Property) {
return;
}
Property property = (Property) getSemanticHost();
IGraphicalEditPart editPart = getHostImpl();
View view = editPart.getNotationView();
FontStyle fontStyle = (FontStyle) view.getStyle(NotationPackage.eINSTANCE.getFontStyle());
if (fontStyle != null && fontStyle.isUnderline() != property.isStatic()) {
SetRequest request = new SetRequest(editPart.getEditingDomain(), fontStyle, NotationPackage.eINSTANCE.getFontStyle_Underline(), property.isStatic());
executeICommand(new SetValueCommand(request));
}
}
@Override
protected boolean shouldHandleNotificationEvent(Notification event) {
return UMLPackage.eINSTANCE.getFeature_IsStatic() == event.getFeature();
}
}