blob: 1441ac91c1587ce91b05700b91ba06c652ccf3ec [file] [log] [blame]
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.commands.ICommandProxy;
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.Classifier;
import org.eclipse.uml2.uml.UMLPackage;
public class ClassNameVisualEffectEditPolicy extends AbstractVisualEffectEditPolicy {
@Override
protected boolean shouldHandleNotificationEvent(Notification event) {
return UMLPackage.eINSTANCE.getClassifier_IsAbstract() == event.getFeature();
}
@Override
protected void refreshVisualEffect() {
EObject semanticHost = getSemanticHost();
if (false == semanticHost instanceof Classifier) {
return;
}
Classifier classifier = (Classifier) semanticHost;
IGraphicalEditPart editPart = getHostImpl();
View view = editPart.getNotationView();
FontStyle fontStyle = (FontStyle) view.getStyle(NotationPackage.eINSTANCE.getFontStyle());
if (fontStyle != null && fontStyle.isItalic() != classifier.isAbstract()) {
SetRequest request = new SetRequest(editPart.getEditingDomain(), fontStyle, NotationPackage.eINSTANCE.getFontStyle_Italic(), classifier.isAbstract());
executeCommand(new ICommandProxy(new SetValueCommand(request)));
}
}
@Override
protected void installVisualEffect() {
ensureHasStyle(NotationPackage.eINSTANCE.getFontStyle());
ensureHasBoldType();
}
private void ensureHasBoldType() {
IGraphicalEditPart editPart = getHostImpl();
View view = editPart.getNotationView();
FontStyle fontStyle = (FontStyle) view.getStyle(NotationPackage.eINSTANCE.getFontStyle());
if (false == fontStyle.isBold()){
SetRequest request = new SetRequest(editPart.getEditingDomain(), fontStyle, NotationPackage.eINSTANCE.getFontStyle_Bold(), true);
executeCommand(new ICommandProxy(new SetValueCommand(request)));
}
}
}