<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
    <extension
        point="org.eclipse.ui.editors">
        <editor
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
            default="true"
            extensions="rdl"
            id="com.minres.rdl.RDL"
            name="RDL Editor">
        </editor>
    </extension>
    <extension
        point="org.eclipse.ui.handlers">
        <handler
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
            <activeWhen>
                <reference
                    definitionId="com.minres.rdl.RDL.Editor.opened">
                </reference>
            </activeWhen>
        </handler>
        <handler
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
            commandId="com.minres.rdl.RDL.validate">
        <activeWhen>
            <reference
                    definitionId="com.minres.rdl.RDL.Editor.opened">
            </reference>
        </activeWhen>
        </handler>
        <!-- copy qualified name -->
        <handler
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
            <activeWhen>
                <reference definitionId="com.minres.rdl.RDL.Editor.opened" />
            </activeWhen>
        </handler>
        <handler
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
            <activeWhen>
                <and>
                    <reference definitionId="com.minres.rdl.RDL.XtextEditor.opened" />
                    <iterate>
                        <adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
                    </iterate>
                </and>
            </activeWhen>
        </handler>
    </extension>
    <extension point="org.eclipse.core.expressions.definitions">
        <definition id="com.minres.rdl.RDL.Editor.opened">
            <and>
                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
                <with variable="activeEditor">
                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
                        value="com.minres.rdl.RDL"
                        forcePluginActivation="true"/>
                </with>
            </and>
        </definition>
        <definition id="com.minres.rdl.RDL.XtextEditor.opened">
            <and>
                <reference definitionId="isXtextEditorActive"/>
                <with variable="activeEditor">
                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
                        value="com.minres.rdl.RDL"
                        forcePluginActivation="true"/>
                </with>
            </and>
        </definition>
    </extension>
    <extension
            point="org.eclipse.ui.preferencePages">
        <page
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
            id="com.minres.rdl.RDL"
            name="RDL">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
        </page>
        <page
            category="com.minres.rdl.RDL"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
            id="com.minres.rdl.RDL.coloring"
            name="Syntax Coloring">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
        </page>
        <page
            category="com.minres.rdl.RDL"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
            id="com.minres.rdl.RDL.templates"
            name="Templates">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
        </page>
        <page category="com.minres.rdl.RDL"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:com.minres.rdl.ui.preferences.RdlPreferencePage"
            id="com.minres.rdl.RDL.preferences"
            name="Output Configuration">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
        </page>
    </extension>
    <extension
            point="org.eclipse.ui.propertyPages">
        <page
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
            id="com.minres.rdl.RDL"
            name="RDL">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
            <enabledWhen>
                <adapt type="org.eclipse.core.resources.IProject"/>
            </enabledWhen>
            <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
        </page>
    </extension>
    <extension
        point="org.eclipse.ui.keywords">
        <keyword
            id="com.minres.rdl.ui.keyword_RDL"
            label="RDL"/>
    </extension>
    <extension
        point="org.eclipse.ui.commands">
    <command
            description="Trigger expensive validation"
            id="com.minres.rdl.RDL.validate"
            name="Validate">
    </command>
    <!-- copy qualified name -->
    <command
            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
            categoryId="org.eclipse.ui.category.edit"
            description="Copy the qualified name for the selected element"
            name="Copy Qualified Name">
    </command>
    <command
            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
            categoryId="org.eclipse.ui.category.edit"
            description="Copy the qualified name for the selected element"
            name="Copy Qualified Name">
    </command>
    </extension>
    <extension point="org.eclipse.ui.menus">
        <menuContribution
            locationURI="popup:#TextEditorContext?after=group.edit">
             <command
                 commandId="com.minres.rdl.RDL.validate"
                 style="push"
                 tooltip="Trigger expensive validation">
            <visibleWhen checkEnabled="false">
                <reference
                    definitionId="com.minres.rdl.RDL.Editor.opened">
                </reference>
            </visibleWhen>
        </command>
        </menuContribution>
        <!-- copy qualified name -->
        <menuContribution locationURI="popup:#TextEditorContext?after=copy">
            <command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
                style="push" tooltip="Copy Qualified Name">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="com.minres.rdl.RDL.Editor.opened" />
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="menu:edit?after=copy">
            <command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
                style="push" tooltip="Copy Qualified Name">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="com.minres.rdl.RDL.Editor.opened" />
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
            <command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
                style="push" tooltip="Copy Qualified Name">
                <visibleWhen checkEnabled="false">
                    <and>
                        <reference definitionId="com.minres.rdl.RDL.XtextEditor.opened" />
                        <iterate>
                            <adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
                        </iterate>
                    </and>
                </visibleWhen>
            </command>
        </menuContribution>
    </extension>
    <extension point="org.eclipse.ui.menus">
        <menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
            <command commandId="org.eclipse.xtext.ui.editor.FindReferences">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="com.minres.rdl.RDL.Editor.opened">
                    </reference>
                </visibleWhen>
            </command>
        </menuContribution>
    </extension>
    <extension point="org.eclipse.ui.handlers">
        <handler
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
            commandId="org.eclipse.xtext.ui.editor.FindReferences">
            <activeWhen>
                <reference
                    definitionId="com.minres.rdl.RDL.Editor.opened">
                </reference>
            </activeWhen>
        </handler>
    </extension>
    <extension point="org.eclipse.core.contenttype.contentTypes">
        <content-type
            base-type="org.eclipse.core.runtime.text"
            file-extensions="rdl"
            id="com.minres.rdl.RDL.contenttype"
            name="RDL File"
            priority="normal">
        </content-type>
    </extension>
    <!-- adding resource factories -->
    <extension
        point="org.eclipse.emf.ecore.extension_parser">
        <parser
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
            type="rdl">
        </parser>
    </extension>
    <extension point="org.eclipse.xtext.extension_resourceServiceProvider">
        <resourceServiceProvider
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
            uriExtension="rdl">
        </resourceServiceProvider>
    </extension>
    <!-- marker definitions for com.minres.rdl.RDL -->
    <extension
            id="rdl.check.fast"
            name="RDL Problem"
            point="org.eclipse.core.resources.markers">
        <super type="org.eclipse.xtext.ui.check.fast"/>
        <persistent value="true"/>
    </extension>
    <extension
            id="rdl.check.normal"
            name="RDL Problem"
            point="org.eclipse.core.resources.markers">
        <super type="org.eclipse.xtext.ui.check.normal"/>
        <persistent value="true"/>
    </extension>
    <extension
            id="rdl.check.expensive"
            name="RDL Problem"
            point="org.eclipse.core.resources.markers">
        <super type="org.eclipse.xtext.ui.check.expensive"/>
        <persistent value="true"/>
    </extension>
    <extension point="org.eclipse.ui.preferencePages">
        <page
            category="com.minres.rdl.RDL"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.validation.ValidatorPreferencePage"
            id="com.minres.rdl.RDL.validator.preferencePage"
            name="Errors/Warnings">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
        </page>
    </extension>
    <extension point="org.eclipse.ui.preferencePages">
        <page
            category="com.minres.rdl.RDL"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
            id="com.minres.rdl.RDL.compiler.preferencePage"
            name="Compiler">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
        </page>
    </extension>
    <extension point="org.eclipse.ui.propertyPages">
        <page
            category="com.minres.rdl.RDL"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
            id="com.minres.rdl.RDL.compiler.propertyPage"
            name="Compiler">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
            <enabledWhen>
                <adapt type="org.eclipse.core.resources.IProject"/>
            </enabledWhen>
            <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
        </page>
    </extension>
    <extension point="org.eclipse.ui.menus">
        <menuContribution locationURI="popup:#TextEditorContext?after=xtext.ui.openDeclaration">
            <command
                commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand"
                id="com.minres.rdl.RDL.OpenGeneratedCode"
                style="push">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="com.minres.rdl.RDL.Editor.opened" />
                </visibleWhen>
            </command>
        </menuContribution>
    </extension>
    <extension point="org.eclipse.ui.handlers">
        <handler
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
            commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
            <activeWhen>
                <reference definitionId="com.minres.rdl.RDL.Editor.opened" />
            </activeWhen>
        </handler>
    </extension>
    <!-- Quick Outline -->
    <extension
        point="org.eclipse.ui.handlers">
        <handler 
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
            commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
            <activeWhen>
                <reference
                    definitionId="com.minres.rdl.RDL.Editor.opened">
                </reference>
            </activeWhen>
        </handler>
    </extension>
    <extension
        point="org.eclipse.ui.commands">
        <command
            description="Open the quick outline."
            id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
            name="Quick Outline">
        </command>
    </extension>
    <extension point="org.eclipse.ui.menus">
        <menuContribution
            locationURI="popup:#TextEditorContext?after=group.open">
            <command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
                style="push"
                tooltip="Open Quick Outline">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="com.minres.rdl.RDL.Editor.opened"/>
                </visibleWhen>
            </command>
        </menuContribution>
    </extension>
    <!-- quickfix marker resolution generator for com.minres.rdl.RDL -->
    <extension
            point="org.eclipse.ui.ide.markerResolution">
        <markerResolutionGenerator
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
            markerType="com.minres.rdl.ui.rdl.check.fast">
            <attribute
                name="FIXABLE_KEY"
                value="true">
            </attribute>
        </markerResolutionGenerator>
        <markerResolutionGenerator
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
            markerType="com.minres.rdl.ui.rdl.check.normal">
            <attribute
                name="FIXABLE_KEY"
                value="true">
            </attribute>
        </markerResolutionGenerator>
        <markerResolutionGenerator
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
            markerType="com.minres.rdl.ui.rdl.check.expensive">
            <attribute
                name="FIXABLE_KEY"
                value="true">
            </attribute>
        </markerResolutionGenerator>
    </extension>
    <!-- Rename Refactoring -->
    <extension point="org.eclipse.ui.handlers">
        <handler 
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
            commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
            <activeWhen>
                <reference
                    definitionId="com.minres.rdl.RDL.Editor.opened">
                </reference>
            </activeWhen>
        </handler>
    </extension>
    <extension point="org.eclipse.ui.menus">
        <menuContribution
            locationURI="popup:#TextEditorContext?after=group.edit">
            <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
                style="push">
                <visibleWhen checkEnabled="false">
                    <reference
                        definitionId="com.minres.rdl.RDL.Editor.opened">
                    </reference>
                </visibleWhen>
            </command>
        </menuContribution>
    </extension>
    <extension point="org.eclipse.ui.preferencePages">
        <page
            category="com.minres.rdl.RDL"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
            id="com.minres.rdl.RDL.refactoring"
            name="Refactoring">
            <keywordReference id="com.minres.rdl.ui.keyword_RDL"/>
        </page>
    </extension>
    <extension point="org.eclipse.compare.contentViewers">
        <viewer id="com.minres.rdl.RDL.compare.contentViewers"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
            extensions="rdl">
        </viewer>
        <contentTypeBinding
            contentTypeId="com.minres.rdl.RDL.contenttype"
            contentViewerId="com.minres.rdl.RDL.compare.contentViewers" />
    </extension>
    <extension point="org.eclipse.compare.contentMergeViewers">
        <viewer id="com.minres.rdl.RDL.compare.contentMergeViewers"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
            extensions="rdl" label="RDL Compare">
        </viewer>
        <contentTypeBinding
            contentTypeId="com.minres.rdl.RDL.contenttype"
            contentMergeViewerId="com.minres.rdl.RDL.compare.contentMergeViewers" />
    </extension>
    <extension point="org.eclipse.ui.editors.documentProviders">
        <provider id="com.minres.rdl.RDL.editors.documentProviders"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
            extensions="rdl">
        </provider>
    </extension>
    <extension point="org.eclipse.team.core.fileTypes">
        <fileTypes
            extension="rdl"
            type="text">
        </fileTypes>
    </extension>
    <extension
        point="org.eclipse.ui.newWizards">
        <category id="com.minres.category" name="MINRES">
        </category>
        <wizard
            category="com.minres.category"
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.ui.wizard.template.TemplateNewProjectWizard"
            id="com.minres.rdl.ui.wizard.RDLNewProjectWizard"
            name="RDL Project"
            icon="icons/new_RDL_proj.gif"
            project="true">
        </wizard>
    </extension>
    <extension
          point="org.eclipse.xtext.ui.projectTemplate">
       <projectTemplateProvider
             class="com.minres.rdl.ui.wizard.RDLProjectTemplateProvider"
             grammarName="com.minres.rdl.RDL">
       </projectTemplateProvider>
    </extension>
    <extension
        point="org.eclipse.ui.perspectiveExtensions">
        <perspectiveExtension targetID="org.eclipse.ui.resourcePerspective">
            <newWizardShortcut id="com.minres.rdl.ui.wizard.RDLNewProjectWizard"/>
        </perspectiveExtension>
    </extension>
