Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 52849 Details for
Bug 80318
[Plan Item] Class Diagrams
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Class diagram in the form of a patch
patch_80318_classD_2.txt (text/plain), 1.38 MB, created by
Michael Golubev
on 2006-10-27 11:45:31 EDT
(
hide
)
Description:
Class diagram in the form of a patch
Filename:
MIME Type:
Creator:
Michael Golubev
Created:
2006-10-27 11:45:31 EDT
Size:
1.38 MB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.uml2.diagram.clazz >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.InstanceSpecificationItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class InstanceSpecificationEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3013; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public InstanceSpecificationEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InstanceSpecificationItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.InstanceSpecification_3013; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Operation2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLTextNonResizableEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLTextNonResizableEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLTextNonResizableEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLTextNonResizableEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,208 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ColorConstants; >+import org.eclipse.draw2d.Figure; >+import org.eclipse.draw2d.Graphics; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.RectangleFigure; >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.LayerConstants; >+import org.eclipse.gef.handles.MoveHandle; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+/** >+ * @generated >+ */ >+public class UMLTextNonResizableEditPolicy extends NonResizableEditPolicyEx { >+ >+ /** >+ * @generated >+ */ >+ private IFigure selectionFeedbackFigure; >+ >+ /** >+ * @generated >+ */ >+ private IFigure focusFeedbackFigure; >+ >+ /** >+ * @generated >+ */ >+ protected void showPrimarySelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(true); >+ ((WrapLabel) getHostFigure()).setFocus(true); >+ } else { >+ showSelection(); >+ showFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void showSelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(true); >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ hideSelection(); >+ addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure()); >+ refreshSelectionFeedback(); >+ hideFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void hideSelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(false); >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ if (selectionFeedbackFigure != null) { >+ removeFeedback(selectionFeedbackFigure); >+ selectionFeedbackFigure = null; >+ } >+ hideFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void showFocus() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setFocus(true); >+ } else { >+ hideFocus(); >+ addFeedback(focusFeedbackFigure = createFocusFeedbackFigure()); >+ refreshFocusFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void hideFocus() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ if (focusFeedbackFigure != null) { >+ removeFeedback(focusFeedbackFigure); >+ focusFeedbackFigure = null; >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getFeedbackLayer() { >+ return getLayer(LayerConstants.SCALED_FEEDBACK_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Rectangle getFeedbackBounds() { >+ Rectangle bounds; >+ if (getHostFigure() instanceof Label) { >+ bounds = ((Label) getHostFigure()).getTextBounds(); >+ bounds.intersect(getHostFigure().getBounds()); >+ } else { >+ bounds = getHostFigure().getBounds().getCopy(); >+ } >+ getHostFigure().getParent().translateToAbsolute(bounds); >+ getFeedbackLayer().translateToRelative(bounds); >+ return bounds; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createSelectionFeedbackFigure() { >+ if (getHostFigure() instanceof Label) { >+ Label feedbackFigure = new Label(); >+ feedbackFigure.setOpaque(true); >+ feedbackFigure.setBackgroundColor(ColorConstants.menuBackgroundSelected); >+ feedbackFigure.setForegroundColor(ColorConstants.menuForegroundSelected); >+ return feedbackFigure; >+ } else { >+ RectangleFigure feedbackFigure = new RectangleFigure(); >+ feedbackFigure.setFill(false); >+ return feedbackFigure; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFocusFeedbackFigure() { >+ return new Figure() { >+ >+ protected void paintFigure(Graphics graphics) { >+ graphics.drawFocus(getBounds().getResized(-1, -1)); >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void updateLabel(Label target) { >+ Label source = (Label) getHostFigure(); >+ target.setText(source.getText()); >+ target.setTextAlignment(source.getTextAlignment()); >+ target.setFont(source.getFont()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshSelectionFeedback() { >+ if (selectionFeedbackFigure != null) { >+ if (selectionFeedbackFigure instanceof Label) { >+ updateLabel((Label) selectionFeedbackFigure); >+ selectionFeedbackFigure.setBounds(getFeedbackBounds()); >+ } else { >+ selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5, 5)); >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFocusFeedback() { >+ if (focusFeedbackFigure != null) { >+ focusFeedbackFigure.setBounds(getFeedbackBounds()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void refreshFeedback() { >+ refreshSelectionFeedback(); >+ refreshFocusFeedback(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createSelectionHandles() { >+ MoveHandle moveHandle = new MoveHandle((GraphicalEditPart) getHost()); >+ moveHandle.setBorder(null); >+ moveHandle.setDragTracker(new DragEditPartsTrackerEx(getHost())); >+ return Collections.singletonList(moveHandle); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassOperationsEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassOperationsEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassOperationsEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassOperationsEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ClassOperationsCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ClassOperationsItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class ClassOperationsEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7002; >+ >+ /** >+ * @generated >+ */ >+ public ClassOperationsEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "operations"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ClassOperationsItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ClassOperationsCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,264 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class ConstraintItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingConstraint_ConstrainedElement4004Command(req) : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/LiteralStringItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/LiteralStringItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/LiteralStringItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/LiteralStringItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class LiteralStringItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,655 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Collection; >+import java.util.Collections; >+import java.util.HashMap; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+import java.util.Map; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand; >+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalConnectionEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewRequest; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.notation.Diagram; >+import org.eclipse.gmf.runtime.notation.Edge; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.association.AssociationEndConvention; >+import org.eclipse.uml2.diagram.clazz.edit.parts.AssociationClass2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.AssociationClassEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.AssociationEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Class2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Class3EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.ConstraintConstrainedElementEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.ConstraintEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.DataType2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.DataTypeEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Dependency2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.DependencyClientEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.DependencyEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.DependencySupplierEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Enumeration2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.EnumerationEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.EnumerationLiteralEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.GeneralizationEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.InstanceSpecification2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.InstanceSpecificationEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.InterfaceRealizationEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.LiteralStringEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Operation2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Operation3EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Operation4EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Operation5EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.OperationEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Package2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Package3EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.PrimitiveType2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.PrimitiveTypeEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property2EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property3EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property4EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property5EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property6EditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.PropertyEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.SlotEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.UsageEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.BehavioredClassifier; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.InterfaceRealization; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.TypedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PackageCanonicalEditPolicy extends CanonicalConnectionEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) modelObject).getNestedPackages().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Package2EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) modelObject).getOwnedTypes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ switch (nodeVID) { >+ case Class2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case AssociationClass2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case DataType2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case PrimitiveType2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case Enumeration2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case InterfaceEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ } >+ } >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) modelObject).getPackagedElements().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ switch (nodeVID) { >+ case ConstraintEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case InstanceSpecification2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case DependencyEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticConnectionsList() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getSourceElement(EObject relationship) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getTargetElement(EObject relationship) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldIncludeConnection(Edge connector, Collection children) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshSemantic() { >+ List createdViews = new LinkedList(); >+ createdViews.addAll(refreshSemanticChildren()); >+ List createdConnectionViews = new LinkedList(); >+ createdConnectionViews.addAll(refreshSemanticConnections()); >+ createdConnectionViews.addAll(refreshConnections()); >+ >+ if (createdViews.size() > 1) { >+ // perform a layout of the container >+ DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host()); >+ executeCommand(new ICommandProxy(layoutCmd)); >+ } >+ >+ createdViews.addAll(createdConnectionViews); >+ makeViewsImmutable(createdViews); >+ } >+ >+ /** >+ * @generated >+ */ >+ private Collection myLinkDescriptors = new LinkedList(); >+ >+ /** >+ * @generated >+ */ >+ private Map myEObject2ViewMap = new HashMap(); >+ >+ /** >+ * @generated >+ */ >+ private Collection refreshConnections() { >+ try { >+ collectAllLinks(getDiagram()); >+ Collection existingLinks = new LinkedList(getDiagram().getEdges()); >+ for (Iterator diagramLinks = existingLinks.iterator(); diagramLinks.hasNext();) { >+ Edge nextDiagramLink = (Edge) diagramLinks.next(); >+ EObject diagramLinkObject = nextDiagramLink.getElement(); >+ EObject diagramLinkSrc = nextDiagramLink.getSource().getElement(); >+ EObject diagramLinkDst = nextDiagramLink.getTarget().getElement(); >+ int diagramLinkVisualID = UMLVisualIDRegistry.getVisualID(nextDiagramLink); >+ for (Iterator modelLinkDescriptors = myLinkDescriptors.iterator(); modelLinkDescriptors.hasNext();) { >+ LinkDescriptor nextLinkDescriptor = (LinkDescriptor) modelLinkDescriptors.next(); >+ if (diagramLinkObject == nextLinkDescriptor.getLinkElement() && diagramLinkSrc == nextLinkDescriptor.getSource() && diagramLinkDst == nextLinkDescriptor.getDestination() >+ && diagramLinkVisualID == nextLinkDescriptor.getVisualID()) { >+ diagramLinks.remove(); >+ modelLinkDescriptors.remove(); >+ } >+ } >+ } >+ deleteViews(existingLinks.iterator()); >+ return createConnections(myLinkDescriptors); >+ } finally { >+ myLinkDescriptors.clear(); >+ myEObject2ViewMap.clear(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void collectAllLinks(View view) { >+ EObject modelElement = view.getElement(); >+ int diagramElementVisualID = UMLVisualIDRegistry.getVisualID(view); >+ switch (diagramElementVisualID) { >+ case Package2EditPart.VISUAL_ID: >+ case Class2EditPart.VISUAL_ID: >+ case AssociationClass2EditPart.VISUAL_ID: >+ case DataType2EditPart.VISUAL_ID: >+ case PrimitiveType2EditPart.VISUAL_ID: >+ case Enumeration2EditPart.VISUAL_ID: >+ case InterfaceEditPart.VISUAL_ID: >+ case ConstraintEditPart.VISUAL_ID: >+ case InstanceSpecification2EditPart.VISUAL_ID: >+ case DependencyEditPart.VISUAL_ID: >+ case Package3EditPart.VISUAL_ID: >+ case ClassEditPart.VISUAL_ID: >+ case DataTypeEditPart.VISUAL_ID: >+ case PrimitiveTypeEditPart.VISUAL_ID: >+ case EnumerationEditPart.VISUAL_ID: >+ case AssociationClassEditPart.VISUAL_ID: >+ case InstanceSpecificationEditPart.VISUAL_ID: >+ case PropertyEditPart.VISUAL_ID: >+ case OperationEditPart.VISUAL_ID: >+ case Class3EditPart.VISUAL_ID: >+ case PortEditPart.VISUAL_ID: >+ case Property2EditPart.VISUAL_ID: >+ case Operation2EditPart.VISUAL_ID: >+ case Property3EditPart.VISUAL_ID: >+ case Operation3EditPart.VISUAL_ID: >+ case Property4EditPart.VISUAL_ID: >+ case Operation4EditPart.VISUAL_ID: >+ case EnumerationLiteralEditPart.VISUAL_ID: >+ case Property5EditPart.VISUAL_ID: >+ case Operation5EditPart.VISUAL_ID: >+ case LiteralStringEditPart.VISUAL_ID: >+ case SlotEditPart.VISUAL_ID: >+ case PackageEditPart.VISUAL_ID: { >+ myEObject2ViewMap.put(modelElement, view); >+ storeLinks(modelElement, getDiagram()); >+ } >+ default: { >+ } >+ for (Iterator children = view.getChildren().iterator(); children.hasNext();) { >+ View childView = (View) children.next(); >+ collectAllLinks(childView); >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private Collection createConnections(Collection linkDescriptors) { >+ if (linkDescriptors.isEmpty()) { >+ return Collections.EMPTY_LIST; >+ } >+ List adapters = new LinkedList(); >+ for (Iterator linkDescriptorsIterator = linkDescriptors.iterator(); linkDescriptorsIterator.hasNext();) { >+ final LinkDescriptor nextLinkDescriptor = (LinkDescriptor) linkDescriptorsIterator.next(); >+ EditPart sourceEditPart = getEditPartFor(nextLinkDescriptor.getSource()); >+ EditPart targetEditPart = getEditPartFor(nextLinkDescriptor.getDestination()); >+ if (sourceEditPart == null || targetEditPart == null) { >+ continue; >+ } >+ CreateConnectionViewRequest.ConnectionViewDescriptor descriptor = new CreateConnectionViewRequest.ConnectionViewDescriptor(nextLinkDescriptor.getSemanticAdapter(), null, ViewUtil.APPEND, >+ false, ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint()); >+ CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(descriptor); >+ ccr.setType(RequestConstants.REQ_CONNECTION_START); >+ ccr.setSourceEditPart(sourceEditPart); >+ sourceEditPart.getCommand(ccr); >+ ccr.setTargetEditPart(targetEditPart); >+ ccr.setType(RequestConstants.REQ_CONNECTION_END); >+ Command cmd = targetEditPart.getCommand(ccr); >+ if (cmd != null && cmd.canExecute()) { >+ executeCommand(cmd); >+ IAdaptable viewAdapter = (IAdaptable) ccr.getNewObject(); >+ if (viewAdapter != null) { >+ adapters.add(viewAdapter); >+ } >+ } >+ } >+ return adapters; >+ } >+ >+ /** >+ * @generated >+ */ >+ private EditPart getEditPartFor(EObject modelElement) { >+ View view = (View) myEObject2ViewMap.get(modelElement); >+ if (view != null) { >+ return (EditPart) getHost().getViewer().getEditPartRegistry().get(view); >+ } >+ return null; >+ } >+ >+ /** >+ *@generated >+ */ >+ private void storeLinks(EObject container, Diagram diagram) { >+ EClass containerMetaclass = container.eClass(); >+ storeFeatureModelFacetLinks(container, containerMetaclass, diagram); >+ storeTypeModelFacetLinks(container, containerMetaclass); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void storeTypeModelFacetLinks(EObject container, EClass containerMetaclass) { >+ storeTypeModelFacetLinks_Generalization_4001(container, containerMetaclass); >+ storeTypeModelFacetLinks_Dependency_4002(container, containerMetaclass); >+ storeTypeModelFacetLinks_Property_4003(container, containerMetaclass); >+ storeTypeModelFacetLinks_Association_4005(container, containerMetaclass); >+ storeTypeModelFacetLinks_InterfaceRealization_4008(container, containerMetaclass); >+ storeTypeModelFacetLinks_Usage_4009(container, containerMetaclass); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void storeTypeModelFacetLinks_Generalization_4001(EObject container, EClass containerMetaclass) { >+ if (UMLPackage.eINSTANCE.getClassifier().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator values = ((Classifier) container).getGeneralizations().iterator(); values.hasNext();) { >+ EObject nextValue = ((EObject) values.next()); >+ int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(nextValue); >+ if (GeneralizationEditPart.VISUAL_ID == linkVID) { >+ Object structuralFeatureResult = ((Generalization) nextValue).getGeneral(); >+ if (structuralFeatureResult instanceof EObject) { >+ EObject dst = (EObject) structuralFeatureResult; >+ EObject src = container; >+ myLinkDescriptors.add(new LinkDescriptor(src, dst, nextValue, linkVID)); >+ } >+ } >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void storeTypeModelFacetLinks_Dependency_4002(EObject container, EClass containerMetaclass) { >+ if (UMLPackage.eINSTANCE.getPackage().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) container).getPackagedElements().iterator(); values.hasNext();) { >+ EObject nextValue = ((EObject) values.next()); >+ int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(nextValue); >+ if (Dependency2EditPart.VISUAL_ID == linkVID) { >+ Object structuralFeatureResult = ((Dependency) nextValue).getSuppliers(); >+ List targets = (List) structuralFeatureResult; >+ structuralFeatureResult = targets.size() == 1 ? targets.get(0) : null; >+ if (structuralFeatureResult instanceof EObject) { >+ EObject dst = (EObject) structuralFeatureResult; >+ structuralFeatureResult = ((Dependency) nextValue).getClients(); >+ List sources = (List) structuralFeatureResult; >+ structuralFeatureResult = sources.size() == 1 ? sources.get(0) : null; >+ if (structuralFeatureResult instanceof EObject) { >+ EObject src = (EObject) structuralFeatureResult; >+ myLinkDescriptors.add(new LinkDescriptor(src, dst, nextValue, linkVID)); >+ } >+ } >+ } >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void storeTypeModelFacetLinks_Property_4003(EObject container, EClass containerMetaclass) { >+ if (UMLPackage.eINSTANCE.getAssociation().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator values = ((Association) container).getOwnedEnds().iterator(); values.hasNext();) { >+ EObject nextValue = ((EObject) values.next()); >+ int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(nextValue); >+ if (Property6EditPart.VISUAL_ID == linkVID) { >+ Object structuralFeatureResult = ((TypedElement) nextValue).getType(); >+ if (structuralFeatureResult instanceof EObject) { >+ EObject dst = (EObject) structuralFeatureResult; >+ EObject src = container; >+ myLinkDescriptors.add(new LinkDescriptor(src, dst, nextValue, linkVID)); >+ } >+ } >+ } >+ } >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private void storeTypeModelFacetLinks_Association_4005(EObject container, EClass containerMetaclass) { >+ if (UMLPackage.eINSTANCE.getPackage().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) container).getPackagedElements().iterator(); values.hasNext();) { >+ EObject nextValue = ((EObject) values.next()); >+ int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(nextValue); >+ if (AssociationEditPart.VISUAL_ID == linkVID) { >+ Association association = (Association) nextValue; >+ if (association.isBinary()) { >+ Property sourceEnd = AssociationEndConvention.getSourceEnd(association); >+ Property targetEnd = AssociationEndConvention.getTargetEnd(association); >+ EObject gmfSource = sourceEnd.getType(); >+ EObject gmfTarget = targetEnd.getType(); >+ myLinkDescriptors.add(new LinkDescriptor(gmfSource, gmfTarget, association, linkVID)); >+ } >+ } >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void storeTypeModelFacetLinks_InterfaceRealization_4008(EObject container, EClass containerMetaclass) { >+ if (UMLPackage.eINSTANCE.getBehavioredClassifier().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator values = ((BehavioredClassifier) container).getInterfaceRealizations().iterator(); values.hasNext();) { >+ EObject nextValue = ((EObject) values.next()); >+ int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(nextValue); >+ if (InterfaceRealizationEditPart.VISUAL_ID == linkVID) { >+ Object structuralFeatureResult = ((InterfaceRealization) nextValue).getContract(); >+ if (structuralFeatureResult instanceof EObject) { >+ EObject dst = (EObject) structuralFeatureResult; >+ structuralFeatureResult = ((InterfaceRealization) nextValue).getImplementingClassifier(); >+ if (structuralFeatureResult instanceof EObject) { >+ EObject src = (EObject) structuralFeatureResult; >+ myLinkDescriptors.add(new LinkDescriptor(src, dst, nextValue, linkVID)); >+ } >+ } >+ } >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void storeTypeModelFacetLinks_Usage_4009(EObject container, EClass containerMetaclass) { >+ if (UMLPackage.eINSTANCE.getPackage().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) container).getPackagedElements().iterator(); values.hasNext();) { >+ EObject nextValue = ((EObject) values.next()); >+ int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(nextValue); >+ if (UsageEditPart.VISUAL_ID == linkVID) { >+ Object structuralFeatureResult = ((Dependency) nextValue).getSuppliers(); >+ List targets = (List) structuralFeatureResult; >+ structuralFeatureResult = targets.size() == 1 ? targets.get(0) : null; >+ if (structuralFeatureResult instanceof EObject) { >+ EObject dst = (EObject) structuralFeatureResult; >+ structuralFeatureResult = ((Dependency) nextValue).getClients(); >+ List sources = (List) structuralFeatureResult; >+ structuralFeatureResult = sources.size() == 1 ? sources.get(0) : null; >+ if (structuralFeatureResult instanceof EObject) { >+ EObject src = (EObject) structuralFeatureResult; >+ myLinkDescriptors.add(new LinkDescriptor(src, dst, nextValue, linkVID)); >+ } >+ } >+ } >+ } >+ } >+ } >+ >+ /** >+ *@generated >+ */ >+ private void storeFeatureModelFacetLinks(EObject container, EClass containerMetaclass, Diagram diagram) { >+ >+ if (UMLPackage.eINSTANCE.getConstraint().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator destinations = ((Constraint) container).getConstrainedElements().iterator(); destinations.hasNext();) { >+ EObject nextDestination = (EObject) destinations.next(); >+ myLinkDescriptors.add(new LinkDescriptor(container, nextDestination, UMLElementTypes.ConstraintConstrainedElement_4004, ConstraintConstrainedElementEditPart.VISUAL_ID)); >+ >+ } >+ } >+ >+ if (UMLPackage.eINSTANCE.getDependency().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator destinations = ((Dependency) container).getSuppliers().iterator(); destinations.hasNext();) { >+ EObject nextDestination = (EObject) destinations.next(); >+ myLinkDescriptors.add(new LinkDescriptor(container, nextDestination, UMLElementTypes.DependencySupplier_4006, DependencySupplierEditPart.VISUAL_ID)); >+ >+ } >+ } >+ if (UMLPackage.eINSTANCE.getDependency().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator destinations = ((Dependency) container).getClients().iterator(); destinations.hasNext();) { >+ EObject nextDestination = (EObject) destinations.next(); >+ myLinkDescriptors.add(new LinkDescriptor(container, nextDestination, UMLElementTypes.DependencyClient_4007, DependencyClientEditPart.VISUAL_ID)); >+ >+ } >+ } >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ private Diagram getDiagram() { >+ return ((View) getHost().getModel()).getDiagram(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private class LinkDescriptor { >+ >+ /** >+ * @generated >+ */ >+ private EObject mySource; >+ >+ /** >+ * @generated >+ */ >+ private EObject myDestination; >+ >+ /** >+ * @generated >+ */ >+ private EObject myLinkElement; >+ >+ /** >+ * @generated >+ */ >+ private int myVisualID; >+ >+ /** >+ * @generated >+ */ >+ private IAdaptable mySemanticAdapter; >+ >+ /** >+ * @generated >+ */ >+ protected LinkDescriptor(EObject source, EObject destination, EObject linkElement, int linkVID) { >+ this(source, destination, linkVID); >+ myLinkElement = linkElement; >+ mySemanticAdapter = new EObjectAdapter(linkElement); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LinkDescriptor(EObject source, EObject destination, IElementType elementType, int linkVID) { >+ this(source, destination, linkVID); >+ myLinkElement = null; >+ final IElementType elementTypeCopy = elementType; >+ mySemanticAdapter = new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return elementTypeCopy; >+ } >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ private LinkDescriptor(EObject source, EObject destination, int linkVID) { >+ mySource = source; >+ myDestination = destination; >+ myVisualID = linkVID; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getSource() { >+ return mySource; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getDestination() { >+ return myDestination; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getLinkElement() { >+ return myLinkElement; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected int getVisualID() { >+ return myVisualID; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IAdaptable getSemanticAdapter() { >+ return mySemanticAdapter; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationSlotsCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationSlotsCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationSlotsCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationSlotsCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.SlotEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.InstanceSpecification; >+ >+/** >+ * @generated >+ */ >+public class InstanceSpecificationSlotsCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((InstanceSpecification) modelObject).getSlots().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (SlotEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Class3ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Class3ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Class3ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Class3ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,466 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Class3ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.InterfaceRealization_4008 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4008Command(req) : null; >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4008Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageOtherCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageOtherCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageOtherCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageOtherCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,51 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.InstanceSpecificationEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class PackageOtherCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) modelObject).getPackagedElements().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (InstanceSpecificationEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,211 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.ArrayList; >+import java.util.Iterator; >+import java.util.List; >+ >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.requests.ChangeBoundsRequest; >+import org.eclipse.gef.requests.GroupRequest; >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * @generated >+ */ >+public class UMLExtNodeLabelHostLayoutEditPolicy extends XYLayoutEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ private LayoutEditPolicy realLayoutEditPolicy; >+ >+ /** >+ * @generated >+ */ >+ public LayoutEditPolicy getRealLayoutEditPolicy() { >+ return realLayoutEditPolicy; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setRealLayoutEditPolicy(LayoutEditPolicy realLayoutEditPolicy) { >+ this.realLayoutEditPolicy = realLayoutEditPolicy; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isExternalLabel(EditPart editPart) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected final List getExternalLabels(GroupRequest request) { >+ List editParts = new ArrayList(); >+ if (request.getEditParts() != null) { >+ for (Iterator it = request.getEditParts().iterator(); it.hasNext();) { >+ EditPart editPart = (EditPart) it.next(); >+ if (isExternalLabel(editPart)) { >+ editParts.add(editPart); >+ } >+ } >+ } >+ return editParts; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Command getCommand(Request request) { >+ if (REQ_MOVE_CHILDREN.equals(request.getType())) { >+ ChangeBoundsRequest cbRequest = (ChangeBoundsRequest) request; >+ List extLabels = getExternalLabels(cbRequest); >+ if (!extLabels.isEmpty()) { >+ List editParts = cbRequest.getEditParts(); >+ Command cmd = null; >+ if (realLayoutEditPolicy != null && editParts.size() > extLabels.size()) { >+ List other = new ArrayList(editParts); >+ other.removeAll(extLabels); >+ cbRequest.setEditParts(other); >+ cmd = realLayoutEditPolicy.getCommand(request); >+ } >+ cbRequest.setEditParts(extLabels); >+ Command extLabelsCmd = getMoveChildrenCommand(request); >+ cbRequest.setEditParts(editParts); >+ return cmd == null ? extLabelsCmd : cmd.chain(extLabelsCmd); >+ } >+ } >+ if (request instanceof GroupRequest) { >+ List extLabels = getExternalLabels((GroupRequest) request); >+ if (!extLabels.isEmpty()) { >+ return null; >+ } >+ } >+ return realLayoutEditPolicy == null ? null : realLayoutEditPolicy.getCommand(request); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Object getConstraintFor(ChangeBoundsRequest request, GraphicalEditPart child) { >+ int dx = ((Integer) ViewUtil.getStructuralFeatureValue((View) child.getModel(), NotationPackage.eINSTANCE.getLocation_X())).intValue(); >+ int dy = ((Integer) ViewUtil.getStructuralFeatureValue((View) child.getModel(), NotationPackage.eINSTANCE.getLocation_Y())).intValue(); >+ Rectangle r = new Rectangle(dx, dy, 0, 0); >+ child.getFigure().translateToAbsolute(r); >+ r.translate(request.getMoveDelta()); >+ child.getFigure().translateToRelative(r); >+ return r; >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean understandsRequest(Request req) { >+ if (realLayoutEditPolicy != null && realLayoutEditPolicy.understandsRequest(req)) { >+ return true; >+ } >+ return super.understandsRequest(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateChild(EditPart child) { >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setHost(EditPart host) { >+ super.setHost(host); >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.setHost(host); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void activate() { >+ super.activate(); >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.activate(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void deactivate() { >+ super.deactivate(); >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.deactivate(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getTargetEditPart(Request request) { >+ if (realLayoutEditPolicy != null) { >+ return realLayoutEditPolicy.getTargetEditPart(request); >+ } else { >+ return super.getTargetEditPart(request); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void showSourceFeedback(Request request) { >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.showSourceFeedback(request); >+ } else { >+ super.showSourceFeedback(request); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void eraseSourceFeedback(Request request) { >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.eraseSourceFeedback(request); >+ } else { >+ super.eraseSourceFeedback(request); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void showTargetFeedback(Request request) { >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.showTargetFeedback(request); >+ } else { >+ super.showTargetFeedback(request); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void eraseTargetFeedback(Request request) { >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.eraseTargetFeedback(request); >+ } else { >+ super.eraseTargetFeedback(request); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassOperationsEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassOperationsEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassOperationsEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassOperationsEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationClassOperationsCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationClassOperationsItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassOperationsEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7025; >+ >+ /** >+ * @generated >+ */ >+ public AssociationClassOperationsEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "operations"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AssociationClassOperationsItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new AssociationClassOperationsCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeOperationsEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeOperationsEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeOperationsEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeOperationsEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PrimitiveTypeOperationsCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PrimitiveTypeOperationsItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeOperationsEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7021; >+ >+ /** >+ * @generated >+ */ >+ public PrimitiveTypeOperationsEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "operations"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PrimitiveTypeOperationsItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PrimitiveTypeOperationsCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackagePackagesEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackagePackagesEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PackagePackagesEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PackagePackagesEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PackagePackagesCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PackagePackagesItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PackagePackagesEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7010; >+ >+ /** >+ * @generated >+ */ >+ public PackagePackagesEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "packages"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PackagePackagesItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PackagePackagesCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/GeneralizationEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/GeneralizationEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/GeneralizationEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/GeneralizationEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,81 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.GeneralizationItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class GeneralizationEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4001; >+ >+ /** >+ * @generated >+ */ >+ public GeneralizationEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new GeneralizationItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new SolidLineWDstClosedArrow(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class SolidLineWDstClosedArrow extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx { >+ >+ /** >+ * @generated >+ */ >+ public SolidLineWDstClosedArrow() { >+ >+ setTargetDecoration(createTargetDecoration()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.PolygonDecoration createTargetDecoration() { >+ org.eclipse.draw2d.PolygonDecoration df = new org.eclipse.draw2d.PolygonDecoration(); >+ // dispatchNext? >+ df.setFill(true); >+ df.setBackgroundColor(org.eclipse.draw2d.ColorConstants.white); >+ org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList(); >+ pl.addPoint(0, 0); >+ pl.addPoint(-2, 2); >+ pl.addPoint(-2, -2); >+ pl.addPoint(0, 0); >+ df.setTemplate(pl); >+ df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3)); >+ >+ return df; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Enumeration2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Enumeration2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Enumeration2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Enumeration2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,455 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Enumeration2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property5EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property5EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Property5EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Property5EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Property5ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Property5EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3023; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Property5EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Property5ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Property_3023; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PrimitiveTypeItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3009; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public PrimitiveTypeEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PrimitiveTypeItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.PrimitiveType_3009; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassClassesEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassClassesEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassClassesEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassClassesEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationClassClassesCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationClassClassesItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassClassesEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7026; >+ >+ /** >+ * @generated >+ */ >+ public AssociationClassClassesEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "classes"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AssociationClassClassesItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new AssociationClassClassesCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Class3EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Class3EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Class3EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Class3EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Class3ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Class3EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3003; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Class3EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Class3ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Class_3003; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property4EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property4EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Property4EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Property4EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Property4ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Property4EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3021; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Property4EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Property4ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Property_3021; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,474 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingProperty4003Command(req) : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.InterfaceRealization_4008 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4008Command(req) : null; >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingProperty4003Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4008Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Dependency2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Dependency2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Dependency2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Dependency2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+ >+/** >+ * @generated >+ */ >+public class Dependency2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/UMLExtNodeLabelEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/UMLExtNodeLabelEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/UMLExtNodeLabelEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/UMLExtNodeLabelEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,85 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.geometry.Dimension; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Handle; >+import org.eclipse.gef.handles.AbstractHandle; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableLabelEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.figures.LabelLocator; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * @generated >+ */ >+public class UMLExtNodeLabelEditPart extends LabelEditPart { >+ >+ /** >+ * @generated >+ */ >+ public UMLExtNodeLabelEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableLabelEditPolicy() { >+ >+ protected void replaceHandleDragEditPartsTracker(Handle handle) { >+ if (handle instanceof AbstractHandle) { >+ ((AbstractHandle) handle).setDragTracker(new DragEditPartsTrackerEx(getHost()) { >+ >+ protected boolean isMove() { >+ return true; >+ } >+ }); >+ } >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void refreshBounds() { >+ IFigure refFigure = ((GraphicalEditPart) getParent()).getFigure(); >+ int dx = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_X())).intValue(); >+ int dy = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_Y())).intValue(); >+ Point offset = new Point(dx, dy); >+ getFigure().getParent().setConstraint(getFigure(), new LabelLocator(refFigure, offset, getKeyPoint()) { >+ >+ public void relocate(IFigure target) { >+ Point location = getReferencePoint().getTranslated(getOffset()); >+ location.translate(-target.getBounds().width / 2, 0); >+ target.setLocation(location); >+ target.setSize(new Dimension(target.getPreferredSize().width, target.getPreferredSize().height)); >+ } >+ >+ protected Point getReferencePoint() { >+ return getLabelLocation(parent); >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ public Point getReferencePoint() { >+ return getLabelLocation(((GraphicalEditPart) getParent()).getFigure()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Point getLabelLocation(IFigure parent) { >+ return parent.getBounds().getBottom(); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PortItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PortItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PortItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PortItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class PortItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLReferenceConnectionEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLReferenceConnectionEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLReferenceConnectionEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLReferenceConnectionEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,150 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.CompoundCommand; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gef.editparts.AbstractConnectionEditPart; >+import org.eclipse.gef.editpolicies.ConnectionEditPolicy; >+import org.eclipse.gef.requests.GroupRequest; >+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; >+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages; >+import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants; >+import org.eclipse.gmf.runtime.diagram.ui.requests.EditCommandRequestWrapper; >+import org.eclipse.gmf.runtime.diagram.ui.requests.GroupRequestViaKeyboard; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.dialogs.IDialogConstants; >+import org.eclipse.jface.dialogs.MessageDialogWithToggle; >+import org.eclipse.jface.preference.IPreferenceStore; >+import org.eclipse.jface.util.Assert; >+import org.eclipse.swt.widgets.Display; >+ >+/** >+ * @generated >+ */ >+public class UMLReferenceConnectionEditPolicy extends ConnectionEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ private static final String DELETE_FROM_DIAGRAM_DLG_TITLE = DiagramUIMessages.PromptingDeleteAction_DeleteFromDiagramDialog_Title; >+ >+ /** >+ * @generated >+ */ >+ private static final String DELETE_FROM_DIAGRAM_DLG_MESSAGE = DiagramUIMessages.PromptingDeleteAction_DeleteFromDiagramDialog_Message; >+ >+ /** >+ * @generated >+ */ >+ private static final String DELETE_FROM_MODEL_DLG_TOGGLE_LABEL = DiagramUIMessages.MessageDialogWithToggle_DoNotPromptAgainToggle_label; >+ >+ /** >+ * @generated >+ */ >+ protected final Command getDeleteCommand(GroupRequest deleteRequest) { >+ boolean isDeleteFromKeyBoard = deleteRequest instanceof GroupRequestViaKeyboard; >+ if (shouldDeleteSemantic()) { >+ return createDeleteSemanticCommand(deleteRequest); >+ } else { >+ boolean proceedToDeleteView = true; >+ if (isDeleteFromKeyBoard) { >+ GroupRequestViaKeyboard groupRequestViaKeyboard = (GroupRequestViaKeyboard) deleteRequest; >+ if (groupRequestViaKeyboard.isShowInformationDialog()) { >+ proceedToDeleteView = showPrompt(); >+ groupRequestViaKeyboard.setShowInformationDialog(false); >+ if (!(proceedToDeleteView)) >+ return UnexecutableCommand.INSTANCE; >+ } >+ } >+ return createDeleteViewCommand(deleteRequest); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteSemantic() { >+ Assert.isTrue(getHost() instanceof AbstractConnectionEditPart); >+ AbstractConnectionEditPart cep = (AbstractConnectionEditPart) getHost(); >+ boolean isCanonical = false; >+ if (cep.getSource() != null) >+ isCanonical = IsCanonical(cep.getSource()); >+ if (cep.getTarget() != null) >+ return isCanonical ? isCanonical : IsCanonical(cep.getTarget()); >+ return isCanonical; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean IsCanonical(EditPart ep) { >+ EditPart parent = ep.getParent(); >+ return parent instanceof GraphicalEditPart ? ((GraphicalEditPart) parent).isCanonical() : false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command createDeleteViewCommand(GroupRequest deleteRequest) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ return new ICommandProxy(new DeleteCommand(editingDomain, (View) getHost().getModel())); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command createDeleteSemanticCommand(GroupRequest deleteRequest) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ EditCommandRequestWrapper semReq = new EditCommandRequestWrapper(new DestroyElementRequest(editingDomain, false), deleteRequest.getExtendedData()); >+ Command semanticCmd = getHost().getCommand(semReq); >+ if (semanticCmd != null && semanticCmd.canExecute()) { >+ CompoundCommand cc = new CompoundCommand(); >+ cc.add(semanticCmd); >+ return cc; >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean showPrompt() { >+ boolean prompt = ((IPreferenceStore) ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint().getPreferenceStore()).getBoolean(IPreferenceConstants.PREF_PROMPT_ON_DEL_FROM_DIAGRAM); >+ if (prompt) >+ if (showMessageDialog()) >+ return true; >+ else >+ return false; >+ return true; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean showMessageDialog() { >+ MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(Display.getCurrent().getActiveShell(), DELETE_FROM_DIAGRAM_DLG_TITLE, DELETE_FROM_DIAGRAM_DLG_MESSAGE, >+ DELETE_FROM_MODEL_DLG_TOGGLE_LABEL, false, (IPreferenceStore) ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint().getPreferenceStore(), >+ IPreferenceConstants.PREF_PROMPT_ON_DEL_FROM_DIAGRAM); >+ if (dialog.getReturnCode() == IDialogConstants.YES_ID) >+ return true; >+ else >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Command getCommand(Request request) { >+ if (request instanceof GroupRequestViaKeyboard) { >+ return getDeleteCommand((GroupRequest) request); >+ } >+ return super.getCommand(request); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeAttributesEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeAttributesEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeAttributesEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeAttributesEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PrimitiveTypeAttributesCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PrimitiveTypeAttributesItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeAttributesEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7020; >+ >+ /** >+ * @generated >+ */ >+ public PrimitiveTypeAttributesEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "attributes"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PrimitiveTypeAttributesItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PrimitiveTypeAttributesCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationSlotsItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationSlotsItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationSlotsItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationSlotsItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,61 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class InstanceSpecificationSlotsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Slot_3017 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getInstanceSpecification_Slot()); >+ } >+ return getMSLWrapper(new CreateSlot_3017Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateSlot_3017Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateSlot_3017Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getInstanceSpecification(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationLiteralEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationLiteralEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationLiteralEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationLiteralEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.EnumerationLiteralItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class EnumerationLiteralEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3016; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public EnumerationLiteralEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new EnumerationLiteralItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.EnumerationLiteral_3016; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,551 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class EnumerationNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5005; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public EnumerationNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Enumeration_2003; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencyClientItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencyClientItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencyClientItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencyClientItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; >+ >+/** >+ * @generated >+ */ >+public class DependencyClientItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) { >+ return getMSLWrapper(new DestroyReferenceCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassClassesItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassClassesItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassClassesItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassClassesItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,72 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class ClassClassesItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Class_3003 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClass_NestedClassifier()); >+ } >+ return getMSLWrapper(new CreateClass_3003Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateClass_3003Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateClass_3003Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClass_(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Class_3003.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation4EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation4EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation4EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation4EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Operation4ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Operation4EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3022; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Operation4EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Operation4ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Operation_3022; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationAttributesEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationAttributesEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationAttributesEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationAttributesEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.EnumerationAttributesCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.EnumerationAttributesItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class EnumerationAttributesEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7014; >+ >+ /** >+ * @generated >+ */ >+ public EnumerationAttributesEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "attributes"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new EnumerationAttributesItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new EnumerationAttributesCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+ >+/** >+ * @generated >+ */ >+public class AssociationItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.EnumerationItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class EnumerationEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3011; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public EnumerationEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new EnumerationItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Enumeration_3011; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PropertyNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PropertyNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PropertyNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PropertyNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,533 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PropertyNameEditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6002; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(PropertyNameEditPart.VISUAL_ID), new Point(0, 40)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public PropertyNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.MIDDLE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Property_4003; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,455 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeOperationsCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeOperationsCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeOperationsCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeOperationsCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Operation4EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.DataType; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeOperationsCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((DataType) modelObject).getOwnedOperations().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Operation4EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeAttributesItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeAttributesItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeAttributesItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeAttributesItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeAttributesItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Property_3021 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getDataType_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreateProperty_3021Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateProperty_3021Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateProperty_3021Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPrimitiveType(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Property_3021.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Operation2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Operation2EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3020; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Operation2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Operation2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Operation_3020; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Package3ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Package3ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Package3ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Package3ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Package3ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,292 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ConstraintItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ConstraintEditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2006; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public ConstraintEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy() { >+ >+ public Command getCommand(Request request) { >+ if (understandsRequest(request)) { >+ if (request instanceof CreateViewAndElementRequest) { >+ CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); >+ IElementType type = (IElementType) adapter.getAdapter(IElementType.class); >+ if (type == UMLElementTypes.LiteralString_3005) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(ConstraintCompartmentEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ } >+ return super.getCommand(request); >+ } >+ return null; >+ } >+ }); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ConstraintItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ ConstrainedToolbarLayoutEditPolicy lep = new ConstrainedToolbarLayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ if (child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE) == null) { >+ if (child instanceof ITextAwareEditPart) { >+ return new UMLTextSelectionEditPolicy(); >+ } >+ } >+ return super.createChildEditPolicy(child); >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ NamedNodeRectangle figure = new NamedNodeRectangle(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public NamedNodeRectangle getPrimaryShape() { >+ return (NamedNodeRectangle) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ConstraintNameEditPart) { >+ ((ConstraintNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureNamedNode_NameLabelFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(40), getMapMode().DPtoLP(40)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(ConstraintNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class NamedNodeRectangle extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public NamedNodeRectangle() { >+ >+ org.eclipse.draw2d.ToolbarLayout myGenLayoutManager = new org.eclipse.draw2d.ToolbarLayout(); >+ myGenLayoutManager.setStretchMinorAxis(true); >+ myGenLayoutManager.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER); >+ myGenLayoutManager.setSpacing(0); >+ myGenLayoutManager.setVertical(true); >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureNamedNode_NameLabelFigure(fig_0); >+ >+ Object layData0 = null; >+ >+ this.add(fig_0, layData0); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fNamedNode_NameLabelFigure; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureNamedNode_NameLabelFigure() { >+ return fNamedNode_NameLabelFigure; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureNamedNode_NameLabelFigure(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fNamedNode_NameLabelFigure = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property3ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property3ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Property3ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Property3ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Property3ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyName2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyName2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyName2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyName2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,539 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class DependencyName2EditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6001; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(DependencyName2EditPart.VISUAL_ID), new Point(0, 40)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DependencyName2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.MIDDLE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Dependency_4002; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassAttributesEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassAttributesEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassAttributesEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassAttributesEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationClassAttributesCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationClassAttributesItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassAttributesEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7024; >+ >+ /** >+ * @generated >+ */ >+ public AssociationClassAttributesEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "attributes"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AssociationClassAttributesItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new AssociationClassAttributesCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,536 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.emf.commands.core.commands.DuplicateEObjectsCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.AssociationClass; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.DataType; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Enumeration; >+import org.eclipse.uml2.uml.InstanceSpecification; >+import org.eclipse.uml2.uml.Interface; >+import org.eclipse.uml2.uml.PrimitiveType; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PackageItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Package_2002 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreatePackage_2002Command(req)); >+ } >+ if (UMLElementTypes.Class_2001 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateClass_2001Command(req)); >+ } >+ if (UMLElementTypes.AssociationClass_2007 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateAssociationClass_2007Command(req)); >+ } >+ if (UMLElementTypes.DataType_2004 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateDataType_2004Command(req)); >+ } >+ if (UMLElementTypes.PrimitiveType_2005 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreatePrimitiveType_2005Command(req)); >+ } >+ if (UMLElementTypes.Enumeration_2003 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateEnumeration_2003Command(req)); >+ } >+ if (UMLElementTypes.Interface_2010 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateInterface_2010Command(req)); >+ } >+ if (UMLElementTypes.Constraint_2006 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateConstraint_2006Command(req)); >+ } >+ if (UMLElementTypes.InstanceSpecification_2008 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateInstanceSpecification_2008Command(req)); >+ } >+ if (UMLElementTypes.Dependency_2009 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateDependency_2009Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePackage_2002Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePackage_2002Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Package newElement = (org.eclipse.uml2.uml.Package) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Package_2002.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateClass_2001Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateClass_2001Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Class_2001.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateAssociationClass_2007Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateAssociationClass_2007Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ AssociationClass newElement = (AssociationClass) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.AssociationClass_2007.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateDataType_2004Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateDataType_2004Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ DataType newElement = (DataType) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.DataType_2004.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePrimitiveType_2005Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePrimitiveType_2005Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ PrimitiveType newElement = (PrimitiveType) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.PrimitiveType_2005.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateEnumeration_2003Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateEnumeration_2003Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Enumeration newElement = (Enumeration) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Enumeration_2003.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateInterface_2010Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateInterface_2010Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Interface newElement = (Interface) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Interface_2010.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateConstraint_2006Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateConstraint_2006Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Constraint newElement = (Constraint) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Constraint_2006.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateInstanceSpecification_2008Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateInstanceSpecification_2008Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ InstanceSpecification newElement = (InstanceSpecification) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.InstanceSpecification_2008.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateDependency_2009Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateDependency_2009Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Dependency_2009.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDuplicateCommand(DuplicateElementsRequest req) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ return getMSLWrapper(new DuplicateAnythingCommand(editingDomain, req)); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class DuplicateAnythingCommand extends DuplicateEObjectsCommand { >+ >+ /** >+ * @generated >+ */ >+ public DuplicateAnythingCommand(TransactionalEditingDomain editingDomain, DuplicateElementsRequest req) { >+ super(editingDomain, req.getLabel(), req.getElementsToBeDuplicated(), req.getAllDuplicatedElementsMap()); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Property2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Property2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Property2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property6ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property6ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Property6ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Property6ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+ >+/** >+ * @generated >+ */ >+public class Property6ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralsItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralsItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralsItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralsItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.EnumerationLiteral; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class EnumerationLiteralsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.EnumerationLiteral_3016 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getEnumeration_OwnedLiteral()); >+ } >+ return getMSLWrapper(new CreateEnumerationLiteral_3016Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateEnumerationLiteral_3016Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateEnumerationLiteral_3016Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getEnumeration(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ EnumerationLiteral newElement = (EnumerationLiteral) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.EnumerationLiteral_3016.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassClassesEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassClassesEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassClassesEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassClassesEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ClassClassesCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ClassClassesItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class ClassClassesEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7003; >+ >+ /** >+ * @generated >+ */ >+ public ClassClassesEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "classes"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ClassClassesItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ClassClassesCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassAttributesCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassAttributesCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassAttributesCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassAttributesCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.PropertyEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.StructuredClassifier; >+ >+/** >+ * @generated >+ */ >+public class ClassAttributesCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (PropertyEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackagePackagesCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackagePackagesCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PackagePackagesCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PackagePackagesCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,51 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Package3EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class PackagePackagesCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) modelObject).getNestedPackages().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Package3EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassAttributesCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassAttributesCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassAttributesCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassAttributesCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property2EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.StructuredClassifier; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassAttributesCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Property2EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,524 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class InterfaceNameEditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5012; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID), new Point(0, 0)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public InterfaceNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Interface_2010; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,144 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Iterator; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.association.AssociationEndConvention; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationItemSemanticEditPolicy; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Property; >+ >+/** >+ * @generated >+ */ >+public class AssociationEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4005; >+ >+ /** >+ * @generated >+ */ >+ public AssociationEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AssociationItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigureGen() { >+ return new AssociationLinkFigure(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected Connection createConnectionFigure() { >+ Connection result = createConnectionFigureGen(); >+ refreshDecorations((AssociationLinkFigure) result); >+ return result; >+ } >+ >+ /** >+ * @NOT-GENERATED >+ */ >+ protected void addSemanticListeners() { >+ super.addSemanticListeners(); >+ Association association = (Association) resolveSemanticElement(); >+ for (Iterator ends = association.getMemberEnds().iterator(); ends.hasNext();) { >+ Property next = (Property) ends.next(); >+ addListenerFilter("SemanticModel", this, next); >+ } >+ } >+ >+ /** >+ * @NOT-GENERATED >+ */ >+ protected void handleNotificationEvent(Notification notification) { >+ super.handleNotificationEvent(notification); >+ if (notification.getNotifier() instanceof Property) { >+ refreshDecorations((AssociationLinkFigure) getConnectionFigure()); >+ } >+ } >+ >+ /** >+ * @NOT-GENERATED >+ */ >+ private void refreshDecorations(AssociationLinkFigure linkFigure) { >+ Association association = (Association) resolveSemanticElement(); >+ Property sourceEnd = AssociationEndConvention.getSourceEnd(association); >+ Property targetEnd = AssociationEndConvention.getTargetEnd(association); >+ >+ linkFigure.getSourceDecorationImpl().update(association, sourceEnd); >+ linkFigure.getTargetDecorationImpl().update(association, targetEnd); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class AssociationLinkFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx { >+ >+ /** >+ * @generated >+ */ >+ public AssociationLinkFigure() { >+ this.setForegroundColor(org.eclipse.draw2d.ColorConstants.blue); >+ setSourceDecoration(createSourceDecoration()); >+ setTargetDecoration(createTargetDecoration()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration createSourceDecoration() { >+ org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration df = new org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration(); >+ >+ return df; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration createTargetDecoration() { >+ org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration df = new org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration(); >+ >+ return df; >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration getTargetDecorationImpl() { >+ return (org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration) getTargetDecoration(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration getSourceDecorationImpl() { >+ return (org.eclipse.uml2.diagram.common.draw2d.AssociationDecoration) getSourceDecoration(); >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Class2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Class2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Class2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Class2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,578 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Class2CanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Class2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Class2EditPart extends AbstractBorderedShapeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2001; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public Class2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy() { >+ >+ public Command getCommand(Request request) { >+ if (understandsRequest(request)) { >+ if (request instanceof CreateViewAndElementRequest) { >+ CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); >+ IElementType type = (IElementType) adapter.getAdapter(IElementType.class); >+ if (type == UMLElementTypes.Property_3001) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(ClassAttributesEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Operation_3002) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(ClassOperationsEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Class_3003) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(ClassClassesEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ } >+ return super.getCommand(request); >+ } >+ return null; >+ } >+ }); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Class2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new Class2CanonicalEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ClassFigure figure = new ClassFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure getPrimaryShape() { >+ return (ClassFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof ClassAttributesEditPart) { >+ return getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ } >+ if (editPart instanceof ClassOperationsEditPart) { >+ return getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ } >+ if (editPart instanceof ClassClassesEditPart) { >+ return getPrimaryShape().getFigureClassFigure_ClassesCompartment(); >+ } >+ if (editPart instanceof PortEditPart) { >+ return getBorderedFigure().getBorderItemContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ClassNameEditPart) { >+ ((ClassNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureClassFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof ClassAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((ClassAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof ClassOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((ClassOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof ClassClassesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_ClassesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((ClassClassesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PortEditPart) { >+ BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE); >+ getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ClassAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ pane.remove(((ClassAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof ClassOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ pane.remove(((ClassOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof ClassClassesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_ClassesCompartment(); >+ pane.remove(((ClassClassesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PortEditPart) { >+ getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createMainFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(ClassNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ClassFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ this.setFill(false); >+ this.setOutline(false); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25))); >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter0 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ fig_0.setLayoutManager(layouter0); >+ >+ setFigureClassFigure_NameContainer(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 2; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureClassFigure_name(fig_1); >+ >+ Object layData1 = null; >+ >+ fig_0.add(fig_1, layData1); >+ org.eclipse.draw2d.RectangleFigure fig_2 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ org.eclipse.draw2d.ToolbarLayout layouter2 = new org.eclipse.draw2d.ToolbarLayout(); >+ layouter2.setStretchMinorAxis(true); >+ layouter2.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER); >+ layouter2.setSpacing(0); >+ layouter2.setVertical(true); >+ >+ fig_2.setLayoutManager(layouter2); >+ >+ setFigureClassFigure_Body(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 2; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = true; >+ >+ this.add(fig_2, layData2); >+ org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_PropertiesCompartment(fig_3); >+ >+ Object layData3 = null; >+ >+ fig_2.add(fig_3, layData3); >+ org.eclipse.draw2d.RectangleFigure fig_4 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OperationsCompartment(fig_4); >+ >+ Object layData4 = null; >+ >+ fig_2.add(fig_4, layData4); >+ org.eclipse.draw2d.RectangleFigure fig_5 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_ClassesCompartment(fig_5); >+ >+ Object layData5 = null; >+ >+ fig_2.add(fig_5, layData5); >+ org.eclipse.draw2d.RectangleFigure fig_6 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_LiteralsCompartment(fig_6); >+ >+ Object layData6 = null; >+ >+ fig_2.add(fig_6, layData6); >+ org.eclipse.draw2d.RectangleFigure fig_7 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OthersCompartment(fig_7); >+ >+ Object layData7 = null; >+ >+ fig_2.add(fig_7, layData7); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_NameContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_NameContainer() { >+ return fClassFigure_NameContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_NameContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fClassFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureClassFigure_name() { >+ return fClassFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fClassFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_Body; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_Body() { >+ return fClassFigure_Body; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_Body(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_Body = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_PropertiesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_PropertiesCompartment() { >+ return fClassFigure_PropertiesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_PropertiesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_PropertiesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OperationsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OperationsCompartment() { >+ return fClassFigure_OperationsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OperationsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OperationsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_ClassesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_ClassesCompartment() { >+ return fClassFigure_ClassesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_ClassesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_ClassesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_LiteralsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_LiteralsCompartment() { >+ return fClassFigure_LiteralsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_LiteralsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_LiteralsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OthersCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OthersCompartment() { >+ return fClassFigure_OthersCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OthersCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OthersCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveType2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveType2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveType2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveType2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,455 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveType2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,551 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PackageNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5004; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public PackageNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Package_2002; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageOtherItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageOtherItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageOtherItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageOtherItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.InstanceSpecification; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PackageOtherItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.InstanceSpecification_3013 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateInstanceSpecification_3013Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateInstanceSpecification_3013Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateInstanceSpecification_3013Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ InstanceSpecification newElement = (InstanceSpecification) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.InstanceSpecification_3013.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassOperationsItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassOperationsItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassOperationsItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassOperationsItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Operation; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassOperationsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Operation_3020 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClass_OwnedOperation()); >+ } >+ return getMSLWrapper(new CreateOperation_3020Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateOperation_3020Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateOperation_3020Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociationClass(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Operation newElement = (Operation) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Operation_3020.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeOperationsEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeOperationsEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeOperationsEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeOperationsEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DataTypeOperationsCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DataTypeOperationsItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class DataTypeOperationsEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7018; >+ >+ /** >+ * @generated >+ */ >+ public DataTypeOperationsEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "operations"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DataTypeOperationsItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new DataTypeOperationsCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintCompartmentEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintCompartmentEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintCompartmentEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintCompartmentEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,65 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ConstraintCompartmentCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ConstraintCompartmentItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class ConstraintCompartmentEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7023; >+ >+ /** >+ * @generated >+ */ >+ public ConstraintCompartmentEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "Compartment"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ConstraintCompartmentItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ConstraintCompartmentCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ // nothing to do -- parent layout does not accept Double constraints as ratio >+ // super.setRatio(ratio); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PortEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PortEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PortEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PortEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,289 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Iterator; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editparts.LayerManager; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderItemEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PortItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class PortEditPart extends AbstractBorderItemEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3025; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public PortEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, getPrimaryDragEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PortItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected void decorateChild(EditPart child) { >+ if (isExternalLabel(child)) { >+ return; >+ } >+ super.decorateChild(child); >+ } >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() { >+ >+ protected boolean isExternalLabel(EditPart editPart) { >+ return PortEditPart.this.isExternalLabel(editPart); >+ } >+ }; >+ xlep.setRealLayoutEditPolicy(lep); >+ return xlep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ PortFigure figure = new PortFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public PortFigure getPrimaryShape() { >+ return (PortFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (isExternalLabel(editPart)) { >+ return getExternalLabelsContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ //FIXME: workaround for #154536 >+ result.getBounds().setSize(result.getPreferredSize()); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isExternalLabel(EditPart childEditPart) { >+ if (childEditPart instanceof PortNameEditPart) { >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getExternalLabelsContainer() { >+ LayerManager root = (LayerManager) getRoot(); >+ return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().add(labelFigure); >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void removeNotify() { >+ for (Iterator it = getChildren().iterator(); it.hasNext();) { >+ EditPart childEditPart = (EditPart) it.next(); >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ } >+ } >+ super.removeNotify(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class PortFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public PortFigure() { >+ >+ this.setForegroundColor(org.eclipse.draw2d.ColorConstants.gray); >+ this.setPreferredSize(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class EnumerationLiteralItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Property2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Property2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Property2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Property2EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3019; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Property2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Property2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Property_3019; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageClassifiersCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageClassifiersCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageClassifiersCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageClassifiersCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,74 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.AssociationClassEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.DataTypeEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.EnumerationEditPart; >+import org.eclipse.uml2.diagram.clazz.edit.parts.PrimitiveTypeEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class PackageClassifiersCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) modelObject).getOwnedTypes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ switch (nodeVID) { >+ case ClassEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case DataTypeEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case PrimitiveTypeEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case EnumerationEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case AssociationClassEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/SlotEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/SlotEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/SlotEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/SlotEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,559 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.SlotItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class SlotEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3017; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public SlotEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new SlotItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Slot_3017; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationAttributesCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationAttributesCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationAttributesCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationAttributesCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property5EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.DataType; >+ >+/** >+ * @generated >+ */ >+public class EnumerationAttributesCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((DataType) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Property5EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property6EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property6EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Property6EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Property6EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,48 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Property6ItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class Property6EditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4003; >+ >+ /** >+ * @generated >+ */ >+ public Property6EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Property6ItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new PolylineConnectionEx(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeOperationsItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeOperationsItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeOperationsItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeOperationsItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Operation; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeOperationsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Operation_3022 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getDataType_OwnedOperation()); >+ } >+ return getMSLWrapper(new CreateOperation_3022Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateOperation_3022Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateOperation_3022Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPrimitiveType(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Operation newElement = (Operation) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Operation_3022.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassOperationsItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassOperationsItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassOperationsItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassOperationsItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Operation; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class ClassOperationsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Operation_3002 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClass_OwnedOperation()); >+ } >+ return getMSLWrapper(new CreateOperation_3002Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateOperation_3002Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateOperation_3002Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClass_(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Operation newElement = (Operation) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Operation_3002.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,533 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationName2EditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6004; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(AssociationName2EditPart.VISUAL_ID), new Point(0, -15)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public AssociationName2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.TARGET; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Association_4005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,551 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class DataTypeNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5006; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public DataTypeNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.DataType_2004; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,530 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class DependencyNameEditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5011; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(DependencyNameEditPart.VISUAL_ID), new Point(0, 0)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DependencyNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Dependency_2009; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation3EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation3EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation3EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation3EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Operation3ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Operation3EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3015; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Operation3EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Operation3ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Operation_3015; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassOperationsCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassOperationsCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassOperationsCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassOperationsCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,51 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Operation2EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassOperationsCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Class) modelObject).getOwnedOperations().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Operation2EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassOperationsCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassOperationsCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassOperationsCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassOperationsCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,51 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.OperationEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ClassOperationsCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Class) modelObject).getOwnedOperations().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (OperationEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageClassifiersItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageClassifiersItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageClassifiersItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PackageClassifiersItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,268 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.AssociationClass; >+import org.eclipse.uml2.uml.DataType; >+import org.eclipse.uml2.uml.Enumeration; >+import org.eclipse.uml2.uml.PrimitiveType; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PackageClassifiersItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Class_3007 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateClass_3007Command(req)); >+ } >+ if (UMLElementTypes.DataType_3008 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateDataType_3008Command(req)); >+ } >+ if (UMLElementTypes.PrimitiveType_3009 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreatePrimitiveType_3009Command(req)); >+ } >+ if (UMLElementTypes.Enumeration_3011 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateEnumeration_3011Command(req)); >+ } >+ if (UMLElementTypes.AssociationClass_3012 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateAssociationClass_3012Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateClass_3007Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateClass_3007Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Class_3007.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateDataType_3008Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateDataType_3008Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ DataType newElement = (DataType) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.DataType_3008.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePrimitiveType_3009Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePrimitiveType_3009Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ PrimitiveType newElement = (PrimitiveType) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.PrimitiveType_3009.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateEnumeration_3011Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateEnumeration_3011Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Enumeration newElement = (Enumeration) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Enumeration_3011.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateAssociationClass_3012Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateAssociationClass_3012Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ AssociationClass newElement = (AssociationClass) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.AssociationClass_3012.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/InterfaceItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/InterfaceItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/InterfaceItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/InterfaceItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,522 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.BehavioredClassifier; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.Interface; >+import org.eclipse.uml2.uml.InterfaceRealization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class InterfaceItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.InterfaceRealization_4008 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingInterfaceRealization4008Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingInterfaceRealization4008Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof BehavioredClassifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final BehavioredClassifier element = (BehavioredClassifier) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getBehavioredClassifier(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getBehavioredClassifier_InterfaceRealization()); >+ } >+ return getMSLWrapper(new CreateIncomingInterfaceRealization4008Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingInterfaceRealization4008Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingInterfaceRealization4008Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getBehavioredClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ InterfaceRealization newElement = (InterfaceRealization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setContract((Interface) getTarget()); >+ newElement.setImplementingClassifier((BehavioredClassifier) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationAttributesItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationAttributesItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationAttributesItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationAttributesItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class EnumerationAttributesItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Property_3023 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getDataType_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreateProperty_3023Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateProperty_3023Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateProperty_3023Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getEnumeration(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Property_3023.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,551 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ConstraintNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5008; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ConstraintNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Constraint_2006; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/LiteralStringEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/LiteralStringEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/LiteralStringEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/LiteralStringEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.LiteralStringItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class LiteralStringEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3005; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public LiteralStringEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new LiteralStringItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.LiteralString_3005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLBaseItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLBaseItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLBaseItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLBaseItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,342 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Collections; >+import java.util.HashMap; >+import java.util.Map; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.common.core.command.ICommand; >+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+import org.eclipse.gmf.runtime.diagram.ui.commands.CommandProxy; >+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.SemanticEditPolicy; >+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; >+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry; >+import org.eclipse.gmf.runtime.emf.type.core.IEditHelperContext; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.GetEditContextRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.helpers.UMLBaseEditHelper; >+import org.eclipse.uml2.diagram.clazz.expressions.UMLAbstractExpression; >+import org.eclipse.uml2.diagram.clazz.expressions.UMLOCLFactory; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.uml.AggregationKind; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class UMLBaseItemSemanticEditPolicy extends SemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getSemanticCommand(IEditCommandRequest request) { >+ IEditCommandRequest completedRequest = completeRequest(request); >+ Object editHelperContext = completedRequest.getEditHelperContext(); >+ if (editHelperContext instanceof View || (editHelperContext instanceof IEditHelperContext && ((IEditHelperContext) editHelperContext).getEObject() instanceof View)) { >+ // no semantic commands are provided for pure design elements >+ return null; >+ } >+ if (editHelperContext == null) { >+ editHelperContext = ViewUtil.resolveSemanticElement((View) getHost().getModel()); >+ } >+ IElementType elementType = ElementTypeRegistry.getInstance().getElementType(editHelperContext); >+ if (elementType == ElementTypeRegistry.getInstance().getType("org.eclipse.gmf.runtime.emf.type.core.default")) { //$NON-NLS-1$ >+ elementType = null; >+ } >+ Command epCommand = getSemanticCommandSwitch(completedRequest); >+ if (epCommand != null) { >+ ICommand command = epCommand instanceof ICommandProxy ? ((ICommandProxy) epCommand).getICommand() : new CommandProxy(epCommand); >+ completedRequest.setParameter(UMLBaseEditHelper.EDIT_POLICY_COMMAND, command); >+ } >+ Command ehCommand = null; >+ if (elementType != null) { >+ ICommand command = elementType.getEditCommand(completedRequest); >+ if (command != null) { >+ if (!(command instanceof CompositeTransactionalCommand)) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ command = new CompositeTransactionalCommand(editingDomain, null).compose(command); >+ } >+ ehCommand = new ICommandProxy(command); >+ } >+ } >+ boolean shouldProceed = true; >+ if (completedRequest instanceof DestroyRequest) { >+ shouldProceed = shouldProceed((DestroyRequest) completedRequest); >+ } >+ if (shouldProceed) { >+ if (completedRequest instanceof DestroyRequest) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ Command deleteViewCommand = new ICommandProxy(new DeleteCommand(editingDomain, (View) getHost().getModel())); >+ ehCommand = ehCommand == null ? deleteViewCommand : ehCommand.chain(deleteViewCommand); >+ } >+ return ehCommand; >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getSemanticCommandSwitch(IEditCommandRequest req) { >+ if (req instanceof CreateRelationshipRequest) { >+ return getCreateRelationshipCommand((CreateRelationshipRequest) req); >+ } else if (req instanceof CreateElementRequest) { >+ return getCreateCommand((CreateElementRequest) req); >+ } else if (req instanceof ConfigureRequest) { >+ return getConfigureCommand((ConfigureRequest) req); >+ } else if (req instanceof DestroyElementRequest) { >+ return getDestroyElementCommand((DestroyElementRequest) req); >+ } else if (req instanceof DestroyReferenceRequest) { >+ return getDestroyReferenceCommand((DestroyReferenceRequest) req); >+ } else if (req instanceof DuplicateElementsRequest) { >+ return getDuplicateCommand((DuplicateElementsRequest) req); >+ } else if (req instanceof GetEditContextRequest) { >+ return getEditContextCommand((GetEditContextRequest) req); >+ } else if (req instanceof MoveRequest) { >+ return getMoveCommand((MoveRequest) req); >+ } else if (req instanceof ReorientReferenceRelationshipRequest) { >+ return getReorientReferenceRelationshipCommand((ReorientReferenceRelationshipRequest) req); >+ } else if (req instanceof ReorientRelationshipRequest) { >+ return getReorientRelationshipCommand((ReorientRelationshipRequest) req); >+ } else if (req instanceof SetRequest) { >+ return getSetCommand((SetRequest) req); >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getConfigureCommand(ConfigureRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getSetCommand(SetRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getEditContextCommand(GetEditContextRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDuplicateCommand(DuplicateElementsRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getMoveCommand(MoveRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getReorientReferenceRelationshipCommand(ReorientReferenceRelationshipRequest req) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getReorientRelationshipCommand(ReorientRelationshipRequest req) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getMSLWrapper(ICommand cmd) { >+ return new ICommandProxy(cmd); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getSemanticElement() { >+ return ViewUtil.resolveSemanticElement((View) getHost().getModel()); >+ } >+ >+ /** >+ * Finds container element for the new relationship of the specified type. >+ * Default implementation goes up by containment hierarchy starting from >+ * the specified element and returns the first element that is instance of >+ * the specified container class. >+ * >+ * @generated >+ */ >+ protected EObject getRelationshipContainer(EObject element, EClass containerClass, IElementType relationshipType) { >+ for (; element != null; element = element.eContainer()) { >+ if (containerClass.isSuperTypeOf(element.eClass())) { >+ return element; >+ } >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected static class LinkConstraints { >+ >+ /** >+ * @generated >+ */ >+ public static final LinkConstraints Usage_4009 = createUsage_4009(); >+ >+ /** >+ * @generated >+ */ >+ private static LinkConstraints createUsage_4009() { >+ Map sourceEnv = new HashMap(3); >+ sourceEnv.put("oppositeEnd", org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNamedElement()); //$NON-NLS-1$ >+ UMLAbstractExpression sourceExpression = UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Classifier)", //$NON-NLS-1$ >+ UMLPackage.eINSTANCE.getNamedElement(), sourceEnv); >+ UMLAbstractExpression targetExpression = null; >+ return new LinkConstraints(sourceExpression, targetExpression); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static final String OPPOSITE_END_VAR = "oppositeEnd"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ private UMLAbstractExpression srcEndInv; >+ >+ /** >+ * @generated >+ */ >+ private UMLAbstractExpression targetEndInv; >+ >+ /** >+ * @generated >+ */ >+ public LinkConstraints(UMLAbstractExpression sourceEnd, UMLAbstractExpression targetEnd) { >+ this.srcEndInv = sourceEnd; >+ this.targetEndInv = targetEnd; >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean canCreateLink(CreateRelationshipRequest req, boolean isBackDirected) { >+ Object source = req.getSource(); >+ Object target = req.getTarget(); >+ >+ UMLAbstractExpression sourceConstraint = isBackDirected ? targetEndInv : srcEndInv; >+ UMLAbstractExpression targetConstraint = null; >+ if (req.getTarget() != null) { >+ targetConstraint = isBackDirected ? srcEndInv : targetEndInv; >+ } >+ boolean isSourceAccepted = sourceConstraint != null ? evaluate(sourceConstraint, source, target, false) : true; >+ if (isSourceAccepted && targetConstraint != null) { >+ return evaluate(targetConstraint, target, source, true); >+ } >+ return isSourceAccepted; >+ } >+ >+ /** >+ * @generated >+ */ >+ private static boolean evaluate(UMLAbstractExpression constraint, Object sourceEnd, Object oppositeEnd, boolean clearEnv) { >+ Map evalEnv = Collections.singletonMap(OPPOSITE_END_VAR, oppositeEnd); >+ try { >+ Object val = constraint.evaluate(sourceEnd, evalEnv); >+ return (val instanceof Boolean) ? ((Boolean) val).booleanValue() : false; >+ } catch (Exception e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Link constraint evaluation error", e); //$NON-NLS-1$ >+ return false; >+ } >+ } >+ } >+ >+ /** >+ * @NOT-GENERATED >+ */ >+ protected static abstract class CreateAssociationCommand extends CreateRelationshipCommand { >+ >+ public CreateAssociationCommand(CreateRelationshipRequest request) { >+ super(request); >+ } >+ >+ protected EObject doDefaultElementCreation() { >+ Type sourceType = (Type) getSource(); >+ Type targetType = (Type) getTarget(); >+ >+ //due to association end conventiontions (see AssociationEndConvention) >+ //we need to have member end of type SourceType to be the first one created >+ //thus, we are calling UML2 createAssociation() in opposite order >+ Association result = targetType.createAssociation(// >+ false, AggregationKind.NONE_LITERAL, "src", 1, 1, // >+ sourceType, false, AggregationKind.NONE_LITERAL, "dst", 1, 1); >+ >+ return result; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property4ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property4ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Property4ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Property4ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Property4ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeAttributesItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeAttributesItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeAttributesItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeAttributesItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class DataTypeAttributesItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Property_3014 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getDataType_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreateProperty_3014Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateProperty_3014Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateProperty_3014Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getDataType(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Property_3014.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintCompartmentCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintCompartmentCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintCompartmentCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintCompartmentCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,49 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.LiteralStringEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.Constraint; >+ >+/** >+ * @generated >+ */ >+public class ConstraintCompartmentCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ nextValue = ((Constraint) modelObject).getSpecification(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (LiteralStringEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DataTypeItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class DataTypeEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3008; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public DataTypeEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DataTypeItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.DataType_3008; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PropertyEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PropertyEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PropertyEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PropertyEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PropertyItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PropertyEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3001; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public PropertyEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PropertyItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Property_3001; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation3ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation3ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation3ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation3ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Operation3ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageOtherEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageOtherEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageOtherEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageOtherEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PackageOtherCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PackageOtherItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PackageOtherEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7012; >+ >+ /** >+ * @generated >+ */ >+ public PackageOtherEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "other"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PackageOtherItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PackageOtherCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation5ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation5ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation5ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation5ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Operation5ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property5ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Property5ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Property5ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Property5ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Property5ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/SlotItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/SlotItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/SlotItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/SlotItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,64 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class SlotItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/OperationEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/OperationEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/OperationEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/OperationEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.OperationItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class OperationEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3002; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public OperationEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new OperationItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Operation_3002; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation5EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation5EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation5EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Operation5EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Operation5ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Operation5EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3024; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Operation5EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Operation5ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Operation_3024; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/UsageEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/UsageEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/UsageEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/UsageEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UsageItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class UsageEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4009; >+ >+ /** >+ * @generated >+ */ >+ public UsageEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new UsageItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new RequiredInterfaceConnectionFigure(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class RequiredInterfaceConnectionFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx { >+ >+ /** >+ * @generated >+ */ >+ public RequiredInterfaceConnectionFigure() { >+ >+ setTargetDecoration(createTargetDecoration()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration createTargetDecoration() { >+ org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration df = new org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration(); >+ >+ df.setRadius(10); >+ >+ return df; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,455 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class EnumerationItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveType2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveType2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveType2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveType2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,542 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PrimitiveType2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveType2EditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2005; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public PrimitiveType2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy() { >+ >+ public Command getCommand(Request request) { >+ if (understandsRequest(request)) { >+ if (request instanceof CreateViewAndElementRequest) { >+ CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); >+ IElementType type = (IElementType) adapter.getAdapter(IElementType.class); >+ if (type == UMLElementTypes.Property_3021) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PrimitiveTypeAttributesEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Operation_3022) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PrimitiveTypeOperationsEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ } >+ return super.getCommand(request); >+ } >+ return null; >+ } >+ }); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PrimitiveType2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ClassFigure figure = new ClassFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure getPrimaryShape() { >+ return (ClassFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof PrimitiveTypeAttributesEditPart) { >+ return getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ } >+ if (editPart instanceof PrimitiveTypeOperationsEditPart) { >+ return getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof PrimitiveTypeNameEditPart) { >+ ((PrimitiveTypeNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureClassFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof PrimitiveTypeAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((PrimitiveTypeAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PrimitiveTypeOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((PrimitiveTypeOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof PrimitiveTypeAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ pane.remove(((PrimitiveTypeAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PrimitiveTypeOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ pane.remove(((PrimitiveTypeOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(PrimitiveTypeNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ClassFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ this.setFill(false); >+ this.setOutline(false); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25))); >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter0 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ fig_0.setLayoutManager(layouter0); >+ >+ setFigureClassFigure_NameContainer(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 2; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureClassFigure_name(fig_1); >+ >+ Object layData1 = null; >+ >+ fig_0.add(fig_1, layData1); >+ org.eclipse.draw2d.RectangleFigure fig_2 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ org.eclipse.draw2d.ToolbarLayout layouter2 = new org.eclipse.draw2d.ToolbarLayout(); >+ layouter2.setStretchMinorAxis(true); >+ layouter2.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER); >+ layouter2.setSpacing(0); >+ layouter2.setVertical(true); >+ >+ fig_2.setLayoutManager(layouter2); >+ >+ setFigureClassFigure_Body(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 2; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = true; >+ >+ this.add(fig_2, layData2); >+ org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_PropertiesCompartment(fig_3); >+ >+ Object layData3 = null; >+ >+ fig_2.add(fig_3, layData3); >+ org.eclipse.draw2d.RectangleFigure fig_4 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OperationsCompartment(fig_4); >+ >+ Object layData4 = null; >+ >+ fig_2.add(fig_4, layData4); >+ org.eclipse.draw2d.RectangleFigure fig_5 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_ClassesCompartment(fig_5); >+ >+ Object layData5 = null; >+ >+ fig_2.add(fig_5, layData5); >+ org.eclipse.draw2d.RectangleFigure fig_6 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_LiteralsCompartment(fig_6); >+ >+ Object layData6 = null; >+ >+ fig_2.add(fig_6, layData6); >+ org.eclipse.draw2d.RectangleFigure fig_7 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OthersCompartment(fig_7); >+ >+ Object layData7 = null; >+ >+ fig_2.add(fig_7, layData7); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_NameContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_NameContainer() { >+ return fClassFigure_NameContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_NameContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fClassFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureClassFigure_name() { >+ return fClassFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fClassFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_Body; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_Body() { >+ return fClassFigure_Body; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_Body(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_Body = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_PropertiesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_PropertiesCompartment() { >+ return fClassFigure_PropertiesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_PropertiesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_PropertiesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OperationsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OperationsCompartment() { >+ return fClassFigure_OperationsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OperationsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OperationsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_ClassesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_ClassesCompartment() { >+ return fClassFigure_ClassesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_ClassesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_ClassesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_LiteralsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_LiteralsCompartment() { >+ return fClassFigure_LiteralsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_LiteralsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_LiteralsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OthersCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OthersCompartment() { >+ return fClassFigure_OthersCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OthersCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OthersCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,466 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class ClassItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.InterfaceRealization_4008 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4008Command(req) : null; >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4008Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,455 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class DataTypeItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeAttributesCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeAttributesCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeAttributesCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PrimitiveTypeAttributesCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property4EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.DataType; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeAttributesCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((DataType) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Property4EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Class2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Class2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Class2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Class2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,524 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Class2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Port_3025 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreatePort_3025Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePort_3025Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePort_3025Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClass_(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Port newElement = (Port) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Port_3025.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.InterfaceRealization_4008 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4008Command(req) : null; >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4008Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationOperationsItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationOperationsItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationOperationsItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationOperationsItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Operation; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class EnumerationOperationsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Operation_3024 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getDataType_OwnedOperation()); >+ } >+ return getMSLWrapper(new CreateOperation_3024Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateOperation_3024Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateOperation_3024Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getEnumeration(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Operation newElement = (Operation) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Operation_3024.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationSlotsEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationSlotsEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationSlotsEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationSlotsEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,64 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.InstanceSpecificationSlotsCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.InstanceSpecificationSlotsItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class InstanceSpecificationSlotsEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7028; >+ >+ /** >+ * @generated >+ */ >+ public InstanceSpecificationSlotsEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "Slots"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InstanceSpecificationSlotsItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new InstanceSpecificationSlotsCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassClassesCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassClassesCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassClassesCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassClassesCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,51 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Class3EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ClassClassesCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Class) modelObject).getNestedClassifiers().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Class3EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PortNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PortNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PortNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PortNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,524 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PortNameEditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5013; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID), new Point(0, 0)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public PortNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Port_3025; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageClassifiersEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageClassifiersEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageClassifiersEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageClassifiersEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PackageClassifiersCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PackageClassifiersItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PackageClassifiersEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7011; >+ >+ /** >+ * @generated >+ */ >+ public PackageClassifiersEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "classifiers"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PackageClassifiersItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PackageClassifiersCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyClientEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyClientEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyClientEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyClientEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,66 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DependencyClientItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLReferenceConnectionEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class DependencyClientEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4007; >+ >+ /** >+ * @generated >+ */ >+ public DependencyClientEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.CONNECTION_ROLE, new UMLReferenceConnectionEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DependencyClientItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new Dependency_NoArrow_Polyline(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class Dependency_NoArrow_Polyline extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx { >+ >+ /** >+ * @generated >+ */ >+ public Dependency_NoArrow_Polyline() { >+ >+ this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH); >+ this.setForegroundColor(org.eclipse.draw2d.ColorConstants.lightGray); >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecificationItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class InstanceSpecificationItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassClassesItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassClassesItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassClassesItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassClassesItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,72 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassClassesItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Class_3003 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClass_NestedClassifier()); >+ } >+ return getMSLWrapper(new CreateClass_3003Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateClass_3003Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateClass_3003Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociationClass(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Class_3003.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationLiteralsEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationLiteralsEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationLiteralsEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationLiteralsEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.EnumerationLiteralsCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.EnumerationLiteralsItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class EnumerationLiteralsEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7013; >+ >+ /** >+ * @generated >+ */ >+ public EnumerationLiteralsEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "literals"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new EnumerationLiteralsItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new EnumerationLiteralsCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencySupplierItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencySupplierItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencySupplierItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencySupplierItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; >+ >+/** >+ * @generated >+ */ >+public class DependencySupplierItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) { >+ return getMSLWrapper(new DestroyReferenceCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencyItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencyItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencyItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DependencyItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,273 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class DependencyItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency_Supplier4006Command(req) : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency_Client4007Command(req) : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency_Client4007Command(CreateRelationshipRequest req) { >+ >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClass2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClass2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClass2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClass2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,474 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class AssociationClass2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingProperty4003Command(req) : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.InterfaceRealization_4008 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4008Command(req) : null; >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingProperty4003Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4008Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecification2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecification2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecification2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/InstanceSpecification2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class InstanceSpecification2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName5EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName5EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName5EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName5EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,533 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationName5EditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6007; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(AssociationName5EditPart.VISUAL_ID), new Point(0, -30)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public AssociationName5EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.SOURCE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Association_4005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Enumeration2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Enumeration2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Enumeration2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Enumeration2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,560 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Enumeration2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Enumeration2EditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2003; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public Enumeration2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy() { >+ >+ public Command getCommand(Request request) { >+ if (understandsRequest(request)) { >+ if (request instanceof CreateViewAndElementRequest) { >+ CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); >+ IElementType type = (IElementType) adapter.getAdapter(IElementType.class); >+ if (type == UMLElementTypes.EnumerationLiteral_3016) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(EnumerationLiteralsEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Property_3023) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(EnumerationAttributesEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Operation_3024) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(EnumerationOperationsEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ } >+ return super.getCommand(request); >+ } >+ return null; >+ } >+ }); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Enumeration2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ClassFigure figure = new ClassFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure getPrimaryShape() { >+ return (ClassFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof EnumerationLiteralsEditPart) { >+ return getPrimaryShape().getFigureClassFigure_LiteralsCompartment(); >+ } >+ if (editPart instanceof EnumerationAttributesEditPart) { >+ return getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ } >+ if (editPart instanceof EnumerationOperationsEditPart) { >+ return getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof EnumerationNameEditPart) { >+ ((EnumerationNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureClassFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof EnumerationLiteralsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_LiteralsCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((EnumerationLiteralsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof EnumerationAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((EnumerationAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof EnumerationOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((EnumerationOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof EnumerationLiteralsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_LiteralsCompartment(); >+ pane.remove(((EnumerationLiteralsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof EnumerationAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ pane.remove(((EnumerationAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof EnumerationOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ pane.remove(((EnumerationOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(EnumerationNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ClassFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ this.setFill(false); >+ this.setOutline(false); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25))); >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter0 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ fig_0.setLayoutManager(layouter0); >+ >+ setFigureClassFigure_NameContainer(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 2; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureClassFigure_name(fig_1); >+ >+ Object layData1 = null; >+ >+ fig_0.add(fig_1, layData1); >+ org.eclipse.draw2d.RectangleFigure fig_2 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ org.eclipse.draw2d.ToolbarLayout layouter2 = new org.eclipse.draw2d.ToolbarLayout(); >+ layouter2.setStretchMinorAxis(true); >+ layouter2.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER); >+ layouter2.setSpacing(0); >+ layouter2.setVertical(true); >+ >+ fig_2.setLayoutManager(layouter2); >+ >+ setFigureClassFigure_Body(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 2; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = true; >+ >+ this.add(fig_2, layData2); >+ org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_PropertiesCompartment(fig_3); >+ >+ Object layData3 = null; >+ >+ fig_2.add(fig_3, layData3); >+ org.eclipse.draw2d.RectangleFigure fig_4 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OperationsCompartment(fig_4); >+ >+ Object layData4 = null; >+ >+ fig_2.add(fig_4, layData4); >+ org.eclipse.draw2d.RectangleFigure fig_5 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_ClassesCompartment(fig_5); >+ >+ Object layData5 = null; >+ >+ fig_2.add(fig_5, layData5); >+ org.eclipse.draw2d.RectangleFigure fig_6 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_LiteralsCompartment(fig_6); >+ >+ Object layData6 = null; >+ >+ fig_2.add(fig_6, layData6); >+ org.eclipse.draw2d.RectangleFigure fig_7 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OthersCompartment(fig_7); >+ >+ Object layData7 = null; >+ >+ fig_2.add(fig_7, layData7); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_NameContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_NameContainer() { >+ return fClassFigure_NameContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_NameContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fClassFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureClassFigure_name() { >+ return fClassFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fClassFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_Body; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_Body() { >+ return fClassFigure_Body; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_Body(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_Body = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_PropertiesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_PropertiesCompartment() { >+ return fClassFigure_PropertiesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_PropertiesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_PropertiesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OperationsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OperationsCompartment() { >+ return fClassFigure_OperationsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OperationsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OperationsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_ClassesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_ClassesCompartment() { >+ return fClassFigure_ClassesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_ClassesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_ClassesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_LiteralsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_LiteralsCompartment() { >+ return fClassFigure_LiteralsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_LiteralsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_LiteralsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OthersCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OthersCompartment() { >+ return fClassFigure_OthersCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OthersCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OthersCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/UMLEditPartFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/UMLEditPartFactory.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/UMLEditPartFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/UMLEditPartFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,307 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.FigureUtilities; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Dimension; >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPartFactory; >+import org.eclipse.gef.tools.CellEditorLocator; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.viewers.CellEditor; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.widgets.Text; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class UMLEditPartFactory implements EditPartFactory { >+ >+ /** >+ * @generated >+ */ >+ public static final String EXTERNAL_NODE_LABELS_LAYER = "External Node Labels"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public EditPart createEditPart(EditPart context, Object model) { >+ if (model instanceof View) { >+ View view = (View) model; >+ int viewVisualID = UMLVisualIDRegistry.getVisualID(view); >+ switch (viewVisualID) { >+ case Package2EditPart.VISUAL_ID: >+ return new Package2EditPart(view); >+ case PackageNameEditPart.VISUAL_ID: >+ return new PackageNameEditPart(view); >+ case Class2EditPart.VISUAL_ID: >+ return new Class2EditPart(view); >+ case ClassNameEditPart.VISUAL_ID: >+ return new ClassNameEditPart(view); >+ case AssociationClass2EditPart.VISUAL_ID: >+ return new AssociationClass2EditPart(view); >+ case AssociationClassNameEditPart.VISUAL_ID: >+ return new AssociationClassNameEditPart(view); >+ case DataType2EditPart.VISUAL_ID: >+ return new DataType2EditPart(view); >+ case DataTypeNameEditPart.VISUAL_ID: >+ return new DataTypeNameEditPart(view); >+ case PrimitiveType2EditPart.VISUAL_ID: >+ return new PrimitiveType2EditPart(view); >+ case PrimitiveTypeNameEditPart.VISUAL_ID: >+ return new PrimitiveTypeNameEditPart(view); >+ case Enumeration2EditPart.VISUAL_ID: >+ return new Enumeration2EditPart(view); >+ case EnumerationNameEditPart.VISUAL_ID: >+ return new EnumerationNameEditPart(view); >+ case InterfaceEditPart.VISUAL_ID: >+ return new InterfaceEditPart(view); >+ case InterfaceNameEditPart.VISUAL_ID: >+ return new InterfaceNameEditPart(view); >+ case ConstraintEditPart.VISUAL_ID: >+ return new ConstraintEditPart(view); >+ case ConstraintNameEditPart.VISUAL_ID: >+ return new ConstraintNameEditPart(view); >+ case InstanceSpecification2EditPart.VISUAL_ID: >+ return new InstanceSpecification2EditPart(view); >+ case InstanceSpecificationNameEditPart.VISUAL_ID: >+ return new InstanceSpecificationNameEditPart(view); >+ case DependencyEditPart.VISUAL_ID: >+ return new DependencyEditPart(view); >+ case DependencyNameEditPart.VISUAL_ID: >+ return new DependencyNameEditPart(view); >+ case Package3EditPart.VISUAL_ID: >+ return new Package3EditPart(view); >+ case ClassEditPart.VISUAL_ID: >+ return new ClassEditPart(view); >+ case DataTypeEditPart.VISUAL_ID: >+ return new DataTypeEditPart(view); >+ case PrimitiveTypeEditPart.VISUAL_ID: >+ return new PrimitiveTypeEditPart(view); >+ case EnumerationEditPart.VISUAL_ID: >+ return new EnumerationEditPart(view); >+ case AssociationClassEditPart.VISUAL_ID: >+ return new AssociationClassEditPart(view); >+ case InstanceSpecificationEditPart.VISUAL_ID: >+ return new InstanceSpecificationEditPart(view); >+ case PropertyEditPart.VISUAL_ID: >+ return new PropertyEditPart(view); >+ case OperationEditPart.VISUAL_ID: >+ return new OperationEditPart(view); >+ case Class3EditPart.VISUAL_ID: >+ return new Class3EditPart(view); >+ case PortEditPart.VISUAL_ID: >+ return new PortEditPart(view); >+ case PortNameEditPart.VISUAL_ID: >+ return new PortNameEditPart(view); >+ case Property2EditPart.VISUAL_ID: >+ return new Property2EditPart(view); >+ case Operation2EditPart.VISUAL_ID: >+ return new Operation2EditPart(view); >+ case Property3EditPart.VISUAL_ID: >+ return new Property3EditPart(view); >+ case Operation3EditPart.VISUAL_ID: >+ return new Operation3EditPart(view); >+ case Property4EditPart.VISUAL_ID: >+ return new Property4EditPart(view); >+ case Operation4EditPart.VISUAL_ID: >+ return new Operation4EditPart(view); >+ case EnumerationLiteralEditPart.VISUAL_ID: >+ return new EnumerationLiteralEditPart(view); >+ case Property5EditPart.VISUAL_ID: >+ return new Property5EditPart(view); >+ case Operation5EditPart.VISUAL_ID: >+ return new Operation5EditPart(view); >+ case LiteralStringEditPart.VISUAL_ID: >+ return new LiteralStringEditPart(view); >+ case SlotEditPart.VISUAL_ID: >+ return new SlotEditPart(view); >+ case PackagePackagesEditPart.VISUAL_ID: >+ return new PackagePackagesEditPart(view); >+ case PackageClassifiersEditPart.VISUAL_ID: >+ return new PackageClassifiersEditPart(view); >+ case PackageOtherEditPart.VISUAL_ID: >+ return new PackageOtherEditPart(view); >+ case ClassAttributesEditPart.VISUAL_ID: >+ return new ClassAttributesEditPart(view); >+ case ClassOperationsEditPart.VISUAL_ID: >+ return new ClassOperationsEditPart(view); >+ case ClassClassesEditPart.VISUAL_ID: >+ return new ClassClassesEditPart(view); >+ case AssociationClassAttributesEditPart.VISUAL_ID: >+ return new AssociationClassAttributesEditPart(view); >+ case AssociationClassOperationsEditPart.VISUAL_ID: >+ return new AssociationClassOperationsEditPart(view); >+ case AssociationClassClassesEditPart.VISUAL_ID: >+ return new AssociationClassClassesEditPart(view); >+ case DataTypeAttributesEditPart.VISUAL_ID: >+ return new DataTypeAttributesEditPart(view); >+ case DataTypeOperationsEditPart.VISUAL_ID: >+ return new DataTypeOperationsEditPart(view); >+ case PrimitiveTypeAttributesEditPart.VISUAL_ID: >+ return new PrimitiveTypeAttributesEditPart(view); >+ case PrimitiveTypeOperationsEditPart.VISUAL_ID: >+ return new PrimitiveTypeOperationsEditPart(view); >+ case EnumerationLiteralsEditPart.VISUAL_ID: >+ return new EnumerationLiteralsEditPart(view); >+ case EnumerationAttributesEditPart.VISUAL_ID: >+ return new EnumerationAttributesEditPart(view); >+ case EnumerationOperationsEditPart.VISUAL_ID: >+ return new EnumerationOperationsEditPart(view); >+ case ConstraintCompartmentEditPart.VISUAL_ID: >+ return new ConstraintCompartmentEditPart(view); >+ case InstanceSpecificationSlotsEditPart.VISUAL_ID: >+ return new InstanceSpecificationSlotsEditPart(view); >+ case PackageEditPart.VISUAL_ID: >+ return new PackageEditPart(view); >+ case GeneralizationEditPart.VISUAL_ID: >+ return new GeneralizationEditPart(view); >+ case Dependency2EditPart.VISUAL_ID: >+ return new Dependency2EditPart(view); >+ case DependencyName2EditPart.VISUAL_ID: >+ return new DependencyName2EditPart(view); >+ case Property6EditPart.VISUAL_ID: >+ return new Property6EditPart(view); >+ case PropertyNameEditPart.VISUAL_ID: >+ return new PropertyNameEditPart(view); >+ case ConstraintConstrainedElementEditPart.VISUAL_ID: >+ return new ConstraintConstrainedElementEditPart(view); >+ case AssociationEditPart.VISUAL_ID: >+ return new AssociationEditPart(view); >+ case AssociationNameEditPart.VISUAL_ID: >+ return new AssociationNameEditPart(view); >+ case AssociationName2EditPart.VISUAL_ID: >+ return new AssociationName2EditPart(view); >+ case AssociationName3EditPart.VISUAL_ID: >+ return new AssociationName3EditPart(view); >+ case AssociationName4EditPart.VISUAL_ID: >+ return new AssociationName4EditPart(view); >+ case AssociationName5EditPart.VISUAL_ID: >+ return new AssociationName5EditPart(view); >+ case AssociationName6EditPart.VISUAL_ID: >+ return new AssociationName6EditPart(view); >+ case AssociationName7EditPart.VISUAL_ID: >+ return new AssociationName7EditPart(view); >+ case DependencySupplierEditPart.VISUAL_ID: >+ return new DependencySupplierEditPart(view); >+ case DependencyClientEditPart.VISUAL_ID: >+ return new DependencyClientEditPart(view); >+ case InterfaceRealizationEditPart.VISUAL_ID: >+ return new InterfaceRealizationEditPart(view); >+ case UsageEditPart.VISUAL_ID: >+ return new UsageEditPart(view); >+ } >+ } >+ return createUnrecognizedEditPart(context, model); >+ } >+ >+ /** >+ * @generated >+ */ >+ private EditPart createUnrecognizedEditPart(EditPart context, Object model) { >+ // Handle creation of unrecognized child node EditParts here >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static CellEditorLocator getTextCellEditorLocator(ITextAwareEditPart source) { >+ if (source.getFigure() instanceof WrapLabel) >+ return new TextCellEditorLocator((WrapLabel) source.getFigure()); >+ else { >+ IFigure figure = source.getFigure(); >+ return new LabelCellEditorLocator((Label) figure); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ static private class TextCellEditorLocator implements CellEditorLocator { >+ >+ /** >+ * @generated >+ */ >+ private WrapLabel wrapLabel; >+ >+ /** >+ * @generated >+ */ >+ public TextCellEditorLocator(WrapLabel wrapLabel) { >+ super(); >+ this.wrapLabel = wrapLabel; >+ } >+ >+ /** >+ * @generated >+ */ >+ public WrapLabel getWrapLabel() { >+ return wrapLabel; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void relocate(CellEditor celleditor) { >+ Text text = (Text) celleditor.getControl(); >+ Rectangle rect = getWrapLabel().getTextBounds().getCopy(); >+ getWrapLabel().translateToAbsolute(rect); >+ >+ if (getWrapLabel().isTextWrapped() && getWrapLabel().getText().length() > 0) >+ rect.setSize(new Dimension(text.computeSize(rect.width, SWT.DEFAULT))); >+ else { >+ int avr = FigureUtilities.getFontMetrics(text.getFont()).getAverageCharWidth(); >+ rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT, SWT.DEFAULT)).expand(avr * 2, 0)); >+ } >+ >+ if (!rect.equals(new Rectangle(text.getBounds()))) >+ text.setBounds(rect.x, rect.y, rect.width, rect.height); >+ } >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class LabelCellEditorLocator implements CellEditorLocator { >+ >+ /** >+ * @generated >+ */ >+ private Label label; >+ >+ /** >+ * @generated >+ */ >+ public LabelCellEditorLocator(Label label) { >+ this.label = label; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Label getLabel() { >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void relocate(CellEditor celleditor) { >+ Text text = (Text) celleditor.getControl(); >+ Rectangle rect = getLabel().getTextBounds().getCopy(); >+ getLabel().translateToAbsolute(rect); >+ >+ int avr = FigureUtilities.getFontMetrics(text.getFont()).getAverageCharWidth(); >+ rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT, SWT.DEFAULT)).expand(avr * 2, 0)); >+ >+ if (!rect.equals(new Rectangle(text.getBounds()))) >+ text.setBounds(rect.x, rect.y, rect.width, rect.height); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintCompartmentItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintCompartmentItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintCompartmentItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintCompartmentItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,78 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.LiteralString; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class ConstraintCompartmentItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.LiteralString_3005 == req.getElementType()) { >+ Constraint container = (Constraint) (req.getContainer() instanceof View ? ((View) req.getContainer()).getElement() : req.getContainer()); >+ if (container.getSpecification() != null) { >+ return super.getCreateCommand(req); >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getConstraint_Specification()); >+ } >+ return getMSLWrapper(new CreateLiteralString_3005Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateLiteralString_3005Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateLiteralString_3005Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getConstraint(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ LiteralString newElement = (LiteralString) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.LiteralString_3005.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencySupplierEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencySupplierEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencySupplierEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencySupplierEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,84 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DependencySupplierItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLReferenceConnectionEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class DependencySupplierEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4006; >+ >+ /** >+ * @generated >+ */ >+ public DependencySupplierEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.CONNECTION_ROLE, new UMLReferenceConnectionEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DependencySupplierItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new Dependency_WithArrow_Polyline(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class Dependency_WithArrow_Polyline extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx { >+ >+ /** >+ * @generated >+ */ >+ public Dependency_WithArrow_Polyline() { >+ >+ this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH); >+ this.setForegroundColor(org.eclipse.draw2d.ColorConstants.lightGray); >+ setTargetDecoration(createTargetDecoration()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.PolylineDecoration createTargetDecoration() { >+ org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration(); >+ // dispatchNext? >+ >+ org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList(); >+ pl.addPoint(-1, 1); >+ pl.addPoint(0, 0); >+ pl.addPoint(-1, -1); >+ df.setTemplate(pl); >+ df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3)); >+ >+ return df; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+ >+/** >+ * @generated >+ */ >+public class InterfaceRealizationItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClass2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClass2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClass2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClass2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,560 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationClass2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationClass2EditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2007; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public AssociationClass2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy() { >+ >+ public Command getCommand(Request request) { >+ if (understandsRequest(request)) { >+ if (request instanceof CreateViewAndElementRequest) { >+ CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); >+ IElementType type = (IElementType) adapter.getAdapter(IElementType.class); >+ if (type == UMLElementTypes.Property_3019) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(AssociationClassAttributesEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Operation_3020) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(AssociationClassOperationsEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Class_3003) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(AssociationClassClassesEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ } >+ return super.getCommand(request); >+ } >+ return null; >+ } >+ }); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AssociationClass2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ClassFigure figure = new ClassFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure getPrimaryShape() { >+ return (ClassFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof AssociationClassAttributesEditPart) { >+ return getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ } >+ if (editPart instanceof AssociationClassOperationsEditPart) { >+ return getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ } >+ if (editPart instanceof AssociationClassClassesEditPart) { >+ return getPrimaryShape().getFigureClassFigure_ClassesCompartment(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof AssociationClassNameEditPart) { >+ ((AssociationClassNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureClassFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof AssociationClassAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((AssociationClassAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof AssociationClassOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((AssociationClassOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof AssociationClassClassesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_ClassesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((AssociationClassClassesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof AssociationClassAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ pane.remove(((AssociationClassAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof AssociationClassOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ pane.remove(((AssociationClassOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof AssociationClassClassesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_ClassesCompartment(); >+ pane.remove(((AssociationClassClassesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(AssociationClassNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ClassFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ this.setFill(false); >+ this.setOutline(false); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25))); >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter0 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ fig_0.setLayoutManager(layouter0); >+ >+ setFigureClassFigure_NameContainer(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 2; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureClassFigure_name(fig_1); >+ >+ Object layData1 = null; >+ >+ fig_0.add(fig_1, layData1); >+ org.eclipse.draw2d.RectangleFigure fig_2 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ org.eclipse.draw2d.ToolbarLayout layouter2 = new org.eclipse.draw2d.ToolbarLayout(); >+ layouter2.setStretchMinorAxis(true); >+ layouter2.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER); >+ layouter2.setSpacing(0); >+ layouter2.setVertical(true); >+ >+ fig_2.setLayoutManager(layouter2); >+ >+ setFigureClassFigure_Body(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 2; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = true; >+ >+ this.add(fig_2, layData2); >+ org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_PropertiesCompartment(fig_3); >+ >+ Object layData3 = null; >+ >+ fig_2.add(fig_3, layData3); >+ org.eclipse.draw2d.RectangleFigure fig_4 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OperationsCompartment(fig_4); >+ >+ Object layData4 = null; >+ >+ fig_2.add(fig_4, layData4); >+ org.eclipse.draw2d.RectangleFigure fig_5 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_ClassesCompartment(fig_5); >+ >+ Object layData5 = null; >+ >+ fig_2.add(fig_5, layData5); >+ org.eclipse.draw2d.RectangleFigure fig_6 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_LiteralsCompartment(fig_6); >+ >+ Object layData6 = null; >+ >+ fig_2.add(fig_6, layData6); >+ org.eclipse.draw2d.RectangleFigure fig_7 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OthersCompartment(fig_7); >+ >+ Object layData7 = null; >+ >+ fig_2.add(fig_7, layData7); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_NameContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_NameContainer() { >+ return fClassFigure_NameContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_NameContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fClassFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureClassFigure_name() { >+ return fClassFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fClassFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_Body; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_Body() { >+ return fClassFigure_Body; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_Body(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_Body = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_PropertiesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_PropertiesCompartment() { >+ return fClassFigure_PropertiesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_PropertiesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_PropertiesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OperationsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OperationsCompartment() { >+ return fClassFigure_OperationsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OperationsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OperationsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_ClassesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_ClassesCompartment() { >+ return fClassFigure_ClassesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_ClassesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_ClassesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_LiteralsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_LiteralsCompartment() { >+ return fClassFigure_LiteralsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_LiteralsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_LiteralsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OthersCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OthersCompartment() { >+ return fClassFigure_OthersCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OthersCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OthersCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName4EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName4EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName4EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName4EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,533 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationName4EditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6006; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(AssociationName4EditPart.VISUAL_ID), new Point(0, -30)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public AssociationName4EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.TARGET; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Association_4005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.AssociationClassItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3012; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public AssociationClassEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AssociationClassItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.AssociationClass_3012; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Class2CanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Class2CanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Class2CanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Class2CanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.StructuredClassifier; >+ >+/** >+ * @generated >+ */ >+public class Class2CanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (PortEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationOperationsCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationOperationsCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationOperationsCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationOperationsCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Operation5EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.DataType; >+ >+/** >+ * @generated >+ */ >+public class EnumerationOperationsCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((DataType) modelObject).getOwnedOperations().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Operation5EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassClassesCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassClassesCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassClassesCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassClassesCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,51 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Class3EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassClassesCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Class) modelObject).getNestedClassifiers().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Class3EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Dependency2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Dependency2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Dependency2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Dependency2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,81 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Dependency2ItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class Dependency2EditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4002; >+ >+ /** >+ * @generated >+ */ >+ public Dependency2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Dependency2ItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new Dependency_WithArrow_Polyline(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class Dependency_WithArrow_Polyline extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx { >+ >+ /** >+ * @generated >+ */ >+ public Dependency_WithArrow_Polyline() { >+ >+ this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH); >+ this.setForegroundColor(org.eclipse.draw2d.ColorConstants.lightGray); >+ setTargetDecoration(createTargetDecoration()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.PolylineDecoration createTargetDecoration() { >+ org.eclipse.draw2d.PolylineDecoration df = new org.eclipse.draw2d.PolylineDecoration(); >+ // dispatchNext? >+ >+ org.eclipse.draw2d.geometry.PointList pl = new org.eclipse.draw2d.geometry.PointList(); >+ pl.addPoint(-1, 1); >+ pl.addPoint(0, 0); >+ pl.addPoint(-1, -1); >+ df.setTemplate(pl); >+ df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3)); >+ >+ return df; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecificationNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,551 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class InstanceSpecificationNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5010; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public InstanceSpecificationNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.InstanceSpecification_2008; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataType2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataType2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DataType2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DataType2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,542 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DataType2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class DataType2EditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2004; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public DataType2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy() { >+ >+ public Command getCommand(Request request) { >+ if (understandsRequest(request)) { >+ if (request instanceof CreateViewAndElementRequest) { >+ CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); >+ IElementType type = (IElementType) adapter.getAdapter(IElementType.class); >+ if (type == UMLElementTypes.Property_3014) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(DataTypeAttributesEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Operation_3015) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(DataTypeOperationsEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ } >+ return super.getCommand(request); >+ } >+ return null; >+ } >+ }); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DataType2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ClassFigure figure = new ClassFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure getPrimaryShape() { >+ return (ClassFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof DataTypeAttributesEditPart) { >+ return getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ } >+ if (editPart instanceof DataTypeOperationsEditPart) { >+ return getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof DataTypeNameEditPart) { >+ ((DataTypeNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureClassFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof DataTypeAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((DataTypeAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof DataTypeOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((DataTypeOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof DataTypeAttributesEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_PropertiesCompartment(); >+ pane.remove(((DataTypeAttributesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof DataTypeOperationsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureClassFigure_OperationsCompartment(); >+ pane.remove(((DataTypeOperationsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(DataTypeNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ClassFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ClassFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ this.setFill(false); >+ this.setOutline(false); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25))); >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter0 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ fig_0.setLayoutManager(layouter0); >+ >+ setFigureClassFigure_NameContainer(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 2; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureClassFigure_name(fig_1); >+ >+ Object layData1 = null; >+ >+ fig_0.add(fig_1, layData1); >+ org.eclipse.draw2d.RectangleFigure fig_2 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ org.eclipse.draw2d.ToolbarLayout layouter2 = new org.eclipse.draw2d.ToolbarLayout(); >+ layouter2.setStretchMinorAxis(true); >+ layouter2.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER); >+ layouter2.setSpacing(0); >+ layouter2.setVertical(true); >+ >+ fig_2.setLayoutManager(layouter2); >+ >+ setFigureClassFigure_Body(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 2; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = true; >+ >+ this.add(fig_2, layData2); >+ org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_PropertiesCompartment(fig_3); >+ >+ Object layData3 = null; >+ >+ fig_2.add(fig_3, layData3); >+ org.eclipse.draw2d.RectangleFigure fig_4 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OperationsCompartment(fig_4); >+ >+ Object layData4 = null; >+ >+ fig_2.add(fig_4, layData4); >+ org.eclipse.draw2d.RectangleFigure fig_5 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_ClassesCompartment(fig_5); >+ >+ Object layData5 = null; >+ >+ fig_2.add(fig_5, layData5); >+ org.eclipse.draw2d.RectangleFigure fig_6 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_LiteralsCompartment(fig_6); >+ >+ Object layData6 = null; >+ >+ fig_2.add(fig_6, layData6); >+ org.eclipse.draw2d.RectangleFigure fig_7 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigureClassFigure_OthersCompartment(fig_7); >+ >+ Object layData7 = null; >+ >+ fig_2.add(fig_7, layData7); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_NameContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_NameContainer() { >+ return fClassFigure_NameContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_NameContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fClassFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureClassFigure_name() { >+ return fClassFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fClassFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_Body; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_Body() { >+ return fClassFigure_Body; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_Body(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_Body = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_PropertiesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_PropertiesCompartment() { >+ return fClassFigure_PropertiesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_PropertiesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_PropertiesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OperationsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OperationsCompartment() { >+ return fClassFigure_OperationsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OperationsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OperationsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_ClassesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_ClassesCompartment() { >+ return fClassFigure_ClassesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_ClassesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_ClassesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_LiteralsCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_LiteralsCompartment() { >+ return fClassFigure_LiteralsCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_LiteralsCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_LiteralsCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fClassFigure_OthersCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureClassFigure_OthersCompartment() { >+ return fClassFigure_OthersCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureClassFigure_OthersCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fClassFigure_OthersCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintConstrainedElementEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintConstrainedElementEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintConstrainedElementEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ConstraintConstrainedElementEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,65 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ConstraintConstrainedElementItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLReferenceConnectionEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class ConstraintConstrainedElementEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4004; >+ >+ /** >+ * @generated >+ */ >+ public ConstraintConstrainedElementEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.CONNECTION_ROLE, new UMLReferenceConnectionEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ConstraintConstrainedElementItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new DashedLineConnection(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class DashedLineConnection extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx { >+ >+ /** >+ * @generated >+ */ >+ public DashedLineConnection() { >+ >+ this.setLineStyle(org.eclipse.draw2d.Graphics.LINE_DASH); >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DependencyEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,301 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Iterator; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editparts.LayerManager; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.editpolicies.ResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DependencyItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class DependencyEditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2009; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public DependencyEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DependencyItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected void decorateChild(EditPart child) { >+ if (isExternalLabel(child)) { >+ return; >+ } >+ super.decorateChild(child); >+ } >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() { >+ >+ protected boolean isExternalLabel(EditPart editPart) { >+ return DependencyEditPart.this.isExternalLabel(editPart); >+ } >+ }; >+ xlep.setRealLayoutEditPolicy(lep); >+ return xlep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ DependencyNode figure = new DependencyNode(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public DependencyNode getPrimaryShape() { >+ return (DependencyNode) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (isExternalLabel(editPart)) { >+ return getExternalLabelsContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(10), getMapMode().DPtoLP(10)); >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPolicy getPrimaryDragEditPolicy() { >+ EditPolicy result = super.getPrimaryDragEditPolicy(); >+ if (result instanceof ResizableEditPolicy) { >+ ResizableEditPolicy ep = (ResizableEditPolicy) result; >+ >+ ep.setResizeDirections(PositionConstants.NONE); >+ >+ } >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(DependencyNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isExternalLabel(EditPart childEditPart) { >+ if (childEditPart instanceof DependencyNameEditPart) { >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getExternalLabelsContainer() { >+ LayerManager root = (LayerManager) getRoot(); >+ return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().add(labelFigure); >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void removeNotify() { >+ for (Iterator it = getChildren().iterator(); it.hasNext();) { >+ EditPart childEditPart = (EditPart) it.next(); >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ } >+ } >+ super.removeNotify(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class DependencyNode extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public DependencyNode() { >+ >+ this.setBackgroundColor(org.eclipse.draw2d.ColorConstants.darkGray); >+ this.setPreferredSize(getMapMode().DPtoLP(10), getMapMode().DPtoLP(10)); >+ this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(10), getMapMode().DPtoLP(10))); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,533 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationNameEditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6003; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(AssociationNameEditPart.VISUAL_ID), new Point(0, 40)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public AssociationNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.MIDDLE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Association_4005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/UsageItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/UsageItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/UsageItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/UsageItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+ >+/** >+ * @generated >+ */ >+public class UsageItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName3EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName3EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName3EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName3EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,533 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationName3EditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6005; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(AssociationName3EditPart.VISUAL_ID), new Point(0, -15)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public AssociationName3EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.SOURCE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Association_4005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation4ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation4ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation4ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Operation4ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Operation4ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/GeneralizationItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/GeneralizationItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/GeneralizationItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/GeneralizationItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+ >+/** >+ * @generated >+ */ >+public class GeneralizationItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackagePackagesItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PackagePackagesItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PackagePackagesItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PackagePackagesItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,72 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PackagePackagesItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Package_3006 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreatePackage_3006Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePackage_3006Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePackage_3006Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Package newElement = (org.eclipse.uml2.uml.Package) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Package_3006.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceRealizationEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceRealizationEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceRealizationEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceRealizationEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,48 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.Connection; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.InterfaceRealizationItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class InterfaceRealizationEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4008; >+ >+ /** >+ * @generated >+ */ >+ public InterfaceRealizationEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InterfaceRealizationItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new PolylineConnectionEx(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeAttributesEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeAttributesEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeAttributesEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/DataTypeAttributesEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DataTypeAttributesCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.DataTypeAttributesItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class DataTypeAttributesEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7017; >+ >+ /** >+ * @generated >+ */ >+ public DataTypeAttributesEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "attributes"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new DataTypeAttributesItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new DataTypeAttributesCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Package3EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Package3EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Package3EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Package3EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Package3ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Package3EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3006; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Package3EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Package3ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Package_3006; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassAttributesItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassAttributesItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassAttributesItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/AssociationClassAttributesItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassAttributesItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Property_3019 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreateProperty_3019Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateProperty_3019Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateProperty_3019Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociationClass(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Property_3019.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName6EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName6EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName6EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName6EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,533 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationName6EditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6008; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(AssociationName6EditPart.VISUAL_ID), new Point(0, 15)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public AssociationName6EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.TARGET; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Association_4005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/PropertyItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/PropertyItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/PropertyItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/PropertyItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class PropertyItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeAttributesCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeAttributesCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeAttributesCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeAttributesCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Property3EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.DataType; >+ >+/** >+ * @generated >+ */ >+public class DataTypeAttributesCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((DataType) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Property3EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PackageEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PackageCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.PackageItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PackageEditPart extends DiagramEditPart { >+ >+ /** >+ * @generated >+ */ >+ public final static String MODEL_ID = "UMLClass"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 1000; >+ >+ /** >+ * @generated >+ */ >+ public PackageEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PackageItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PackageCanonicalEditPolicy()); >+ >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName7EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName7EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName7EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationName7EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,533 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.ConnectionLocator; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationName7EditPart extends LabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 6009; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(AssociationName7EditPart.VISUAL_ID), new Point(0, 15)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public AssociationName7EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getKeyPoint() { >+ return ConnectionLocator.SOURCE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Association_4005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ClassItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ClassEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3007; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ClassEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ClassItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Class_3007; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Package2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Package2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Package2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Package2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,595 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Package2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Package2EditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2002; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public Package2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy() { >+ >+ public Command getCommand(Request request) { >+ if (understandsRequest(request)) { >+ if (request instanceof CreateViewAndElementRequest) { >+ CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); >+ IElementType type = (IElementType) adapter.getAdapter(IElementType.class); >+ if (type == UMLElementTypes.Package_3006) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PackagePackagesEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Class_3007) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PackageClassifiersEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.DataType_3008) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PackageClassifiersEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.PrimitiveType_3009) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PackageClassifiersEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.Enumeration_3011) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PackageClassifiersEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.AssociationClass_3012) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PackageClassifiersEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ if (type == UMLElementTypes.InstanceSpecification_3013) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(PackageOtherEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ } >+ return super.getCommand(request); >+ } >+ return null; >+ } >+ }); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Package2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ PackageFigure figure = new PackageFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public PackageFigure getPrimaryShape() { >+ return (PackageFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof PackagePackagesEditPart) { >+ return getPrimaryShape().getFigurePackageFigure_PackagesCompartment(); >+ } >+ if (editPart instanceof PackageClassifiersEditPart) { >+ return getPrimaryShape().getFigurePackageFigure_ClassesCompartment(); >+ } >+ if (editPart instanceof PackageOtherEditPart) { >+ return getPrimaryShape().getFigurePackageFigure_OthersCompartment(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof PackageNameEditPart) { >+ ((PackageNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigurePackageFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof PackagePackagesEditPart) { >+ IFigure pane = getPrimaryShape().getFigurePackageFigure_PackagesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((PackagePackagesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PackageClassifiersEditPart) { >+ IFigure pane = getPrimaryShape().getFigurePackageFigure_ClassesCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((PackageClassifiersEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PackageOtherEditPart) { >+ IFigure pane = getPrimaryShape().getFigurePackageFigure_OthersCompartment(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((PackageOtherEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof PackagePackagesEditPart) { >+ IFigure pane = getPrimaryShape().getFigurePackageFigure_PackagesCompartment(); >+ pane.remove(((PackagePackagesEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PackageClassifiersEditPart) { >+ IFigure pane = getPrimaryShape().getFigurePackageFigure_ClassesCompartment(); >+ pane.remove(((PackageClassifiersEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PackageOtherEditPart) { >+ IFigure pane = getPrimaryShape().getFigurePackageFigure_OthersCompartment(); >+ pane.remove(((PackageOtherEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(80)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(PackageNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class PackageFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public PackageFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 2; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ this.setFill(false); >+ this.setOutline(false); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setPreferredSize(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25)); >+ fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25))); >+ >+ setFigurePackageFigure_AuxLeftTab(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 1; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.draw2d.RectangleFigure fig_1 = new org.eclipse.draw2d.RectangleFigure(); >+ fig_1.setFill(false); >+ fig_1.setOutline(false); >+ fig_1.setPreferredSize(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25)); >+ fig_1.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25))); >+ >+ setFigurePackageFigure_AuxRightPadding(fig_1); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData1.horizontalIndent = 0; >+ layData1.horizontalSpan = 1; >+ layData1.verticalSpan = 1; >+ layData1.grabExcessHorizontalSpace = true; >+ layData1.grabExcessVerticalSpace = false; >+ >+ this.add(fig_1, layData1); >+ org.eclipse.draw2d.RectangleFigure fig_2 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_2.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(25))); >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter2 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ fig_2.setLayoutManager(layouter2); >+ >+ setFigurePackageFigure_NameContainer(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 2; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = false; >+ >+ this.add(fig_2, layData2); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_3 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigurePackageFigure_name(fig_3); >+ >+ Object layData3 = null; >+ >+ fig_2.add(fig_3, layData3); >+ org.eclipse.draw2d.RectangleFigure fig_4 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ org.eclipse.draw2d.ToolbarLayout layouter4 = new org.eclipse.draw2d.ToolbarLayout(); >+ layouter4.setStretchMinorAxis(true); >+ layouter4.setMinorAlignment(org.eclipse.draw2d.ToolbarLayout.ALIGN_CENTER); >+ layouter4.setSpacing(0); >+ layouter4.setVertical(true); >+ >+ fig_4.setLayoutManager(layouter4); >+ >+ setFigurePackageFigure_Body(fig_4); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData4 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData4.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData4.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData4.horizontalIndent = 0; >+ layData4.horizontalSpan = 2; >+ layData4.verticalSpan = 1; >+ layData4.grabExcessHorizontalSpace = true; >+ layData4.grabExcessVerticalSpace = true; >+ >+ this.add(fig_4, layData4); >+ org.eclipse.draw2d.RectangleFigure fig_5 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigurePackageFigure_PackagesCompartment(fig_5); >+ >+ Object layData5 = null; >+ >+ fig_4.add(fig_5, layData5); >+ org.eclipse.draw2d.RectangleFigure fig_6 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigurePackageFigure_ClassesCompartment(fig_6); >+ >+ Object layData6 = null; >+ >+ fig_4.add(fig_6, layData6); >+ org.eclipse.draw2d.RectangleFigure fig_7 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ setFigurePackageFigure_OthersCompartment(fig_7); >+ >+ Object layData7 = null; >+ >+ fig_4.add(fig_7, layData7); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fPackageFigure_AuxLeftTab; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigurePackageFigure_AuxLeftTab() { >+ return fPackageFigure_AuxLeftTab; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigurePackageFigure_AuxLeftTab(org.eclipse.draw2d.RectangleFigure fig) { >+ fPackageFigure_AuxLeftTab = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fPackageFigure_AuxRightPadding; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigurePackageFigure_AuxRightPadding() { >+ return fPackageFigure_AuxRightPadding; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigurePackageFigure_AuxRightPadding(org.eclipse.draw2d.RectangleFigure fig) { >+ fPackageFigure_AuxRightPadding = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fPackageFigure_NameContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigurePackageFigure_NameContainer() { >+ return fPackageFigure_NameContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigurePackageFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fPackageFigure_NameContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fPackageFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigurePackageFigure_name() { >+ return fPackageFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigurePackageFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fPackageFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fPackageFigure_Body; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigurePackageFigure_Body() { >+ return fPackageFigure_Body; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigurePackageFigure_Body(org.eclipse.draw2d.RectangleFigure fig) { >+ fPackageFigure_Body = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fPackageFigure_PackagesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigurePackageFigure_PackagesCompartment() { >+ return fPackageFigure_PackagesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigurePackageFigure_PackagesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fPackageFigure_PackagesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fPackageFigure_ClassesCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigurePackageFigure_ClassesCompartment() { >+ return fPackageFigure_ClassesCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigurePackageFigure_ClassesCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fPackageFigure_ClassesCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fPackageFigure_OthersCompartment; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigurePackageFigure_OthersCompartment() { >+ return fPackageFigure_OthersCompartment; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigurePackageFigure_OthersCompartment(org.eclipse.draw2d.RectangleFigure fig) { >+ fPackageFigure_OthersCompartment = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeOperationsCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeOperationsCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeOperationsCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeOperationsCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.Operation3EditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.DataType; >+ >+/** >+ * @generated >+ */ >+public class DataTypeOperationsCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((DataType) modelObject).getOwnedOperations().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (Operation3EditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassAttributesEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassAttributesEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassAttributesEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassAttributesEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ClassAttributesCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.ClassAttributesItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class ClassAttributesEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7001; >+ >+ /** >+ * @generated >+ */ >+ public ClassAttributesEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "attributes"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ClassAttributesItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ClassAttributesCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeOperationsItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeOperationsItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeOperationsItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DataTypeOperationsItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Operation; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class DataTypeOperationsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Operation_3015 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getDataType_OwnedOperation()); >+ } >+ return getMSLWrapper(new CreateOperation_3015Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateOperation_3015Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateOperation_3015Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getDataType(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Operation newElement = (Operation) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Operation_3015.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/AssociationClassNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,551 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class AssociationClassNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5009; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public AssociationClassNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.AssociationClass_2007; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/InterfaceEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,301 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Iterator; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editparts.LayerManager; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.editpolicies.ResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.InterfaceItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class InterfaceEditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2010; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public InterfaceEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InterfaceItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected void decorateChild(EditPart child) { >+ if (isExternalLabel(child)) { >+ return; >+ } >+ super.decorateChild(child); >+ } >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() { >+ >+ protected boolean isExternalLabel(EditPart editPart) { >+ return InterfaceEditPart.this.isExternalLabel(editPart); >+ } >+ }; >+ xlep.setRealLayoutEditPolicy(lep); >+ return xlep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ProvidedInterfaceCircleFigure figure = new ProvidedInterfaceCircleFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ProvidedInterfaceCircleFigure getPrimaryShape() { >+ return (ProvidedInterfaceCircleFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (isExternalLabel(editPart)) { >+ return getExternalLabelsContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPolicy getPrimaryDragEditPolicy() { >+ EditPolicy result = super.getPrimaryDragEditPolicy(); >+ if (result instanceof ResizableEditPolicy) { >+ ResizableEditPolicy ep = (ResizableEditPolicy) result; >+ >+ ep.setResizeDirections(PositionConstants.NONE); >+ >+ } >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isExternalLabel(EditPart childEditPart) { >+ if (childEditPart instanceof InterfaceNameEditPart) { >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getExternalLabelsContainer() { >+ LayerManager root = (LayerManager) getRoot(); >+ return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().add(labelFigure); >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void removeNotify() { >+ for (Iterator it = getChildren().iterator(); it.hasNext();) { >+ EditPart childEditPart = (EditPart) it.next(); >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ } >+ } >+ super.removeNotify(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ProvidedInterfaceCircleFigure extends org.eclipse.draw2d.Ellipse { >+ >+ /** >+ * @generated >+ */ >+ public ProvidedInterfaceCircleFigure() { >+ >+ this.setPreferredSize(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationOperationsEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationOperationsEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationOperationsEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/EnumerationOperationsEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,67 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.EnumerationOperationsCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.EnumerationOperationsItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class EnumerationOperationsEditPart extends ListCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7015; >+ >+ /** >+ * @generated >+ */ >+ public EnumerationOperationsEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean hasModelChildrenChanged(Notification evt) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "operations"; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new EnumerationOperationsItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new EnumerationOperationsCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralsCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralsCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralsCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/EnumerationLiteralsCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.parts.EnumerationLiteralEditPart; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.Enumeration; >+ >+/** >+ * @generated >+ */ >+public class EnumerationLiteralsCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((Enumeration) modelObject).getOwnedLiterals().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (EnumerationLiteralEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/Package2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/Package2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/Package2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/Package2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class Package2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property3EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/Property3EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/Property3EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/Property3EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,553 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.DragTracker; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.requests.SelectionRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.Property3ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextNonResizableEditPolicy; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class Property3EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3014; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public Property3EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public DragTracker getDragTracker(Request request) { >+ if (request instanceof SelectionRequest && ((SelectionRequest) request).getLastButtonPressed() == 3) { >+ return null; >+ } >+ return new DragEditPartsTrackerEx(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Property3ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new UMLTextNonResizableEditPolicy()); >+ installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Property_3014; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/OperationItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/OperationItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/OperationItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/OperationItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,255 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class OperationItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintConstrainedElementItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintConstrainedElementItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintConstrainedElementItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ConstraintConstrainedElementItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,18 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; >+ >+/** >+ * @generated >+ */ >+public class ConstraintConstrainedElementItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) { >+ return getMSLWrapper(new DestroyReferenceCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/ClassNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,551 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ClassNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5003; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ClassNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Class_2001; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataType2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/DataType2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/DataType2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/DataType2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,455 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Association; >+import org.eclipse.uml2.uml.Classifier; >+import org.eclipse.uml2.uml.Constraint; >+import org.eclipse.uml2.uml.Dependency; >+import org.eclipse.uml2.uml.Generalization; >+import org.eclipse.uml2.uml.NamedElement; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+import org.eclipse.uml2.uml.Usage; >+ >+/** >+ * @generated >+ */ >+public class DataType2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.Generalization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingGeneralization4001Command(req) : getCreateCompleteIncomingGeneralization4001Command(req); >+ } >+ if (UMLElementTypes.Dependency_4002 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingDependency4002Command(req) : getCreateCompleteIncomingDependency4002Command(req); >+ } >+ if (UMLElementTypes.Property_4003 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingProperty4003Command(req); >+ } >+ if (UMLElementTypes.ConstraintConstrainedElement_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(req); >+ } >+ if (UMLElementTypes.Association_4005 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingAssociation4005Command(req) : getCreateCompleteIncomingAssociation4005Command(req); >+ } >+ if (UMLElementTypes.DependencySupplier_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Supplier4006Command(req); >+ } >+ if (UMLElementTypes.DependencyClient_4007 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingDependency_Client4007Command(req); >+ } >+ if (UMLElementTypes.Usage_4009 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingUsage4009Command(req) : getCreateCompleteIncomingUsage4009Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingGeneralization4001Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Classifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Classifier element = (Classifier) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getClassifier_Generalization()); >+ } >+ return getMSLWrapper(new CreateIncomingGeneralization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingGeneralization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingGeneralization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Generalization newElement = (Generalization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setGeneral((Classifier) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingDependency4002Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency4002Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingDependency4002Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingDependency4002Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingDependency4002Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Dependency newElement = (Dependency) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingProperty4003Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Association)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final Association element = (Association) req.getSource(); >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getAssociation_OwnedEnd()); >+ } >+ return getMSLWrapper(new CreateIncomingProperty4003Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingProperty4003Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingProperty4003Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getAssociation(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setType((Type) getTarget()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingConstraint_ConstrainedElement4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Constraint)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Constraint element = (Constraint) req.getSource(); >+ if (element.getConstrainedElements().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getConstraint_ConstrainedElement(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingAssociation4005Command(CreateRelationshipRequest req) { >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Type)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingAssociation4005Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ private static class CreateIncomingAssociation4005Command extends CreateAssociationCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingAssociation4005Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated NOT >+ */ >+ protected EObject doDefaultElementCreation() { >+ return super.doDefaultElementCreation(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Supplier4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getSuppliers().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Supplier(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingDependency_Client4007Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Dependency)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Dependency element = (Dependency) req.getSource(); >+ if (element.getClients().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getDependency_Client(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingUsage4009Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingUsage4009Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof NamedElement)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final org.eclipse.uml2.uml.Package element = (org.eclipse.uml2.uml.Package) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getPackage(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.Usage_4009.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateIncomingUsage4009Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingUsage4009Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingUsage4009Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Usage newElement = (Usage) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.getSuppliers().add((NamedElement) getTarget()); >+ newElement.getClients().add((NamedElement) getSource()); >+ } >+ return newElement; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/PrimitiveTypeNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,551 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.RunnableWithResult; >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gef.requests.DirectEditRequest; >+import org.eclipse.gef.tools.DirectEditManager; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.jface.viewers.ICellEditorValidator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.accessibility.AccessibleEvent; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.clazz.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PrimitiveTypeNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5007; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public PrimitiveTypeNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.PrimitiveType_2005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecification2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecification2EditPart.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecification2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/parts/InstanceSpecification2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,458 @@ >+package org.eclipse.uml2.diagram.clazz.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.requests.CreateRequest; >+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.edit.policies.InstanceSpecification2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.clazz.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class InstanceSpecification2EditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2008; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public InstanceSpecification2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy() { >+ >+ public Command getCommand(Request request) { >+ if (understandsRequest(request)) { >+ if (request instanceof CreateViewAndElementRequest) { >+ CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); >+ IElementType type = (IElementType) adapter.getAdapter(IElementType.class); >+ if (type == UMLElementTypes.Slot_3017) { >+ EditPart compartmentEditPart = getChildBySemanticHint(UMLVisualIDRegistry.getType(InstanceSpecificationSlotsEditPart.VISUAL_ID)); >+ return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); >+ } >+ } >+ return super.getCommand(request); >+ } >+ return null; >+ } >+ }); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InstanceSpecification2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ InstanceNodeFigure figure = new InstanceNodeFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public InstanceNodeFigure getPrimaryShape() { >+ return (InstanceNodeFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof InstanceSpecificationSlotsEditPart) { >+ return getPrimaryShape().getFigureInstanceNode_SlotsCompartmentFigure(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof InstanceSpecificationNameEditPart) { >+ ((InstanceSpecificationNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureInstanceNode_NameLabel()); >+ return true; >+ } >+ if (childEditPart instanceof InstanceSpecificationSlotsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureInstanceNode_SlotsCompartmentFigure(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((InstanceSpecificationSlotsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof InstanceSpecificationSlotsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureInstanceNode_SlotsCompartmentFigure(); >+ pane.remove(((InstanceSpecificationSlotsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(40), getMapMode().DPtoLP(40)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(InstanceSpecificationNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class InstanceNodeFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.Border createBorder_InstanceNode_NameLabel_1() { >+ org.eclipse.gmf.runtime.draw2d.ui.figures.OneLineBorder result = new org.eclipse.gmf.runtime.draw2d.ui.figures.OneLineBorder(); >+ >+ result.setPosition(org.eclipse.draw2d.PositionConstants.BOTTOM); >+ >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ public InstanceNodeFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setOutline(false); >+ fig_0.setBorder(createBorder_InstanceNode_NameLabel_1()); >+ >+ org.eclipse.draw2d.StackLayout layouter0 = new org.eclipse.draw2d.StackLayout(); >+ >+ fig_0.setLayoutManager(layouter0); >+ >+ setFigureInstanceNode_NameContainerFigure(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 1; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureInstanceNode_NameLabel(fig_1); >+ >+ Object layData1 = null; >+ >+ fig_0.add(fig_1, layData1); >+ org.eclipse.draw2d.RectangleFigure fig_2 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_2.setOutline(false); >+ >+ org.eclipse.draw2d.StackLayout layouter2 = new org.eclipse.draw2d.StackLayout(); >+ >+ fig_2.setLayoutManager(layouter2); >+ >+ setFigureInstanceSpecification_SpecificationContainerFigure(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 1; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = false; >+ >+ this.add(fig_2, layData2); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_3 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureInstanceNode_SpecificationLabel(fig_3); >+ >+ Object layData3 = null; >+ >+ fig_2.add(fig_3, layData3); >+ org.eclipse.draw2d.RectangleFigure fig_4 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_4.setOutline(false); >+ >+ setFigureInstanceNode_SlotsCompartmentFigure(fig_4); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData4 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData4.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData4.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData4.horizontalIndent = 0; >+ layData4.horizontalSpan = 1; >+ layData4.verticalSpan = 1; >+ layData4.grabExcessHorizontalSpace = true; >+ layData4.grabExcessVerticalSpace = true; >+ >+ this.add(fig_4, layData4); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fInstanceNode_NameContainerFigure; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureInstanceNode_NameContainerFigure() { >+ return fInstanceNode_NameContainerFigure; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureInstanceNode_NameContainerFigure(org.eclipse.draw2d.RectangleFigure fig) { >+ fInstanceNode_NameContainerFigure = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fInstanceNode_NameLabel; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureInstanceNode_NameLabel() { >+ return fInstanceNode_NameLabel; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureInstanceNode_NameLabel(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fInstanceNode_NameLabel = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fInstanceSpecification_SpecificationContainerFigure; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureInstanceSpecification_SpecificationContainerFigure() { >+ return fInstanceSpecification_SpecificationContainerFigure; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureInstanceSpecification_SpecificationContainerFigure(org.eclipse.draw2d.RectangleFigure fig) { >+ fInstanceSpecification_SpecificationContainerFigure = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fInstanceNode_SpecificationLabel; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureInstanceNode_SpecificationLabel() { >+ return fInstanceNode_SpecificationLabel; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureInstanceNode_SpecificationLabel(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fInstanceNode_SpecificationLabel = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fInstanceNode_SlotsCompartmentFigure; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureInstanceNode_SlotsCompartmentFigure() { >+ return fInstanceNode_SlotsCompartmentFigure; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureInstanceNode_SlotsCompartmentFigure(org.eclipse.draw2d.RectangleFigure fig) { >+ fInstanceNode_SlotsCompartmentFigure = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLTextSelectionEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLTextSelectionEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLTextSelectionEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/UMLTextSelectionEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,192 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.draw2d.ColorConstants; >+import org.eclipse.draw2d.Figure; >+import org.eclipse.draw2d.Graphics; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.RectangleFigure; >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.LayerConstants; >+import org.eclipse.gef.editpolicies.SelectionEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+/** >+ * @generated >+ */ >+public class UMLTextSelectionEditPolicy extends SelectionEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ private IFigure selectionFeedbackFigure; >+ >+ /** >+ * @generated >+ */ >+ private IFigure focusFeedbackFigure; >+ >+ /** >+ * @generated >+ */ >+ protected void showPrimarySelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(true); >+ ((WrapLabel) getHostFigure()).setFocus(true); >+ } else { >+ showSelection(); >+ showFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void showSelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(true); >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ hideSelection(); >+ addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure()); >+ refreshSelectionFeedback(); >+ hideFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void hideSelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(false); >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ if (selectionFeedbackFigure != null) { >+ removeFeedback(selectionFeedbackFigure); >+ selectionFeedbackFigure = null; >+ } >+ hideFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void showFocus() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setFocus(true); >+ } else { >+ hideFocus(); >+ addFeedback(focusFeedbackFigure = createFocusFeedbackFigure()); >+ refreshFocusFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void hideFocus() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ if (focusFeedbackFigure != null) { >+ removeFeedback(focusFeedbackFigure); >+ focusFeedbackFigure = null; >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getFeedbackLayer() { >+ return getLayer(LayerConstants.SCALED_FEEDBACK_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Rectangle getFeedbackBounds() { >+ Rectangle bounds; >+ if (getHostFigure() instanceof Label) { >+ bounds = ((Label) getHostFigure()).getTextBounds(); >+ bounds.intersect(getHostFigure().getBounds()); >+ } else { >+ bounds = getHostFigure().getBounds().getCopy(); >+ } >+ getHostFigure().getParent().translateToAbsolute(bounds); >+ getFeedbackLayer().translateToRelative(bounds); >+ return bounds; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createSelectionFeedbackFigure() { >+ if (getHostFigure() instanceof Label) { >+ Label feedbackFigure = new Label(); >+ feedbackFigure.setOpaque(true); >+ feedbackFigure.setBackgroundColor(ColorConstants.menuBackgroundSelected); >+ feedbackFigure.setForegroundColor(ColorConstants.menuForegroundSelected); >+ return feedbackFigure; >+ } else { >+ RectangleFigure feedbackFigure = new RectangleFigure(); >+ feedbackFigure.setFill(false); >+ return feedbackFigure; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFocusFeedbackFigure() { >+ return new Figure() { >+ >+ protected void paintFigure(Graphics graphics) { >+ graphics.drawFocus(getBounds().getResized(-1, -1)); >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void updateLabel(Label target) { >+ Label source = (Label) getHostFigure(); >+ target.setText(source.getText()); >+ target.setTextAlignment(source.getTextAlignment()); >+ target.setFont(source.getFont()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshSelectionFeedback() { >+ if (selectionFeedbackFigure != null) { >+ if (selectionFeedbackFigure instanceof Label) { >+ updateLabel((Label) selectionFeedbackFigure); >+ selectionFeedbackFigure.setBounds(getFeedbackBounds()); >+ } else { >+ selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5, 5)); >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFocusFeedback() { >+ if (focusFeedbackFigure != null) { >+ focusFeedbackFigure.setBounds(getFeedbackBounds()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void refreshFeedback() { >+ refreshSelectionFeedback(); >+ refreshFocusFeedback(); >+ } >+} >Index: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassAttributesItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassAttributesItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassAttributesItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/clazz/edit/policies/ClassAttributesItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.clazz.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.clazz.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Property; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class ClassAttributesItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Property_3001 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreateProperty_3001Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateProperty_3001Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateProperty_3001Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClass_(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Property newElement = (Property) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Property_3001.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 80318
:
52154
|
52848
| 52849 |
52850