/* * VertexLanguage.java * * Created on 19.08.2007, 18:25:24 * */ package net.java.nboglpack.glsleditor.lexer; import java.util.Collection; import java.util.EnumSet; import net.java.nboglpack.glsleditor.GlslVocabularyManager; import net.java.nboglpack.glsleditor.dataobject.GlslFragmentShaderDataLoader; import net.java.nboglpack.glsleditor.dataobject.GlslGeometryShaderDataLoader; import net.java.nboglpack.glsleditor.dataobject.GlslVertexShaderDataLoader; import org.netbeans.api.lexer.Language; import org.netbeans.spi.lexer.LanguageHierarchy; import org.netbeans.spi.lexer.Lexer; import org.netbeans.spi.lexer.LexerRestartInfo; /** * OpenGL Shading Language. * @author Michael Bien */ public class Glsl extends LanguageHierarchy<GlslTokenId> { public static final Glsl VERTEX_LANGUAGE = new Glsl(GlslVertexShaderDataLoader.REQUIRED_MIME); public static final Glsl GEOMETRY_LANGUAGE = new Glsl(GlslGeometryShaderDataLoader.REQUIRED_MIME); public static final Glsl FRAGMENT_LANGUAGE = new Glsl(GlslFragmentShaderDataLoader.REQUIRED_MIME); private final String mimeType; private Glsl(String mimeType) { this.mimeType = mimeType; } @Override protected String mimeType() { return mimeType; } @Override protected Collection<GlslTokenId> createTokenIds() { return EnumSet.allOf(GlslTokenId.class); } @Override protected Lexer<GlslTokenId> createLexer(LexerRestartInfo<GlslTokenId> info) { return new GlslLexer(info, GlslVocabularyManager.getInstance(mimeType())); } public static Language<GlslTokenId> vertexLanguage(){ return VERTEX_LANGUAGE.language(); } public static Language<GlslTokenId> fragmentLanguage(){ return FRAGMENT_LANGUAGE.language(); } public static Language<GlslTokenId> geometryLanguage(){ return GEOMETRY_LANGUAGE.language(); } }