/* * Copyright (c) 2012 Sam Harwell, Tunnel Vision Laboratories LLC * All rights reserved. * * The source code of this document is proprietary work, and is not licensed for * distribution. For information about licensing, contact Sam Harwell at: * sam@tunnelvisionlabs.com */ package org.antlr.works.editor.st4; import java.util.List; import org.antlr.netbeans.editor.classification.TokenTag; import org.antlr.netbeans.editor.completion.Anchor; import org.antlr.netbeans.editor.navigation.Description; import org.antlr.netbeans.editor.tagging.Tagger; import org.antlr.netbeans.parsing.spi.ParserDataDefinition; import org.antlr.netbeans.parsing.spi.ParserTaskScheduler; import org.antlr.v4.runtime.Dependents; import org.antlr.v4.runtime.RuleDependency; import org.antlr.v4.runtime.Token; import org.antlr.works.editor.st4.codemodel.FileModel; import org.antlr.works.editor.st4.experimental.CurrentTemplateContextData; import org.antlr.works.editor.st4.experimental.generated.TemplateParser; import org.antlr.works.editor.st4.experimental.generated.TemplateParser.GroupFileContext; import org.antlr.works.editor.st4.parser.CompiledModel; import org.netbeans.api.editor.mimelookup.MimeRegistration; /** * * @author Sam Harwell */ public class TemplateParserDataDefinitions { public static final ParserDataDefinition<CompiledModel> COMPILED_MODEL = new CompiledModelDataDefinition(); public static final ParserDataDefinition<List<Anchor>> REFERENCE_ANCHOR_POINTS = new ReferenceAnchorPointsDataDefinition(); @RuleDependency(recognizer=TemplateParser.class, rule=TemplateParser.RULE_groupFile, version=4, dependents=Dependents.SELF) public static final ParserDataDefinition<GroupFileContext> REFERENCE_PARSE_TREE = new ReferenceParseTreeDataDefinition(); public static final ParserDataDefinition<List<Anchor>> DYNAMIC_ANCHOR_POINTS = new DynamicAnchorPointsDataDefinition(); public static final ParserDataDefinition<Tagger<TokenTag<Token>>> LEXER_TOKENS = new LexerTokensDataDefinition(); public static final ParserDataDefinition<CurrentTemplateContextData> CURRENT_TEMPLATE_CONTEXT = new CurrentTemplateContextDataDefinition(); public static final ParserDataDefinition<FileModel> FILE_MODEL = new FileModelDataDefinition(); public static final ParserDataDefinition<Description> NAVIGATOR_ROOT = new NavigatorRootDataDefinition(); public static final ParserDataDefinition<Boolean> NAVIGATOR_UI_VISIBLE = new NavigatorUIVisibleDataDefinition(); public static final ParserDataDefinition<Boolean> PARSE_TREE_UI_VISIBLE = new ParseTreeUIVisibleDataDefinition(); private TemplateParserDataDefinitions() { } @MimeRegistration(mimeType=StringTemplateEditorKit.TEMPLATE_MIME_TYPE, service=ParserDataDefinition.class) public static ParserDataDefinition<CompiledModel> getCompiledModelDataDefinition() { return COMPILED_MODEL; } @MimeRegistration(mimeType=StringTemplateEditorKit.TEMPLATE_MIME_TYPE, service=ParserDataDefinition.class) public static ParserDataDefinition<List<Anchor>> getReferenceAnchorPointsDataDefinition() { return REFERENCE_ANCHOR_POINTS; } @MimeRegistration(mimeType=StringTemplateEditorKit.TEMPLATE_MIME_TYPE, service=ParserDataDefinition.class) @RuleDependency(recognizer=TemplateParser.class, rule=TemplateParser.RULE_groupFile, version=4, dependents=Dependents.SELF) public static ParserDataDefinition<GroupFileContext> getReferenceParseTreeDataDefinition() { return REFERENCE_PARSE_TREE; } @MimeRegistration(mimeType=StringTemplateEditorKit.TEMPLATE_MIME_TYPE, service=ParserDataDefinition.class) public static ParserDataDefinition<List<Anchor>> getDynamicAnchorPointsDataDefinition() { return DYNAMIC_ANCHOR_POINTS; } @MimeRegistration(mimeType=StringTemplateEditorKit.TEMPLATE_MIME_TYPE, service=ParserDataDefinition.class) public static ParserDataDefinition<Tagger<TokenTag<Token>>> getLexerTokensDataDefinition() { return LEXER_TOKENS; } @MimeRegistration(mimeType=StringTemplateEditorKit.TEMPLATE_MIME_TYPE, service=ParserDataDefinition.class) public static ParserDataDefinition<CurrentTemplateContextData> getCurrentTemplateContextDataDefinition() { return CURRENT_TEMPLATE_CONTEXT; } @MimeRegistration(mimeType=StringTemplateEditorKit.TEMPLATE_MIME_TYPE, service=ParserDataDefinition.class) public static ParserDataDefinition<FileModel> getFileModelDataDefinition() { return FILE_MODEL; } @MimeRegistration(mimeType=StringTemplateEditorKit.TEMPLATE_MIME_TYPE, service=ParserDataDefinition.class) public static ParserDataDefinition<Description> getNavigatorRootDataDefinition() { return NAVIGATOR_ROOT; } private static final class CompiledModelDataDefinition extends ParserDataDefinition<CompiledModel> { public CompiledModelDataDefinition() { super("StringTemplate Compiled Model", CompiledModel.class, false, true, ParserTaskScheduler.CONTENT_SENSITIVE_TASK_SCHEDULER); } } private static final class ReferenceAnchorPointsDataDefinition extends ParserDataDefinition<List<Anchor>> { @SuppressWarnings("unchecked") public ReferenceAnchorPointsDataDefinition() { super("StringTemplate Reference Anchor Points", (Class<List<Anchor>>)(Object)List.class, false, true, ParserTaskScheduler.CONTENT_SENSITIVE_TASK_SCHEDULER); } } @RuleDependency(recognizer=TemplateParser.class, rule=TemplateParser.RULE_groupFile, version=4, dependents=Dependents.SELF) private static final class ReferenceParseTreeDataDefinition extends ParserDataDefinition<GroupFileContext> { @RuleDependency(recognizer=TemplateParser.class, rule=TemplateParser.RULE_groupFile, version=4, dependents=Dependents.SELF) public ReferenceParseTreeDataDefinition() { super("StringTemplate Reference Parse Tree", GroupFileContext.class, false, true, ParserTaskScheduler.CONTENT_SENSITIVE_TASK_SCHEDULER); } } private static final class DynamicAnchorPointsDataDefinition extends ParserDataDefinition<List<Anchor>> { @SuppressWarnings("unchecked") public DynamicAnchorPointsDataDefinition() { super("StringTemplate Dynamic Anchor Points", (Class<List<Anchor>>)(Object)List.class, false, true, ParserTaskScheduler.EDITOR_SENSITIVE_TASK_SCHEDULER); } } private static final class LexerTokensDataDefinition extends ParserDataDefinition<Tagger<TokenTag<Token>>> { @SuppressWarnings("unchecked") public LexerTokensDataDefinition() { super("StringTemplate Lexer Tokens", (Class<Tagger<TokenTag<Token>>>)(Object)Tagger.class, false, true, ParserTaskScheduler.CONTENT_SENSITIVE_TASK_SCHEDULER); } } private static final class CurrentTemplateContextDataDefinition extends ParserDataDefinition<CurrentTemplateContextData> { public CurrentTemplateContextDataDefinition() { super("StringTemplate Current Template Context", CurrentTemplateContextData.class, true, true, ParserTaskScheduler.CURSOR_SENSITIVE_TASK_SCHEDULER); } } private static final class FileModelDataDefinition extends ParserDataDefinition<FileModel> { public FileModelDataDefinition() { super("StringTemplate File Model", FileModel.class, false, true, ParserTaskScheduler.CONTENT_SENSITIVE_TASK_SCHEDULER); } } private static final class NavigatorRootDataDefinition extends ParserDataDefinition<Description> { public NavigatorRootDataDefinition() { super("StringTemplate Navigator Root", Description.class, false, true, ParserTaskScheduler.INPUT_SENSITIVE_TASK_SCHEDULER); } } private static final class NavigatorUIVisibleDataDefinition extends ParserDataDefinition<Boolean> { public NavigatorUIVisibleDataDefinition() { super("StringTemplate Navigator UI Visible", Boolean.class, false, false, ParserTaskScheduler.MANUAL_TASK_SCHEDULER); } } private static final class ParseTreeUIVisibleDataDefinition extends ParserDataDefinition<Boolean> { public ParseTreeUIVisibleDataDefinition() { super("StringTemplate Parse Tree UI Visible", Boolean.class, false, false, ParserTaskScheduler.MANUAL_TASK_SCHEDULER); } } }