<!--
  ~ Copyright 2003-2012 JetBrains s.r.o.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude">
  <id>jetbrains.mps.idea.java</id>
  <name>MPS BaseLanguage Support</name>
  <description>Integrate MPS BaseLanguage (Java) into IDEA PSI Model</description>
  <category>Custom Languages</category>
  <version>2025.1</version>
  <vendor url="http://www.jetbrains.com/mps/">JetBrains</vendor>
  <idea-version since-build="251.1" until-build="252.1"/>
  <depends>jetbrains.mps.core</depends>

  <xi:include href="JavaPlatform.xml"/>

  <application-components>
    <component>
      <implementation-class>jetbrains.mps.idea.java.fastFind.EmptyJavaStubsFindUsages</implementation-class>
    </component>
  </application-components>

  <project-components>
    <component>
      <implementation-class>jetbrains.mps.idea.java.refactoring.MoveRenameBatch</implementation-class>
    </component>
    <component>
      <implementation-class>jetbrains.mps.idea.java.psi.PsiChangesWatcher</implementation-class>
    </component>
    <component>
      <implementation-class>jetbrains.mps.idea.java.refactoring.RegisterMoveStaticMemberPsiParticipant</implementation-class>
    </component>
  </project-components>

  <actions>
    <action id="jetbrains.mps.idea.scopes.CheckScopesAction"
            class="jetbrains.mps.idea.scopes.CheckScopesAction">
      <add-to-group group-id="ProjectViewPopupMenuSettingsGroup"/>
    </action>
    <action id="jetbrains.mps.idea.java.convert.ConvertPackageToModel"
            class="jetbrains.mps.idea.java.convert.ConvertPackageToModel">
      <add-to-group group-id="ProjectViewPopupMenuSettingsGroup"/>
    </action>
  </actions>

  <extensions defaultExtensionNs="com.intellij">
    <mps.modelRootContributor className="jetbrains.mps.idea.sourceStubs.JavaSourceModelRootContributor"/>
    <mps.modelTemplateProvider implementation="jetbrains.mps.idea.java.JavaModelTemplateProvider"/>
    <mps.psiFactory implementation="jetbrains.mps.idea.java.psi.impl.JavaMPSPsiNodeFactory"/>
    <mps.psiSourceFinder implementation="jetbrains.mps.idea.java.fastFind.ClassStubPsiMapper"/>
    <mps.psiSourceFinder implementation="jetbrains.mps.idea.java.psiStubs.Mapper"/>
    <mps.renameRefactoringContributor className="jetbrains.mps.idea.java.refactoring.MethodRenameContributor" order="before mps-core-rename"/>
    <debugger.positionManagerFactory implementation="jetbrains.mps.idea.java.debugger.MpsPositionManagerFactory"/>
    <compileServer.plugin classpath="jps/mps-java-jps-plugin.jar;jps/mps-java-jps-plugin-j8.jar;java-platform.jar;java-core.jar"/>
    <referencesSearch implementation="jetbrains.mps.idea.java.usages.MPSReferenceSearch"/>
    <java.elementFinder implementation="jetbrains.mps.idea.java.psi.impl.MPSJavaClassFinder"/>
    <java.elementFinder implementation="jetbrains.mps.idea.java.psi.impl.MPSPackageFinder"/>
    <java.shortNamesCache implementation="jetbrains.mps.idea.java.psi.impl.MPSJavaShortNamesCache"/>

    <directClassInheritorsSearch implementation="jetbrains.mps.idea.java.usages.MPSJavaDirectInheritorsSearcher"/>
    <methodReferencesSearch implementation="jetbrains.mps.idea.java.usages.MPSMethodReferencesSearch"/>
    <fileBasedIndex implementation="jetbrains.mps.idea.java.index.MPSFQNameJavaClassIndex"/>
    <fileBasedIndex implementation="jetbrains.mps.idea.java.index.MPSJavaPackageIndex"/>
    <fileBasedIndex implementation="jetbrains.mps.idea.java.index.MPSShortNameJavaClassIndex"/>
    <fileBasedIndex implementation="jetbrains.mps.idea.java.index.MPSJavaMethodIndex"/>
    <fileBasedIndex implementation="jetbrains.mps.idea.java.index.MPSJavaFieldIndex"/>
    <findUsagesHandlerFactory implementation="jetbrains.mps.idea.java.usages.MPSFindUsagesHandlerFactory" id="mps"
                              order="before java"/>
    <refactoring.elementListenerProvider implementation="jetbrains.mps.idea.java.refactoring.PackageRenameListener"/>
    <mps.gotoParticipant implementation="jetbrains.mps.idea.java.fastFind.JavaPsiStubsNavigationContributor"/>
  </extensions>

  <extensions defaultExtensionNs="jetbrains.mps">
    <nodeStructureViewProvider implementation="jetbrains.mps.idea.java.psi.structureView.MPSStructureViewFactory"/>
  </extensions>

</idea-plugin>
