| 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))); |
| } |
| } |
| } |