package com.redhat.ceylon.eclipse.code.refactor; import static com.redhat.ceylon.eclipse.util.EditorUtil.getCurrentEditor; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IWorkbenchPart; import com.redhat.ceylon.eclipse.code.editor.CeylonEditor; public abstract class AbstractHandler extends org.eclipse.core.commands.AbstractHandler implements IObjectActionDelegate { @Override public boolean isEnabled() { IEditorPart editor = getCurrentEditor(); if (super.isEnabled() && editor instanceof CeylonEditor && editor.getEditorInput() instanceof IFileEditorInput) { return isEnabled((CeylonEditor)editor); } else { return false; } } protected abstract boolean isEnabled(CeylonEditor editor); @Override public void run(IAction action) { try { execute(null); } catch (ExecutionException e) { e.printStackTrace(); } } @Override public void selectionChanged(IAction action, ISelection selection) { action.setEnabled(isEnabled()); } @Override public void setActivePart(IAction action, IWorkbenchPart targetPart) {} }