Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorptessier2012-04-17 14:37:02 +0000
committerptessier2012-04-17 14:37:02 +0000
commit753e3c2ae3b8cd85f6615fcc2bf94187874c5610 (patch)
tree6b59c9643c41f9ef7b8a6582d948d42ba7966d2f /plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase
parentb01956beb90941d91bf774a43dcfce2a2d09f8d7 (diff)
downloadorg.eclipse.papyrus-753e3c2ae3b8cd85f6615fcc2bf94187874c5610.tar.gz
org.eclipse.papyrus-753e3c2ae3b8cd85f6615fcc2bf94187874c5610.tar.xz
org.eclipse.papyrus-753e3c2ae3b8cd85f6615fcc2bf94187874c5610.zip
376980: [Use Case] display Actor as a default Named Element
https://bugs.eclipse.org/bugs/show_bug.cgi?id=376980
Diffstat (limited to 'plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase')
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/command/CustomSubjectClassifierCreateCommandTN.java27
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomDefaultNamedElementItemSemanticEditPolicyTN.java53
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomUseCaseDiagramItemSemanticEditPolicy.java47
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/figure/UseCaseClassifierFigure.java7
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/ChangetoActorShapeHandler.java49
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/DefaultNamedElementHandler.java3
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/SubjectHandler.java6
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/AbstractSubjectMetaclassesSelectionDialog.java5
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/SubjectSelectionDialog.java32
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/models/usecaseDiagram.gmfgen15
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/plugin.xml18
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/parts/DefaultNamedElementEditPartTN.java2
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/UMLBaseItemSemanticEditPolicy.java58
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/expressions/UMLOCLFactory.java4
14 files changed, 208 insertions, 118 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/command/CustomSubjectClassifierCreateCommandTN.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/command/CustomSubjectClassifierCreateCommandTN.java
index 9f73fa051c8..b8d139c8375 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/command/CustomSubjectClassifierCreateCommandTN.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/command/CustomSubjectClassifierCreateCommandTN.java
@@ -37,13 +37,13 @@ import org.eclipse.swt.widgets.Shell;
import org.eclipse.uml2.uml.Classifier;
/**
- *specific command to create a subject
- *
+ * specific command to create a subject
+ *
*/
public class CustomSubjectClassifierCreateCommandTN extends EditElementCommand {
-
- ArrayList<IHintedType> possibleSubject= new ArrayList<IHintedType>();
+ ArrayList<IHintedType> possibleSubject = new ArrayList<IHintedType>();
+
/**
* @generated
*/
@@ -61,14 +61,14 @@ public class CustomSubjectClassifierCreateCommandTN extends EditElementCommand {
super(req.getLabel(), null, req);
this.eObject = eObject;
this.eClass = eObject != null ? eObject.eClass() : null;
- this.possibleSubject=possibleSubject;
+ this.possibleSubject = possibleSubject;
}
/**
* @generated
*/
public static CustomSubjectClassifierCreateCommandTN create(CreateElementRequest req, EObject eObject, ArrayList<IHintedType> possibleSubject) {
- return new CustomSubjectClassifierCreateCommandTN(req, eObject,possibleSubject);
+ return new CustomSubjectClassifierCreateCommandTN(req, eObject, possibleSubject);
}
/**
@@ -105,22 +105,21 @@ public class CustomSubjectClassifierCreateCommandTN extends EditElementCommand {
* @generated
*/
protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
- SubjectSelectionDialog dialog= new SubjectSelectionDialog(new Shell(), possibleSubject, SWT.NATIVE);
+ SubjectSelectionDialog dialog = new SubjectSelectionDialog(new Shell(), possibleSubject, SWT.NATIVE);
dialog.open();
- Classifier newElement=null;
- IHintedType htype=dialog.getSelectedMetaclass();
- EObject element=((CreateElementRequest)getRequest()).getContainer();
- CreateElementRequest createElementRequest= new CreateElementRequest(element, htype);
-
+ Classifier newElement = null;
+ IHintedType htype = dialog.getSelectedMetaclass();
+ EObject element = ((CreateElementRequest)getRequest()).getContainer();
+ CreateElementRequest createElementRequest = new CreateElementRequest(element, htype);
IElementEditService provider = ElementEditServiceUtils.getCommandProvider(element);
if(provider != null) {
// Retrieve delete command from the Element Edit service
ICommand createCommand = provider.getEditCommand(createElementRequest);
createCommand.execute(new NullProgressMonitor(), null);
createCommand.getCommandResult().getReturnValue();
- newElement=(Classifier)createCommand.getCommandResult().getReturnValue();
+ newElement = (Classifier)createCommand.getCommandResult().getReturnValue();
}
- return CommandResult.newOKCommandResult(newElement);
+ return CommandResult.newOKCommandResult(newElement);
}
/**
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomDefaultNamedElementItemSemanticEditPolicyTN.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomDefaultNamedElementItemSemanticEditPolicyTN.java
new file mode 100644
index 00000000000..5e9717af965
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomDefaultNamedElementItemSemanticEditPolicyTN.java
@@ -0,0 +1,53 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.usecase.edit.policies;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
+import org.eclipse.papyrus.uml.diagram.usecase.edit.commands.AssociationCreateCommand;
+import org.eclipse.papyrus.uml.diagram.usecase.providers.UMLElementTypes;
+import org.eclipse.uml2.uml.Actor;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.UseCase;
+
+/**
+ * this class allow creation of association on default named element if this element is a class
+ *
+ */
+public class CustomDefaultNamedElementItemSemanticEditPolicyTN extends DefaultNamedElementItemSemanticEditPolicyTN {
+
+ @Override
+ protected Command getCompleteCreateRelationshipCommand(CreateRelationshipRequest req) {
+ EObject eobject=((GraphicalEditPart)getHost()).resolveSemanticElement();
+ if((eobject instanceof Class)||(eobject instanceof Actor)||(eobject instanceof UseCase)) {
+ if(UMLElementTypes.Association_4011 == req.getElementType()) {
+ return getGEFWrapper(new AssociationCreateCommand(req, req.getSource(), req.getTarget()));
+ }
+ }
+ return super.getCompleteCreateRelationshipCommand(req);
+ }
+
+ @Override
+ protected Command getStartCreateRelationshipCommand(CreateRelationshipRequest req) {
+ EObject eobject=((GraphicalEditPart)getHost()).resolveSemanticElement();
+ if((eobject instanceof Class)||(eobject instanceof Actor)||(eobject instanceof UseCase)) {
+ if(UMLElementTypes.Association_4011 == req.getElementType()) {
+ return getGEFWrapper(new AssociationCreateCommand(req, req.getSource(), req.getTarget()));
+ }
+ }
+ return super.getStartCreateRelationshipCommand(req);
+ }
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomUseCaseDiagramItemSemanticEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomUseCaseDiagramItemSemanticEditPolicy.java
index 4026c6e5ee6..a4e7950c367 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomUseCaseDiagramItemSemanticEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/CustomUseCaseDiagramItemSemanticEditPolicy.java
@@ -27,17 +27,18 @@ import org.eclipse.papyrus.uml.diagram.usecase.command.CustomSubjectClassifierCr
import org.eclipse.papyrus.uml.diagram.usecase.edit.commands.SubjectClassifierCreateCommandTN;
import org.eclipse.papyrus.uml.diagram.usecase.providers.UMLElementTypes;
-
/**
* this class is used to specialize the creation of a subject here a classifier
* before to propose element it test if can create it.
*
* there also the possibility to add parameter to the request in order to precise the semantic to avoid the selecion dialog.
- *
+ *
*/
public class CustomUseCaseDiagramItemSemanticEditPolicy extends UseCaseDiagramItemSemanticEditPolicy {
+
public static final String SUBJECT_SEMANTIC_HINT = "Subject_SemanticHint";
- ArrayList<IHintedType> possibleSubject= new ArrayList<IHintedType>();
+
+ ArrayList<IHintedType> possibleSubject = new ArrayList<IHintedType>();
public CustomUseCaseDiagramItemSemanticEditPolicy() {
possibleSubject.add(org.eclipse.papyrus.uml.service.types.element.UMLElementTypes.CLASS);
@@ -47,56 +48,48 @@ public class CustomUseCaseDiagramItemSemanticEditPolicy extends UseCaseDiagramIt
possibleSubject.add(org.eclipse.papyrus.uml.service.types.element.UMLElementTypes.STATE_MACHINE);
possibleSubject.add(org.eclipse.papyrus.uml.service.types.element.UMLElementTypes.SIGNAL);
}
+
@Override
protected Command getCreateCommand(CreateElementRequest req) {
//the case of the subject the semantic element can be various
- EObject containerElement=req.getContainer();
-
+ EObject containerElement = req.getContainer();
if(UMLElementTypes.Classifier_2015 == req.getElementType()) {
- ArrayList<ICommand> executableCommandCreation=new ArrayList<ICommand>();
- ArrayList<IHintedType> executableHTypeCreation=new ArrayList<IHintedType>();
-
+ ArrayList<ICommand> executableCommandCreation = new ArrayList<ICommand>();
+ ArrayList<IHintedType> executableHTypeCreation = new ArrayList<IHintedType>();
// test if the semantic is preciced
- if(req.getParameter(SUBJECT_SEMANTIC_HINT)!=null){
- IHintedType semanticHint=(IHintedType)req.getParameter(SUBJECT_SEMANTIC_HINT);
- CreateElementRequest createElementRequest= new CreateElementRequest(containerElement, semanticHint);
+ if(req.getParameter(SUBJECT_SEMANTIC_HINT) != null) {
+ IHintedType semanticHint = (IHintedType)req.getParameter(SUBJECT_SEMANTIC_HINT);
+ CreateElementRequest createElementRequest = new CreateElementRequest(containerElement, semanticHint);
IElementEditService provider = ElementEditServiceUtils.getCommandProvider(containerElement);
ICommand createCommand = provider.getEditCommand(createElementRequest);
- if (createCommand.canExecute()){
+ if(createCommand.canExecute()) {
executableCommandCreation.add(createCommand);
executableHTypeCreation.add(semanticHint);
}
- }
- else{
+ } else {
// no precision, so try to find all possibles commands
- for( int i=0; i<possibleSubject.size();i++){
- IHintedType currentHType=possibleSubject.get(i);
-
- CreateElementRequest createElementRequest= new CreateElementRequest(containerElement, currentHType);
+ for(int i = 0; i < possibleSubject.size(); i++) {
+ IHintedType currentHType = possibleSubject.get(i);
+ CreateElementRequest createElementRequest = new CreateElementRequest(containerElement, currentHType);
IElementEditService provider = ElementEditServiceUtils.getCommandProvider(containerElement);
ICommand createCommand = provider.getEditCommand(createElementRequest);
- if (createCommand.canExecute()){
+ if(createCommand.canExecute()) {
executableCommandCreation.add(createCommand);
executableHTypeCreation.add(currentHType);
}
-
}
}
-
//only one command so no dialog
- if(executableCommandCreation.size()==1){
+ if(executableCommandCreation.size() == 1) {
return new ICommandProxy(executableCommandCreation.get(0));
}
// several possible command--> dialog is set.
- else if(executableCommandCreation.size()>1){
- return new ICommandProxy(new CustomSubjectClassifierCreateCommandTN(req, containerElement, executableHTypeCreation));
+ else if(executableCommandCreation.size() > 1) {
+ return new ICommandProxy(new CustomSubjectClassifierCreateCommandTN(req, containerElement, executableHTypeCreation));
}
return getGEFWrapper(new SubjectClassifierCreateCommandTN(req));
}
-
return super.getCreateCommand(req);
-
-
}
}
//SubjectSelectionDialog dialog= new SubjectSelectionDialog(new Shell(), SWT.NATIVE);
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/figure/UseCaseClassifierFigure.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/figure/UseCaseClassifierFigure.java
index 2bd7e2fd925..a59364c8797 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/figure/UseCaseClassifierFigure.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/figure/UseCaseClassifierFigure.java
@@ -20,9 +20,6 @@ import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gmf.runtime.diagram.ui.figures.ShapeCompartmentFigure;
-import org.eclipse.papyrus.uml.diagram.common.figure.node.IEllipseFigure;
-import org.eclipse.papyrus.uml.diagram.common.figure.node.IPapyrusNodeUMLElementFigure;
import org.eclipse.papyrus.uml.diagram.common.figure.node.NodeNamedElementFigure;
/**
@@ -79,8 +76,8 @@ public class UseCaseClassifierFigure extends NodeNamedElementFigure {
fig.invalidate();
Dimension pref = ((IFigure)childrenList.get(i)).getPreferredSize();
fig.invalidate();
- Dimension prefConstraint = ((IFigure)childrenList.get(i)).getPreferredSize(container.getBounds().width , -1);
- bound.setSize(prefConstraint);
+ Dimension prefConstraint = ((IFigure)childrenList.get(i)).getPreferredSize(container.getBounds().width, -1);
+ bound.setSize(prefConstraint);
if(i > 0) {
bound.y = ((IFigure)childrenList.get(i - 1)).getBounds().getBottomLeft().y + 1;
bound.x = getBounds().x + GAP_X;
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/ChangetoActorShapeHandler.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/ChangetoActorShapeHandler.java
new file mode 100644
index 00000000000..d4a91716523
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/ChangetoActorShapeHandler.java
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.usecase.handler;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.papyrus.uml.diagram.usecase.command.ChangetoDefaultShapeCommand;
+import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.DefaultNamedElementEditPartTN;
+import org.eclipse.uml2.uml.Actor;
+
+/**
+ * the goal of this class is to transform a default named element as a subject
+ *
+ *
+ */
+public class ChangetoActorShapeHandler extends ChangeShapeHandler implements IHandler {
+
+ @Override
+ public boolean isEnabled() {
+ GraphicalEditPart editPart = getSelectedGraphicalEditpart();
+ if(((editPart.resolveSemanticElement() instanceof Actor) && (editPart instanceof DefaultNamedElementEditPartTN))) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.uml.diagram.usecase.handler.ChangeShapeHandler#getChangeShapeCommand(org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart)
+ *
+ * @param editPart
+ * @return
+ */
+ protected ChangetoDefaultShapeCommand getChangeShapeCommand(final GraphicalEditPart editPart) {
+ ChangetoDefaultShapeCommand command = new ChangetoDefaultShapeCommand(editPart.getEditingDomain(), editPart);
+ return command;
+ }
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/DefaultNamedElementHandler.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/DefaultNamedElementHandler.java
index 534bc1f51db..66da3cc5c48 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/DefaultNamedElementHandler.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/DefaultNamedElementHandler.java
@@ -18,6 +18,7 @@ import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
import org.eclipse.papyrus.uml.diagram.usecase.command.ElementToDefaultNamedElementShape;
+import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ActorEditPartTN;
import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.SubjectClassifierEditPartTN;
/**
@@ -33,7 +34,7 @@ public class DefaultNamedElementHandler extends ChangeShapeHandler implements IH
@Override
public boolean isEnabled() {
GraphicalEditPart editPart = getSelectedGraphicalEditpart();
- if((editPart instanceof SubjectClassifierEditPartTN)) {
+ if((editPart instanceof SubjectClassifierEditPartTN) || (editPart instanceof ActorEditPartTN)) {
return true;
}
return false;
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/SubjectHandler.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/SubjectHandler.java
index 8de541a4120..eb46b7e8e1f 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/SubjectHandler.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/handler/SubjectHandler.java
@@ -17,7 +17,7 @@ import org.eclipse.core.commands.IHandler;
import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
import org.eclipse.papyrus.uml.diagram.usecase.command.ChangetoDefaultShapeCommand;
import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.SubjectClassifierEditPartTN;
-import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Actor;
/**
* the goal of this class is to transform a default named element as a subject
@@ -29,8 +29,8 @@ public class SubjectHandler extends ChangeShapeHandler implements IHandler {
@Override
public boolean isEnabled() {
GraphicalEditPart editPart = getSelectedGraphicalEditpart();
- if((editPart.resolveSemanticElement() instanceof org.eclipse.uml2.uml.Classifier)) {
- if((editPart instanceof SubjectClassifierEditPartTN) ) {
+ if((editPart.resolveSemanticElement() instanceof org.eclipse.uml2.uml.Classifier && (!(editPart.resolveSemanticElement() instanceof Actor)))) {
+ if((editPart instanceof SubjectClassifierEditPartTN)) {
return false;
} else {
return true;
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/AbstractSubjectMetaclassesSelectionDialog.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/AbstractSubjectMetaclassesSelectionDialog.java
index 06a5a5fecfb..da2d023df3a 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/AbstractSubjectMetaclassesSelectionDialog.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/AbstractSubjectMetaclassesSelectionDialog.java
@@ -64,11 +64,9 @@ public class AbstractSubjectMetaclassesSelectionDialog extends Dialog {
shlmetaclassSelection.setSize(501, 250);
shlmetaclassSelection.setText("Subject Metaclasses Selection");
shlmetaclassSelection.setLayout(new FillLayout(SWT.HORIZONTAL));
-
Composite composite = new Composite(shlmetaclassSelection, SWT.NONE);
composite.setLayout(null);
composite.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
-
Label lblSelectTheAssociation = new Label(composite, SWT.NONE);
lblSelectTheAssociation.setLocation(24, 10);
lblSelectTheAssociation.setSize(441, 30);
@@ -78,14 +76,11 @@ public class AbstractSubjectMetaclassesSelectionDialog extends Dialog {
lblSelectTheAssociation.setFont(Activator.getFontManager().get(fontdatas));
table = new Table(composite, SWT.BORDER | SWT.FULL_SELECTION);
table.setBounds(25, 48, 440, 130);
-
btnOk = new Button(composite, SWT.NONE);
btnOk.setBounds(396, 180, 68, 23);
btnOk.setText("Ok");
-
btnCancel = new Button(composite, SWT.NONE);
btnCancel.setBounds(291, 180, 68, 23);
btnCancel.setText("Cancel");
-
}
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/SubjectSelectionDialog.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/SubjectSelectionDialog.java
index ba7ae76488b..bd31458def5 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/SubjectSelectionDialog.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/custom-src/org/eclipse/papyrus/uml/diagram/usecase/ui/SubjectSelectionDialog.java
@@ -11,39 +11,25 @@
* CEA LIST - Initial API and implementation
*
*****************************************************************************/
-
package org.eclipse.papyrus.uml.diagram.usecase.ui;
import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.gmf.runtime.emf.type.core.IHintedType;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.papyrus.infra.emf.providers.EMFLabelProvider;
-import org.eclipse.papyrus.infra.emf.utils.EClassNameComparator;
-import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
import org.eclipse.papyrus.uml.diagram.usecase.part.UMLDiagramEditorPlugin;
-import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.uml2.uml.Association;
import org.eclipse.uml2.uml.UMLFactory;
-import org.eclipse.uml2.uml.UMLPackage;
-
-import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Collections;
-
/**
* This class can be launch is order to open a dialog used to choose an association
@@ -64,34 +50,31 @@ public class SubjectSelectionDialog extends AbstractSubjectMetaclassesSelectionD
* @param style
* the style
*/
- public SubjectSelectionDialog(Shell parent,ArrayList<IHintedType> executableHTypeCreation, int style) {
+ public SubjectSelectionDialog(Shell parent, ArrayList<IHintedType> executableHTypeCreation, int style) {
super(parent, style);
-
this.subClassifierList = executableHTypeCreation;
this.selectedMetaclass = (IHintedType)subClassifierList.toArray()[0];
}
-
-
/**
* @see org.eclipse.papyrus.uml.diagram.clazz.custom.ui.AbstractAssociationSelectionDialog#createContents()
*
*/
-
protected void createContents() {
-
// TODO Auto-generated method stub
super.createContents();
- final ILabelProvider labelProvider = new EMFLabelProvider(){
+ final ILabelProvider labelProvider = new EMFLabelProvider() {
+
@Override
public String getText(Object element) {
// TODO Auto-generated method stub
- if(element instanceof IHintedType){
- String out= ((IHintedType)element).getDisplayName();
- return out;
+ if(element instanceof IHintedType) {
+ String out = ((IHintedType)element).getDisplayName();
+ return out;
}
return super.getText(element);
}
+
@Override
public Image getImage(Object element) {
// TODO Auto-generated method stub
@@ -142,5 +125,4 @@ public class SubjectSelectionDialog extends AbstractSubjectMetaclassesSelectionD
public IHintedType getSelectedMetaclass() {
return selectedMetaclass;
}
-
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/models/usecaseDiagram.gmfgen b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/models/usecaseDiagram.gmfgen
index 61ee403ecc4..14b7dada1c0 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/models/usecaseDiagram.gmfgen
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/models/usecaseDiagram.gmfgen
@@ -1545,6 +1545,10 @@
xsi:type="gmfgen:CustomBehaviour"
key="org.eclipse.papyrus.uml.diagram.common.editpolicies.QualifiedNameDisplayEditPolicy.QUALIFIED_NAME_POLICY"
editPolicyQualifiedClassName="org.eclipse.papyrus.uml.diagram.common.editpolicies.QualifiedNameDisplayEditPolicy"/>
+ <behaviour
+ xsi:type="gmfgen:CustomBehaviour"
+ key="org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.SEMANTIC_ROLE"
+ editPolicyQualifiedClassName="org.eclipse.papyrus.uml.diagram.usecase.edit.policies.CustomDefaultNamedElementItemSemanticEditPolicyTN"/>
<modelFacet>
<metaClass
href="../../../plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml/NamedElement"/>
@@ -1915,8 +1919,8 @@
parser="/0/@labelParsers/@implementations.2"/>
</labels>
<creationConstraints
- sourceEnd="/0/@expressionProviders/@providers.0/@expressions.14"
- targetEnd="/0/@expressionProviders/@providers.0/@expressions.15"/>
+ sourceEnd="/0/@expressionProviders/@providers.1/@expressions.5"
+ targetEnd="/0/@expressionProviders/@providers.1/@expressions.5"/>
</links>
<links
visualID="4012"
@@ -2878,10 +2882,10 @@
body="let sourceName : String = self.memberEnd->first().name in&#xD;&#xA;let targetName : String = self.memberEnd->at(2).name in&#xD;&#xA;'A_'.concat(sourceName).concat('_').concat(targetName)"/>
<expressions
xsi:type="gmfgen:GenConstraint"
- body="self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) "/>
+ body="self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) or self.oclIsKindOf(uml::Class) or or self.oclIsKindOf(uml::Component)"/>
<expressions
xsi:type="gmfgen:GenConstraint"
- body="self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) "/>
+ body="self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) or self.oclIsKindOf(uml::Class) or or self.oclIsKindOf(uml::Component)"/>
<expressions
xsi:type="gmfgen:GenConstraint"
body="self.oclIsTypeOf(uml::Dependency) and self.supplier->size() = 1 and self.client->size() = 1 and self.supplier->forAll(e|not e.oclIsKindOf(uml::Interface))"/>
@@ -2912,6 +2916,9 @@
body="return getName(self);"/>
<expressions
body="return &quot;Subject&quot; +org.eclipse.papyrus.uml.diagram.common.helper.NamedElementHelper.EINSTANCE.getNewUMLElementName(self.getOwner(), self.eClass());"/>
+ <expressions
+ xsi:type="gmfgen:GenConstraint"
+ body="if( (source instanceof org.eclipse.uml2.uml.Class)||(source instanceof org.eclipse.uml2.uml.Component)||(source instanceof org.eclipse.uml2.uml.Actor)||(source instanceof org.eclipse.uml2.uml.UseCase)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if((target instanceof org.eclipse.uml2.uml.Class)||(target instanceof org.eclipse.uml2.uml.Component)||(target instanceof org.eclipse.uml2.uml.Actor)||(target instanceof org.eclipse.uml2.uml.UseCase)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if( (source instanceof org.eclipse.uml2.uml.UseCase)&amp;&amp;(target instanceof org.eclipse.uml2.uml.UseCase)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;return (Collections.disjoint(((org.eclipse.uml2.uml.UseCase) source).getSubjects(),((org.eclipse.uml2.uml.UseCase) target).getSubjects()));&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;return true;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;else{return false;}"/>
</providers>
</expressionProviders>
<labelParsers
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/plugin.xml b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/plugin.xml
index c18b6dd05a0..6ef8bfdec5b 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/plugin.xml
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/plugin.xml
@@ -1387,7 +1387,7 @@
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
- locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu?after=filtersMenu">
+ locationURI="popup:org.eclipse.papyrus.uml.diagram.ui.popupmenu.filters">
<command
commandId="org.eclipse.papyrus.diagram.usecase.displayasdefaultnamedelement.popup"
id="displayasdefaultnamedelement.popup"
@@ -1418,6 +1418,16 @@
checkEnabled="true">
</visibleWhen>
</command>
+ <command
+ commandId="org.eclipse.papyrus.diagram.usecase.displayactorasstickman.popup"
+ id="displayactorasstickman.popup"
+ label="Display actor as stickman"
+ style="push"
+ tooltip="Display actor as stickman">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
</menuContribution>
</extension>
<extension
@@ -1440,6 +1450,12 @@
id="org.eclipse.papyrus.diagram.usecase.displayusecaseasclassifier.popup"
name="Display use case as classifier">
</command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.uml.diagram.usecase.handler.ChangetoActorShapeHandler"
+ id="org.eclipse.papyrus.diagram.usecase.displayactorasstickman.popup"
+ name="Display actor as stickman">
+ </command>
</extension>
</plugin>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/parts/DefaultNamedElementEditPartTN.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/parts/DefaultNamedElementEditPartTN.java
index 953015ecda1..9235ce729dc 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/parts/DefaultNamedElementEditPartTN.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/parts/DefaultNamedElementEditPartTN.java
@@ -49,6 +49,7 @@ import org.eclipse.papyrus.uml.diagram.common.editpolicies.HyperLinkPopupBarEdit
import org.eclipse.papyrus.uml.diagram.common.editpolicies.QualifiedNameDisplayEditPolicy;
import org.eclipse.papyrus.uml.diagram.common.figure.node.NodeNamedElementFigure;
import org.eclipse.papyrus.uml.diagram.common.helper.PreferenceInitializerForElementHelper;
+import org.eclipse.papyrus.uml.diagram.usecase.edit.policies.CustomDefaultNamedElementItemSemanticEditPolicyTN;
import org.eclipse.papyrus.uml.diagram.usecase.edit.policies.DefaultNamedElementItemSemanticEditPolicyTN;
import org.eclipse.papyrus.uml.diagram.usecase.part.UMLDiagramEditorPlugin;
import org.eclipse.papyrus.uml.diagram.usecase.part.UMLVisualIDRegistry;
@@ -92,6 +93,7 @@ public class DefaultNamedElementEditPartTN extends NamedElementEditPart {
installEditPolicy(EditPolicyRoles.POPUPBAR_ROLE, new HyperLinkPopupBarEditPolicy());
installEditPolicy(AppliedStereotypeLabelDisplayEditPolicy.STEREOTYPE_LABEL_POLICY, new AppliedStereotypeNodeLabelDisplayEditPolicy());
installEditPolicy(QualifiedNameDisplayEditPolicy.QUALIFIED_NAME_POLICY, new QualifiedNameDisplayEditPolicy());
+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new CustomDefaultNamedElementItemSemanticEditPolicyTN());
// XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies
// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE);
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/UMLBaseItemSemanticEditPolicy.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/UMLBaseItemSemanticEditPolicy.java
index 6bb58b5bcb2..73710bb26b7 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/UMLBaseItemSemanticEditPolicy.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/edit/policies/UMLBaseItemSemanticEditPolicy.java
@@ -1,16 +1,3 @@
-/*****************************************************************************
- * Copyright (c) 2009 Atos Origin.
- *
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Emilien Perico (Atos Origin) emilien.perico@atosorigin.com - Initial API and implementation
- *
- *****************************************************************************/
package org.eclipse.papyrus.uml.diagram.usecase.edit.policies;
import java.util.Collections;
@@ -56,9 +43,12 @@ import org.eclipse.papyrus.uml.diagram.usecase.part.UMLDiagramEditorPlugin;
import org.eclipse.papyrus.uml.diagram.usecase.part.UMLVisualIDRegistry;
import org.eclipse.papyrus.uml.diagram.usecase.providers.UMLElementTypes;
import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Actor;
import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Component;
import org.eclipse.uml2.uml.Constraint;
import org.eclipse.uml2.uml.Dependency;
import org.eclipse.uml2.uml.Element;
@@ -108,10 +98,14 @@ public class UMLBaseItemSemanticEditPolicy extends SemanticEditPolicy {
}
/**
- * Extended request data key to hold editpart visual id. Add visual id of edited editpart to
- * extended data of the request so command switch can decide what kind of diagram element is
- * being edited. It is done in those cases when it's not possible to deduce diagram element kind
- * from domain element.
+ * Extended request data key to hold editpart visual id.
+ * Add visual id of edited editpart to extended data of the request
+ * so command switch can decide what kind of diagram element is being edited.
+ * It is done in those cases when it's not possible to deduce diagram
+ * element kind from domain element.
+ * Add the reoriented view to the request extended data so that the view
+ * currently edited can be distinguished from other views of the same element
+ * and these latter possibly removed if they become inconsistent after reconnect
*
* @generated
*/
@@ -506,23 +500,25 @@ public class UMLBaseItemSemanticEditPolicy extends SemanticEditPolicy {
*/
public boolean canExistAssociation_4011(Package container, Association linkInstance, Type source, Type target) {
try {
- if(source == null) {
- return true;
+ if((source instanceof Class) || (source instanceof Component) || (source instanceof Actor) || (source instanceof UseCase)) {
+ if((target instanceof Class) || (target instanceof Component) || (target instanceof Actor) || (target instanceof UseCase)) {
+ if((source instanceof UseCase) && (target instanceof UseCase)) {
+ return (Collections.disjoint(((UseCase)source).getSubjects(), ((UseCase)target).getSubjects()));
+ }
+ return true;
+ }
} else {
- Map<String, EClassifier> env = Collections.<String, EClassifier> singletonMap("oppositeEnd", UMLPackage.eINSTANCE.getType()); //$NON-NLS-1$
- Object sourceVal = UMLOCLFactory.getExpression(14, UMLPackage.eINSTANCE.getType(), env).evaluate(source, Collections.singletonMap("oppositeEnd", target)); //$NON-NLS-1$
- if(false == sourceVal instanceof Boolean || !((Boolean)sourceVal).booleanValue()) {
- return false;
- } // else fall-through
+ return false;
}
- if(target == null) {
- return true;
+ if((source instanceof Class) || (source instanceof Component) || (source instanceof Actor) || (source instanceof UseCase)) {
+ if((target instanceof Class) || (target instanceof Component) || (target instanceof Actor) || (target instanceof UseCase)) {
+ if((source instanceof UseCase) && (target instanceof UseCase)) {
+ return (Collections.disjoint(((UseCase)source).getSubjects(), ((UseCase)target).getSubjects()));
+ }
+ return true;
+ }
} else {
- Map<String, EClassifier> env = Collections.<String, EClassifier> singletonMap("oppositeEnd", UMLPackage.eINSTANCE.getType()); //$NON-NLS-1$
- Object targetVal = UMLOCLFactory.getExpression(15, UMLPackage.eINSTANCE.getType(), env).evaluate(target, Collections.singletonMap("oppositeEnd", source)); //$NON-NLS-1$
- if(false == targetVal instanceof Boolean || !((Boolean)targetVal).booleanValue()) {
- return false;
- } // else fall-through
+ return false;
}
return true;
} catch (Exception e) {
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/expressions/UMLOCLFactory.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/expressions/UMLOCLFactory.java
index ef42b4e73a0..ead68b68542 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/expressions/UMLOCLFactory.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.usecase/src/org/eclipse/papyrus/uml/diagram/usecase/expressions/UMLOCLFactory.java
@@ -73,8 +73,8 @@ public class UMLOCLFactory {
"self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) ", //$NON-NLS-1$
"not self.oclIsTypeOf(uml::AssociationClass)", //$NON-NLS-1$
"let sourceName : String = self.memberEnd->first().name in\r\nlet targetName : String = self.memberEnd->at(2).name in\r\n\'A_\'.concat(sourceName).concat(\'_\').concat(targetName)", //$NON-NLS-1$
- "self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) ", //$NON-NLS-1$
- "self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) ", //$NON-NLS-1$
+ "self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) or self.oclIsKindOf(uml::Class) or or self.oclIsKindOf(uml::Component)", //$NON-NLS-1$
+ "self.oclIsKindOf(uml::Actor) or self.oclIsKindOf(uml::UseCase) or self.oclIsKindOf(uml::Class) or or self.oclIsKindOf(uml::Component)", //$NON-NLS-1$
"self.oclIsTypeOf(uml::Dependency) and self.supplier->size() = 1 and self.client->size() = 1 and self.supplier->forAll(e|not e.oclIsKindOf(uml::Interface))", //$NON-NLS-1$
"not self.oclIsKindOf(uml::Interface)\r\n", //$NON-NLS-1$
"self.oclIsTypeOf(uml::Abstraction) and self.supplier->size() = 1 and self.client->size() = 1 and self.supplier->forAll(e|not e.oclIsKindOf(uml::Interface))", //$NON-NLS-1$

Back to the top