/*
* 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());
}
}
}