/** | |
* <copyright> | |
* | |
* Copyright (c) 2013 itemis and others. | |
* 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 | |
* | |
* Contributors: | |
* itemis - Initial API and implementation | |
* | |
* </copyright> | |
*/ | |
package org.eclipse.sphinx.examples.hummingbird20.diagram.gmf.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.sphinx.examples.hummingbird20.instancemodel.Application; | |
import org.eclipse.sphinx.examples.hummingbird20.instancemodel.Component; | |
import org.eclipse.sphinx.examples.hummingbird20.instancemodel.InstanceModel20Factory; | |
/** | |
* @generated | |
*/ | |
public class ComponentCreateCommand extends EditElementCommand { | |
/** | |
* @generated | |
*/ | |
public ComponentCreateCommand(CreateElementRequest req) { | |
super(req.getLabel(), null, req); | |
} | |
/** | |
* FIXME: replace with setElementToEdit() | |
* | |
* @generated | |
*/ | |
@Override | |
protected EObject getElementToEdit() { | |
EObject container = ((CreateElementRequest) getRequest()).getContainer(); | |
if (container instanceof View) { | |
container = ((View) container).getElement(); | |
} | |
return container; | |
} | |
/** | |
* @generated | |
*/ | |
@Override | |
public boolean canExecute() { | |
return true; | |
} | |
/** | |
* @generated | |
*/ | |
@Override | |
protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { | |
Component newElement = InstanceModel20Factory.eINSTANCE.createComponent(); | |
Application owner = (Application) getElementToEdit(); | |
owner.getComponents().add(newElement); | |
doConfigure(newElement, monitor, info); | |
((CreateElementRequest) getRequest()).setNewElement(newElement); | |
return CommandResult.newOKCommandResult(newElement); | |
} | |
/** | |
* @generated | |
*/ | |
protected void doConfigure(Component 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); | |
} | |
} | |
} |