/******************************************************************************* * 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. *******************************************************************************/ /** * */ package de.tub.tfs.henshin.editor.commands.flow_diagram; import org.eclipse.gef.commands.CompoundCommand; import de.tub.tfs.henshin.editor.commands.SimpleAddEObjectCommand; import de.tub.tfs.henshin.editor.editparts.flow_diagram.graphical.StartEditpart; import de.tub.tfs.henshin.editor.editparts.flow_diagram.graphical.StopEditpart; import de.tub.tfs.henshin.editor.util.HenshinLayoutUtil; import de.tub.tfs.henshin.model.flowcontrol.End; import de.tub.tfs.henshin.model.flowcontrol.FlowControlFactory; import de.tub.tfs.henshin.model.flowcontrol.FlowControlPackage; import de.tub.tfs.henshin.model.flowcontrol.FlowControlSystem; import de.tub.tfs.henshin.model.flowcontrol.FlowDiagram; import de.tub.tfs.henshin.model.flowcontrol.Start; import de.tub.tfs.henshin.model.layout.LayoutSystem; /** * @author nam * */ public class CreateFlowDiagramCommand extends CompoundCommand { /** * */ private String name; /** * @param name * @param root */ public CreateFlowDiagramCommand(String name, FlowControlSystem root) { super("Creating Flow Diaram '" + name + "'"); this.name = name; LayoutSystem layoutRoot = HenshinLayoutUtil.INSTANCE .getLayoutSystem(root); FlowDiagram newDiagram = FlowControlFactory.eINSTANCE .createFlowDiagram(); Start newStartNode = FlowControlFactory.eINSTANCE.createStart(); End newEndNode = FlowControlFactory.eINSTANCE.createEnd(); newDiagram.setName(name); newDiagram.setStart(newStartNode); add(new SimpleAddEObjectCommand<FlowControlSystem, FlowDiagram>( newDiagram, FlowControlPackage.Literals.FLOW_CONTROL_SYSTEM__UNITS, root)); add(new CreateFlowElementCommand<Start>(newStartNode, newDiagram, StartEditpart.DEFAULT_FIG_LOC, layoutRoot)); add(new CreateFlowElementCommand<End>(newEndNode, newDiagram, StopEditpart.DEFAULT_FIG_LOC, layoutRoot)); add(new CreateTransitionCommand( FlowControlFactory.eINSTANCE.createTransition(), newStartNode, newEndNode, newDiagram)); } /* * (non-Javadoc) * * @see org.eclipse.gef.commands.Command#canExecute() */ @Override public boolean canExecute() { return name != null && super.canExecute(); } /* * (non-Javadoc) * * @see org.eclipse.gef.commands.Command#canUndo() */ @Override public boolean canUndo() { return name != null && super.canUndo(); } }