/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.editor.properties; /** * Abstract common base for {@link WorkflowNodeCommand}s. * * @author Christian Weiss */ public abstract class AbstractWorkflowNodeCommand extends WorkflowNodeCommand { private boolean done = false; public AbstractWorkflowNodeCommand() { // do nothing } @Override public void initialize() { // do nothing } @Override public boolean canExecute() { return !canUndo(); } @Override public boolean canUndo() { return done; } @Override public void execute() { try { execute2(); } finally { done = true; } } protected abstract void execute2(); @Override public void undo() { try { undo2(); } finally { done = false; } } protected abstract void undo2(); }