diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java index e9149d4ce99e..1686869dc9ca 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenRootModelAdapter.java @@ -310,6 +310,17 @@ public class MavenRootModelAdapter { return name != null && name.startsWith(MAVEN_LIB_PREFIX); } + @Nullable + public static OrderEntry findLibraryEntry(Module m, MavenArtifact artifact) { + String name = makeLibraryName(artifact); + for (OrderEntry each : ModuleRootManager.getInstance(m).getOrderEntries()) { + if (each instanceof LibraryOrderEntry && name.equals(((LibraryOrderEntry)each).getLibraryName())) { + return each; + } + } + return null; + } + public void setLanguageLevel(LanguageLevel level) { try { myRootModel.getModuleExtension(LanguageLevelModuleExtension.class).setLanguageLevel(level); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigatorPanel.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigatorPanel.java index 3dab39617a4a..0aa838a10678 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigatorPanel.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigatorPanel.java @@ -124,24 +124,36 @@ public class MavenProjectsNavigatorPanel extends SimpleToolWindowPanel implement } private VirtualFile extractVirtualFile() { + for (MavenProjectsStructure.CustomNode each : getSelectedNodes(MavenProjectsStructure.CustomNode.class)) { + VirtualFile file = each.getVirtualFile(); + if (file != null) return file; + } + final MavenProjectsStructure.ProjectNode projectNode = getContextProjectNode(); if (projectNode == null) return null; - VirtualFile file = projectNode.getFile(); + VirtualFile file = projectNode.getVirtualFile(); if (file == null || !file.isValid()) return null; return file; } private Object extractVirtualFiles() { final List files = new ArrayList(); - for (MavenProjectsStructure.ProjectNode projectNode : getSelectedProjectNodes()) { - VirtualFile file = projectNode.getFile(); - if (file.isValid()) { - files.add(file); - } + for (MavenProjectsStructure.CustomNode each : getSelectedNodes(MavenProjectsStructure.CustomNode.class)) { + VirtualFile file = each.getVirtualFile(); + if (file != null) files.add(file); } return files.isEmpty() ? null : VfsUtil.toVirtualFileArray(files); } + private Object extractNavigatables() { + final List navigatables = new ArrayList(); + for (MavenProjectsStructure.CustomNode each : getSelectedNodes(MavenProjectsStructure.CustomNode.class)) { + Navigatable navigatable = each.getNavigatable(); + if (navigatable != null) navigatables.add(navigatable); + } + return navigatables.isEmpty() ? null : navigatables.toArray(new Navigatable[navigatables.size()]); + } + private Object extractLocation() { VirtualFile file = extractVirtualFile(); List goals = extractGoals(); @@ -150,17 +162,6 @@ public class MavenProjectsNavigatorPanel extends SimpleToolWindowPanel implement return new MavenGoalLocation(myProject, file, extractGoals()); } - private Object extractNavigatables() { - final List navigatables = new ArrayList(); - for (MavenProjectsStructure.ProjectNode projectNode : getSelectedProjectNodes()) { - final Navigatable navigatable = projectNode.getNavigatable(); - if (navigatable != null) { - navigatables.add(navigatable); - } - } - return navigatables.isEmpty() ? null : navigatables.toArray(new Navigatable[navigatables.size()]); - } - private List extractGoals() { final MavenProjectsStructure.ProjectNode projectNode = getSelectedProjectNode(); if (projectNode != null) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java index 1a5677d6c54b..5c98c080388c 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java @@ -44,6 +44,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.update.Update; import gnu.trove.THashMap; import gnu.trove.THashSet; +import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import org.jetbrains.idea.maven.dom.MavenDomUtil; import org.jetbrains.idea.maven.dom.model.MavenDomDependency; @@ -531,6 +532,12 @@ public class MavenProjectsManager extends SimpleProjectComponent implements Pers return f == null ? null : findProject(f); } + @Nullable + public Module findModule(MavenProject project) { + if (!isInitialized()) return null; + return ProjectRootManager.getInstance(myProject).getFileIndex().getModuleForFile(project.getFile()); + } + public MavenProject findContainingProject(VirtualFile file) { if (!isInitialized()) return null; Module module = ProjectRootManager.getInstance(myProject).getFileIndex().getModuleForFile(file); diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigatorTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigatorTest.java index 86a61b90dd1b..b19376c5d185 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigatorTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigatorTest.java @@ -71,7 +71,7 @@ public class MavenProjectsNavigatorTest extends MavenImportingTestCase { readFiles(myProjectPom); assertEquals(1, getRootNodes().size()); - assertEquals(myProjectPom, getRootNodes().get(0).getFile()); + assertEquals(myProjectPom, getRootNodes().get(0).getVirtualFile()); assertEquals(0, getRootNodes().get(0).getModulesNode().getProjectNodes().size()); VirtualFile m = createModulePom("m", "test" + @@ -80,9 +80,9 @@ public class MavenProjectsNavigatorTest extends MavenImportingTestCase { readFiles(m); assertEquals(1, getRootNodes().size()); - assertEquals(myProjectPom, getRootNodes().get(0).getFile()); + assertEquals(myProjectPom, getRootNodes().get(0).getVirtualFile()); assertEquals(1, getRootNodes().get(0).getModulesNode().getProjectNodes().size()); - assertEquals(m, getRootNodes().get(0).getModulesNode().getProjectNodes().get(0).getFile()); + assertEquals(m, getRootNodes().get(0).getModulesNode().getProjectNodes().get(0).getVirtualFile()); } public void testReconnectingModulesWhenParentRead() throws Exception { @@ -94,7 +94,7 @@ public class MavenProjectsNavigatorTest extends MavenImportingTestCase { readFiles(m); assertEquals(1, getRootNodes().size()); - assertEquals(m, getRootNodes().get(0).getFile()); + assertEquals(m, getRootNodes().get(0).getVirtualFile()); createProjectPom("test" + "project" + @@ -106,9 +106,9 @@ public class MavenProjectsNavigatorTest extends MavenImportingTestCase { readFiles(myProjectPom); assertEquals(1, getRootNodes().size()); - assertEquals(myProjectPom, getRootNodes().get(0).getFile()); + assertEquals(myProjectPom, getRootNodes().get(0).getVirtualFile()); assertEquals(1, getRootNodes().get(0).getModulesNode().getProjectNodes().size()); - assertEquals(m, getRootNodes().get(0).getModulesNode().getProjectNodes().get(0).getFile()); + assertEquals(m, getRootNodes().get(0).getModulesNode().getProjectNodes().get(0).getVirtualFile()); } public void testReconnectingModulesWhenProjectBecomesParent() throws Exception { @@ -135,9 +135,9 @@ public class MavenProjectsNavigatorTest extends MavenImportingTestCase { readFiles(myProjectPom); assertEquals(1, getRootNodes().size()); - assertEquals(myProjectPom, getRootNodes().get(0).getFile()); + assertEquals(myProjectPom, getRootNodes().get(0).getVirtualFile()); assertEquals(1, getRootNodes().get(0).getModulesNode().getProjectNodes().size()); - assertEquals(m, getRootNodes().get(0).getModulesNode().getProjectNodes().get(0).getFile()); + assertEquals(m, getRootNodes().get(0).getModulesNode().getProjectNodes().get(0).getVirtualFile()); } public void testUpdatingWhenManagedFilesChange() throws Exception { @@ -241,14 +241,14 @@ public class MavenProjectsNavigatorTest extends MavenImportingTestCase { assertEquals(1, getRootNodes().size()); assertEquals(1, myStructure.getRootElement().getChildren().length); MavenProjectsStructure.ProjectNode projectNode = (MavenProjectsStructure.ProjectNode)myStructure.getRootElement().getChildren()[0]; - assertEquals(myProjectPom, projectNode.getFile()); + assertEquals(myProjectPom, projectNode.getVirtualFile()); assertEquals(1, projectNode.getModulesNode().getProjectNodes().size()); myNavigator.setShowIgnored(false); assertEquals(2, getRootNodes().size()); assertEquals(1, myStructure.getRootElement().getChildren().length); // only one of them is visible projectNode = (MavenProjectsStructure.ProjectNode)myStructure.getRootElement().getChildren()[0]; - assertEquals(m, projectNode.getFile()); + assertEquals(m, projectNode.getVirtualFile()); assertEquals(0, projectNode.getModulesNode().getProjectNodes().size()); } @@ -265,8 +265,8 @@ public class MavenProjectsNavigatorTest extends MavenImportingTestCase { readFiles(m1, m2); assertEquals(2, getRootNodes().size()); - assertEquals(m1, getRootNodes().get(0).getFile()); - assertEquals(m2, getRootNodes().get(1).getFile()); + assertEquals(m1, getRootNodes().get(0).getVirtualFile()); + assertEquals(m2, getRootNodes().get(1).getVirtualFile()); createModulePom("m2", "test" + "am2" + @@ -274,8 +274,8 @@ public class MavenProjectsNavigatorTest extends MavenImportingTestCase { readFiles(m2); assertEquals(2, getRootNodes().size()); - assertEquals(m2, getRootNodes().get(0).getFile()); - assertEquals(m1, getRootNodes().get(1).getFile()); + assertEquals(m2, getRootNodes().get(0).getVirtualFile()); + assertEquals(m1, getRootNodes().get(1).getVirtualFile()); } public void testReloadingState() throws Exception {