package com.isencia.passerelle.workbench.model.editor.ui.editor.actions;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.HandlerEvent;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPart;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ptolemy.kernel.util.Attribute;
public abstract class AbstractAttributeHandler extends AbstractHandler implements IViewActionDelegate, ISelectionListener {
private static Logger logger = LoggerFactory.getLogger(AbstractHandler.class);
private IViewPart view;
public void run(IAction action) {
doAction();
}
public Object execute(ExecutionEvent event) throws ExecutionException {
doAction();
return Boolean.TRUE;
}
protected abstract void doAction() ;
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
selectionChanged(selection);
}
public void selectionChanged(IAction action, ISelection selection) {
selectionChanged(selection);
}
private void selectionChanged(ISelection selection) {
if (selection instanceof StructuredSelection) {
this.isEnabled = ((StructuredSelection)selection).getFirstElement() instanceof Attribute;
fireHandlerChanged(new HandlerEvent(this, true, false));
}
}
public void init(IViewPart view) {
this.view = view;
view.getViewSite().getWorkbenchWindow().getSelectionService().addSelectionListener(this);
}
public void dispose() {
super.dispose();
view.getViewSite().getWorkbenchWindow().getSelectionService().removeSelectionListener(this);
}
private boolean isEnabled = false;
public boolean isEnabled() {
return isEnabled;
}
public void setEnabled(Object sel) {
this.isEnabled = sel instanceof Attribute;
fireHandlerChanged(new HandlerEvent(this, true, false));
}
}