Maven: dependency tree in the Maven Projects view

This commit is contained in:
Anton.Makeev
2009-11-16 15:12:18 +03:00
parent 8576e88f98
commit c1420efcbe
4 changed files with 50 additions and 31 deletions
@@ -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);
@@ -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<VirtualFile> files = new ArrayList<VirtualFile>();
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<Navigatable> navigatables = new ArrayList<Navigatable>();
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<String> goals = extractGoals();
@@ -150,17 +162,6 @@ public class MavenProjectsNavigatorPanel extends SimpleToolWindowPanel implement
return new MavenGoalLocation(myProject, file, extractGoals());
}
private Object extractNavigatables() {
final List<Navigatable> navigatables = new ArrayList<Navigatable>();
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<String> extractGoals() {
final MavenProjectsStructure.ProjectNode projectNode = getSelectedProjectNode();
if (projectNode != null) {
@@ -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);
@@ -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", "<groupId>test</groupId>" +
@@ -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("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
@@ -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", "<groupId>test</groupId>" +
"<artifactId>am2</artifactId>" +
@@ -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 {