From c7770b37490503d2e6a297bedbf800bc44e1e88a Mon Sep 17 00:00:00 2001 From: tarendt Date: Wed, 16 Apr 2014 12:47:32 +0200 Subject: initial commit CoMReL --- .../commands/MultiFeatureUnit3CreateCommand.java | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit3CreateCommand.java (limited to 'org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit3CreateCommand.java') diff --git a/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit3CreateCommand.java b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit3CreateCommand.java new file mode 100644 index 0000000..06e2969 --- /dev/null +++ b/org.eclipse.emf.refactor.comrel.diagram/src/comrel/diagram/edit/commands/MultiFeatureUnit3CreateCommand.java @@ -0,0 +1,116 @@ +/* + * + */ +package comrel.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +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.notation.View; + +import comrel.CompositeRefactoring; +import comrel.ComrelFactory; +import comrel.ConditionalUnit; +import comrel.MultiFeatureUnit; + +/** + * @generated + */ +public class MultiFeatureUnit3CreateCommand extends EditElementCommand { + + /** + * @generated + */ + public MultiFeatureUnit3CreateCommand(CreateElementRequest req) { + super(req.getLabel(), null, req); + } + + /** + * FIXME: replace with setElementToEdit() + * @generated + */ + protected EObject getElementToEdit() { + EObject container = ((CreateElementRequest) getRequest()) + .getContainer(); + if (container instanceof View) { + container = ((View) container).getElement(); + } + return container; + } + + /** + * @generated + */ + public boolean canExecute() { + return true; + + } + + /** + * @generated NOT + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, + IAdaptable info) throws ExecutionException { + /* + * changes: Liest aus einem Request die ID des Helpers und + * erstellt anhand dessen die HelperUnit + */ + CreateElementRequest request = ((CreateElementRequest) getRequest()); + String helperId = (String) request.getParameters().get( + comrel.diagram.part.ComrelPaletteFactory.UNIT_ID); + comrel.ComrelFactory factory = comrel.ComrelFactory.eINSTANCE; + EObject container = ((CreateElementRequest) getRequest()) + .getContainer(); + while (container.eContainer() != null) { + container = container.eContainer(); + } + CompositeRefactoring cr = (CompositeRefactoring) container; + comrel.MultiFeatureHelper helper = cr.getMultiFeatureHelper(helperId); + if (helper != null && !cr.getHelper().contains(helper)) { + cr.getHelper().add(helper); + } + comrel.MultiFeatureUnit newElement; + if (helper != null) { + newElement = factory.createMultiFeatureUnit(helper); + } else { + newElement = factory.createMultiFeatureUnit(); + } + /* end of change */ + + ConditionalUnit owner = (ConditionalUnit) getElementToEdit(); + owner.getHelperUnits().add(newElement); + + doConfigure(newElement, monitor, info); + + ((CreateElementRequest) getRequest()).setNewElement(newElement); + return CommandResult.newOKCommandResult(newElement); + } + + /** + * @generated + */ + protected void doConfigure(MultiFeatureUnit newElement, + IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + IElementType elementType = ((CreateElementRequest) getRequest()) + .getElementType(); + ConfigureRequest configureRequest = new ConfigureRequest( + getEditingDomain(), newElement, elementType); + configureRequest.setClientContext(((CreateElementRequest) getRequest()) + .getClientContext()); + configureRequest.addParameters(getRequest().getParameters()); + ICommand configureCommand = elementType + .getEditCommand(configureRequest); + if (configureCommand != null && configureCommand.canExecute()) { + configureCommand.execute(monitor, info); + } + } + +} -- cgit v1.2.3