/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.workflow.editor.properties;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.commands.CommandStack;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
/**
*
* Abstract base class for implementing a property editor for a workflow component.
*
* @author Marc Stammerjohann
*/
public abstract class WorkflowPropertySection extends AbstractPropertySection {
private CommandStack commandStack;
protected void setCommandStack(CommandStack commandStack) {
this.commandStack = commandStack;
}
protected CommandStack getCommandStack() {
return commandStack;
}
@Override
public void setInput(IWorkbenchPart part, ISelection selection) {
super.setInput(part, selection);
setCommandStack((CommandStack) part.getAdapter(CommandStack.class));
}
/**
* A wrapper class to wrap {@link WorkflowCommand}s in GEF {@link Command}s.
*
* @author Christian Weiss
* @author Marc Stammerjohann
*/
protected static class CommandWrapper extends Command {
/** The backing command, invokations are forwarded to. */
private final WorkflowCommand command;
public CommandWrapper(final WorkflowCommand command) {
this.command = command;
}
@Override
public boolean canExecute() {
return command.canExecute();
}
@Override
public void execute() {
command.execute();
}
@Override
public void redo() {
command.redo();
}
@Override
public boolean canUndo() {
return command.canUndo();
}
@Override
public void undo() {
command.undo();
}
}
}