/*
* 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 a {@link WorkflowNode}.
*
* @author Doreen Seider
*/
public class WorkflowNodeDisEnableCommand extends Command {
private Set<WorkflowNode> nodes;
private Set<WorkflowNode> nodesToggled = new HashSet<>();
/**
* Constructor.
*
* @param node {@link WorkflowNode}
*/
public WorkflowNodeDisEnableCommand(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 setEnabled = false;
for (WorkflowNode node : nodes) {
if (!node.isEnabled()) {
setEnabled = true;
break;
}
}
// if node needs to be toggled, store them for undo
for (WorkflowNode node : nodes) {
if (node.isEnabled() != setEnabled) {
nodesToggled.add(node);
node.setEnabled(setEnabled);
}
}
}
@Override
public void undo() {
for (WorkflowNode node : nodesToggled) {
node.setEnabled(!node.isEnabled());
}
}
}