/* * Created on 6. March 2007, 15:48 */ package net.java.nboglpack.glslcompiler.actions; import net.java.nboglpack.glslcompiler.GLSLCompilerService; import org.openide.filesystems.FileUtil; import org.openide.loaders.DataObject; import org.openide.nodes.Node; import org.openide.util.HelpCtx; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.openide.util.actions.NodeAction; /** * Action triggering shader compilation. * @author Michael Bien */ public final class CompileShaderAction extends NodeAction { protected void performAction(Node[] activatedNodes) { DataObject[] daos = new DataObject[activatedNodes.length]; for (int i = 0; i < daos.length; i++) daos[i] = activatedNodes[i].getLookup().lookup(DataObject.class); GLSLCompilerService compiler = Lookup.getDefault().lookup(GLSLCompilerService.class); compiler.compileShader(daos, true); } protected boolean enable(Node[] nodes) { for (int i = 0; i < nodes.length; i++) { DataObject dao = nodes[i].getLookup().lookup(DataObject.class); if(dao == null) return false; String mimeType = FileUtil.getMIMEType(dao.getPrimaryFile()); if(mimeType == null) return false; if(!( mimeType.equals("text/x-glsl-vertex-shader") || mimeType.equals("text/x-glsl-fragment-shader") || mimeType.equals("text/x-glsl-geometry-shader")) ) { return false; } } return true; } public String getName() { return NbBundle.getMessage(CompileShaderAction.class, "CTL_CompileShaderAction"); } @Override protected void initialize() { super.initialize(); // see org.openide.util.actions.SystemAction.iconResource() javadoc for more details putValue("noIconInMenu", Boolean.TRUE); } public HelpCtx getHelpCtx() { return HelpCtx.DEFAULT_HELP; } @Override protected boolean asynchronous() { return false; } }