package me.dsnet.quickopener.actions; import java.io.File; import me.dsnet.quickopener.PathFinder; import org.openide.loaders.DataObject; import org.openide.nodes.Node; import org.openide.util.HelpCtx; import org.openide.util.actions.NodeAction; public abstract class AbstractFileContextAwareAction extends NodeAction { private File file; protected File getFile() { return file; } @Override protected boolean asynchronous() { return false; } @Override public HelpCtx getHelpCtx() { return HelpCtx.DEFAULT_HELP; } @Override public abstract String getName(); @Override protected boolean enable(Node[] activatedNodes) { file = null; if (null != activatedNodes && activatedNodes.length == 1) { file = PathFinder.getActiveFile(activatedNodes[0].getLookup().lookup(DataObject.class), false); } return null != file; } @Override protected abstract String iconResource(); @Override protected abstract void performAction(Node[] activatedNodes); }