mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[maven] IDEA-283167 Implement Maven dependency analyzer
MavenDependencyAnalyzerAction GitOrigin-RevId: 4757095b1c086a7eeda5a7350f27197180edd6d9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7cfbe0a000
commit
3cbf603509
+6
-5
@@ -19,7 +19,7 @@ class MavenDependencyAnalyzerContributor(private val project: Project) : Depende
|
||||
override fun getExternalProjects(): List<DependencyAnalyzerContributor.ExternalProject> {
|
||||
return MavenProjectsManager.getInstance(project)
|
||||
.projects
|
||||
.map { DependencyAnalyzerContributor.ExternalProject(it.directory, it.displayName) }
|
||||
.map { DependencyAnalyzerContributor.ExternalProject(it.path, it.displayName) }
|
||||
}
|
||||
|
||||
override fun getDependencyScopes(externalProjectPath: String): List<DependencyAnalyzerContributor.Scope> {
|
||||
@@ -33,7 +33,7 @@ class MavenDependencyAnalyzerContributor(private val project: Project) : Depende
|
||||
|
||||
override fun getDependencies(externalProjectPath: String): List<DependencyAnalyzerContributor.Dependency> {
|
||||
return LocalFileSystem.getInstance().findFileByPath(externalProjectPath)
|
||||
?.let { MavenProjectsManager.getInstance(project).findContainingProject(it) }
|
||||
?.let { MavenProjectsManager.getInstance(project).findProject(it) }
|
||||
?.let { createDependencyList(it) }
|
||||
?: emptyList()
|
||||
}
|
||||
@@ -85,7 +85,8 @@ class MavenDependencyAnalyzerContributor(private val project: Project) : Depende
|
||||
return status;
|
||||
}
|
||||
|
||||
@Suppress("HardCodedStringLiteral")
|
||||
private fun scope(id: String) =
|
||||
DependencyAnalyzerContributor.Scope(id, StringUtil.toLowerCase(id), StringUtil.toTitleCase(id))
|
||||
companion object {
|
||||
@Suppress("HardCodedStringLiteral")
|
||||
fun scope(id: String) = DependencyAnalyzerContributor.Scope(id, StringUtil.toLowerCase(id), StringUtil.toTitleCase(id))
|
||||
}
|
||||
}
|
||||
+36
-2
@@ -2,15 +2,49 @@
|
||||
package org.jetbrains.idea.maven.project.actions
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys
|
||||
import com.intellij.openapi.externalSystem.dependency.analyzer.AbstractDependencyAnalyzerAction
|
||||
import com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerContributor
|
||||
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
||||
import com.intellij.ui.treeStructure.SimpleTree
|
||||
import org.jetbrains.idea.maven.navigator.MavenProjectsStructure
|
||||
import org.jetbrains.idea.maven.project.MavenDependencyAnalyzerContributor
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager
|
||||
import org.jetbrains.idea.maven.utils.MavenUtil
|
||||
|
||||
class MavenDependencyAnalyzerAction : AbstractDependencyAnalyzerAction() {
|
||||
override fun getSystemId(e: AnActionEvent): ProjectSystemId = MavenUtil.SYSTEM_ID
|
||||
|
||||
override fun getExternalProjectPath(e: AnActionEvent): String? = null
|
||||
override fun getExternalProjectPath(e: AnActionEvent): String? {
|
||||
val data = e.getData(PlatformCoreDataKeys.CONTEXT_COMPONENT)
|
||||
if (data is SimpleTree && data.selectedNode is MavenProjectsStructure.ProjectNode) {
|
||||
return (data.selectedNode as MavenProjectsStructure.ProjectNode).mavenProject.path
|
||||
}
|
||||
if (data is SimpleTree && data.selectedNode is MavenProjectsStructure.MavenSimpleNode) {
|
||||
val selectedNode = data.selectedNode as MavenProjectsStructure.MavenSimpleNode
|
||||
val projectNode = selectedNode.findParent(MavenProjectsStructure.ProjectNode::class.java)
|
||||
if (projectNode != null) {
|
||||
return projectNode.mavenProject.path
|
||||
}
|
||||
}
|
||||
return e.project?.let { MavenProjectsManager.getInstance(it).projectsFiles.firstOrNull()?.path }
|
||||
}
|
||||
|
||||
override fun getDependency(e: AnActionEvent): DependencyAnalyzerContributor.Dependency? = null
|
||||
override fun getDependency(e: AnActionEvent): DependencyAnalyzerContributor.Dependency? {
|
||||
val data = e.getData(PlatformCoreDataKeys.CONTEXT_COMPONENT)
|
||||
if (data is SimpleTree && data.selectedNode is MavenProjectsStructure.DependencyNode) {
|
||||
val selectedNode = data.selectedNode as MavenProjectsStructure.DependencyNode
|
||||
|
||||
return DependencyAnalyzerContributor.Dependency(
|
||||
DependencyAnalyzerContributor.Dependency.Data.Artifact(
|
||||
selectedNode.artifact.groupId,
|
||||
selectedNode.artifact.artifactId,
|
||||
selectedNode.artifact.version),
|
||||
MavenDependencyAnalyzerContributor.scope(selectedNode.artifact.scope),
|
||||
null,
|
||||
listOf()
|
||||
)
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
+3
-5
@@ -16,7 +16,7 @@ import org.jetbrains.idea.maven.utils.MavenUtil
|
||||
class MavenDependencyAnalyzerGoToAction : AnAction() {
|
||||
override fun actionPerformed(e: AnActionEvent) {
|
||||
val dependency = e.getData(DependencyAnalyzerView.DEPENDENCY) ?: return
|
||||
val project = e.getData(DependencyAnalyzerView.PROJECT) ?: return
|
||||
val project = e.project ?: return
|
||||
val parent = dependency.parent ?: return
|
||||
val artifactParent = parent.data as Dependency.Data.Artifact
|
||||
val artifact = dependency.data as Dependency.Data.Artifact
|
||||
@@ -31,14 +31,12 @@ class MavenDependencyAnalyzerGoToAction : AnAction() {
|
||||
override fun update(e: AnActionEvent) {
|
||||
val systemId = e.getData(DependencyAnalyzerView.EXTERNAL_SYSTEM_ID)
|
||||
val dependency = e.getData(DependencyAnalyzerView.DEPENDENCY)
|
||||
val project = e.getData(DependencyAnalyzerView.PROJECT)
|
||||
e.presentation.isEnabledAndVisible =
|
||||
systemId == MavenUtil.SYSTEM_ID &&
|
||||
project != null &&
|
||||
e.project != null &&
|
||||
dependency?.data is Dependency.Data.Artifact &&
|
||||
dependency.parent?.data is Dependency.Data.Artifact &&
|
||||
getArtifactFile(project, dependency.parent?.data as Dependency.Data.Artifact) != null
|
||||
|
||||
getArtifactFile(e.project!!, dependency.parent?.data as Dependency.Data.Artifact) != null
|
||||
}
|
||||
|
||||
private fun getArtifactFile(project: Project, artifactParent: Dependency.Data.Artifact): VirtualFile? {
|
||||
|
||||
Reference in New Issue
Block a user