package org.insightech.er.editor.view.action.outline;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.ui.parts.TreeViewer;
import org.eclipse.jface.action.Action;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.insightech.er.Activator;
import org.insightech.er.editor.model.ERDiagram;
public abstract class AbstractOutlineBaseAction extends Action {
private TreeViewer treeViewer;
public AbstractOutlineBaseAction(String id, String text,
TreeViewer treeViewer) {
this(id, text, SWT.NONE, treeViewer);
}
public AbstractOutlineBaseAction(String id, String text, int style,
TreeViewer treeViewer) {
super(text, style);
this.setId(id);
this.treeViewer = treeViewer;
}
/**
* {@inheritDoc}
*/
@Override
public final void runWithEvent(Event event) {
try {
execute(event);
} catch (Exception e) {
Activator.showExceptionDialog(e);
}
}
protected void execute(Command command) {
this.treeViewer.getEditDomain().getCommandStack().execute(command);
}
protected ERDiagram getDiagram() {
EditPart editPart = treeViewer.getContents();
ERDiagram diagram = (ERDiagram) editPart.getModel();
return diagram;
}
protected TreeViewer getTreeViewer() {
return treeViewer;
}
abstract public void execute(Event event) throws Exception;
}