/******************************************************************************* | |
* Copyright (c) 2016 Fundación Tecnalia Research & Innovation. | |
* | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* Huascar Espinoza - initial API and implementation | |
* Alejandra Ruíz - initial API and implementation | |
* Idoya Del Río - initial API and implementation | |
* Mari Carmen Palacios - initial API and implementation | |
* Angel López - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.opencert.sam.arg.arg.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 org.eclipse.opencert.sam.arg.arg.ArgFactory; | |
import org.eclipse.opencert.sam.arg.arg.Case; | |
import org.eclipse.opencert.sam.arg.arg.InformationElementCitation; | |
import org.eclipse.opencert.sam.arg.arg.InformationElementType; | |
public class ContextCreateCommand extends EditElementCommand { | |
/** | |
* @generated | |
*/ | |
public ContextCreateCommand(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; | |
} | |
protected CommandResult doExecuteWithResult(IProgressMonitor monitor, | |
IAdaptable info) throws ExecutionException { | |
InformationElementCitation newElement = ArgFactory.eINSTANCE | |
.createInformationElementCitation(); | |
newElement.setType(InformationElementType.CONTEXT); | |
newElement.setId("Context"); | |
Case owner = (Case) getElementToEdit(); | |
owner.getArgument().add(newElement); | |
doConfigure(newElement, monitor, info); | |
((CreateElementRequest) getRequest()).setNewElement(newElement); | |
return CommandResult.newOKCommandResult(newElement); | |
} | |
/** | |
* @generated | |
*/ | |
protected void doConfigure(InformationElementCitation 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); | |
} | |
} | |
} |