/*******************************************************************************
* Copyright (c) 2010-2015 Henshin developers. 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:
* TU Berlin, University of Luxembourg, SES S.A.
*******************************************************************************/
/**
* CreateFlowControlParameterCommand.java
*
* Created 28.12.2011 - 17:24:29
*/
package de.tub.tfs.henshin.editor.commands.flow_diagram;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.commands.CompoundCommand;
import de.tub.tfs.henshin.editor.commands.SimpleAddEObjectCommand;
import de.tub.tfs.henshin.editor.util.HenshinLayoutUtil;
import de.tub.tfs.henshin.model.flowcontrol.Activity;
import de.tub.tfs.henshin.model.flowcontrol.FlowControlFactory;
import de.tub.tfs.henshin.model.flowcontrol.FlowControlPackage;
import de.tub.tfs.henshin.model.flowcontrol.FlowDiagram;
import de.tub.tfs.henshin.model.flowcontrol.Parameter;
import de.tub.tfs.henshin.model.flowcontrol.ParameterProvider;
import de.tub.tfs.henshin.model.layout.FlowElementLayout;
import de.tub.tfs.henshin.model.layout.Layout;
/**
* A {@link Command command} to create {@link Parameter flow control parameters}
* for a given {@link org.eclipse.emf.henshin.model.Parameter henshin parameter}
* .
*
* @author nam
*
*/
public class CreateFlowControlParameterCommand extends CompoundCommand {
private Parameter newParameter;
public CreateFlowControlParameterCommand(ParameterProvider parent,
Layout parentLayout,
org.eclipse.emf.henshin.model.Parameter henshinParam) {
super("Add Parameter");
newParameter = FlowControlFactory.eINSTANCE.createParameter();
newParameter.setName(henshinParam.getName());
newParameter.setProvider(parent);
newParameter.setHenshinParameter(henshinParam);
add(new SimpleAddEObjectCommand<ParameterProvider, Parameter>(
newParameter,
FlowControlPackage.Literals.PARAMETER_PROVIDER__PARAMETERS,
parent));
if (parent instanceof Activity) {
add(new UpdateActivity2ParameterMappingIdCommand((Activity) parent,
(FlowElementLayout) parentLayout));
}
}
public CreateFlowControlParameterCommand(FlowDiagram parent,
org.eclipse.emf.henshin.model.Parameter henshinParam) {
this(parent, null, henshinParam);
}
/**
* @param model
* @param containingFeature
* @param parent
*/
public CreateFlowControlParameterCommand(Activity parent,
org.eclipse.emf.henshin.model.Parameter henshinParam) {
this(parent, HenshinLayoutUtil.INSTANCE.getLayout(parent), henshinParam);
}
/**
* @return the newParameter
*/
public Parameter getNewParameter() {
return newParameter;
}
}