/******************************************************************************* | |
* 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.apm.baseline.baseline.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.apm.baseline.baseline.BaseFramework; | |
import org.eclipse.opencert.apm.baseline.baseline.BaseRole; | |
import org.eclipse.opencert.apm.baseline.baseline.BaselineFactory; | |
/** | |
* @generated | |
*/ | |
public class BaseRoleCreateCommand extends EditElementCommand { | |
/** | |
* @generated | |
*/ | |
public BaseRoleCreateCommand(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 | |
*/ | |
protected CommandResult doExecuteWithResult(IProgressMonitor monitor, | |
IAdaptable info) throws ExecutionException { | |
BaseRole newElement = BaselineFactory.eINSTANCE.createBaseRole(); | |
BaseFramework owner = (BaseFramework) getElementToEdit(); | |
owner.getOwnedRole().add(newElement); | |
doConfigure(newElement, monitor, info); | |
((CreateElementRequest) getRequest()).setNewElement(newElement); | |
return CommandResult.newOKCommandResult(newElement); | |
} | |
/** | |
* @generated | |
*/ | |
protected void doConfigure(BaseRole 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); | |
} | |
} | |
} |