diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenDependencyAnalyzerContributor.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenDependencyAnalyzerContributor.kt index b952e7a73418..c6362b0a3e12 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenDependencyAnalyzerContributor.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenDependencyAnalyzerContributor.kt @@ -19,7 +19,7 @@ class MavenDependencyAnalyzerContributor(private val project: Project) : Depende override fun getExternalProjects(): List { 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 { @@ -33,7 +33,7 @@ class MavenDependencyAnalyzerContributor(private val project: Project) : Depende override fun getDependencies(externalProjectPath: String): List { 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)) + } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenDependencyAnalyzerAction.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenDependencyAnalyzerAction.kt index cb92473d6269..9c9f4b81d8d8 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenDependencyAnalyzerAction.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenDependencyAnalyzerAction.kt @@ -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 + } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenDependencyAnalyzerGoToAction.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenDependencyAnalyzerGoToAction.kt index aba0c0b9c9a7..21887320de08 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenDependencyAnalyzerGoToAction.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenDependencyAnalyzerGoToAction.kt @@ -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? {