/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.editor.commands; import java.util.HashSet; import java.util.Set; import org.eclipse.gef.commands.Command; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; /** * Command to (de-)activate tool run imitation mode {@link WorkflowNode}. * * @author Hendrik Abbenhaus */ public class WorkflowNodeDisEnableImitiationModeCommand extends Command { private Set<WorkflowNode> nodes; private Set<WorkflowNode> nodesToggled = new HashSet<>(); /** * Constructor. * * @param node {@link WorkflowNode} */ public WorkflowNodeDisEnableImitiationModeCommand(Set<WorkflowNode> nodes) { this.nodes = nodes; } @Override public void execute() { redo(); } @Override public void redo() { // check if all of the nodes are disabled/enabled, if not enable all disabled ones first boolean setActive = false; for (WorkflowNode node : nodes) { if (!node.isImitiationModeActive()) { setActive = true; break; } } // if node needs to be toggled, store them for undo for (WorkflowNode node : nodes) { if (node.isImitiationModeActive() != setActive) { nodesToggled.add(node); node.setImitiationModeActive(setActive); } } } @Override public void undo() { for (WorkflowNode node : nodesToggled) { node.setImitiationModeActive(!node.isImitiationModeActive()); } } }