<!--    <extension point="org.eclipse.xtext.builder.participant">
        <participant
            class="com.minres.rdl.ui.RDLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
            fileExtensions="rdl"/>
    </extension>-->
    <extension
        point="org.eclipse.ui.handlers">
        <handler
           class="com.minres.rdl.ui.RDLExecutableExtensionFactory:com.minres.rdl.ui.builder.GenerationHandler"
           commandId="com.minres.rdl.ui.handler.GenerationCommand">
        </handler>
      
    </extension>
    <extension
        point="org.eclipse.ui.commands">
        <command name="Generate Code from RDL"
              id="com.minres.rdl.ui.handler.GenerationCommand">
        </command>
    </extension>
    <extension point="org.eclipse.ui.menus">
        <menuContribution locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu">
            <command
                commandId="com.minres.rdl.ui.handler.GenerationCommand"
                style="push">
                <visibleWhen
                    checkEnabled="false">
                    <iterate>
                        <adapt type="org.eclipse.core.resources.IResource">
                            <test property="org.eclipse.core.resources.name" 
                                value="*.rdl"/>
                        </adapt>
                    </iterate>
                </visibleWhen>
            </command>
        </menuContribution>
    </extension>
    <extension point="org.eclipse.ui.menus">
        <menuContribution locationURI="popup:#TextEditorContext?after=additions">
            <command
                commandId="com.minres.rdl.ui.handler.GenerationCommand"
                style="push">
                <visibleWhen checkEnabled="false">
                   <reference
                       definitionId="com.minres.rdl.RDL.Editor.opened">
                   </reference>
                </visibleWhen>
            </command>
        </menuContribution>
    </extension>
</plugin>
