mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Maven: dependency tree in the Maven Projects view
This commit is contained in:
+11
@@ -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);
|
||||
|
||||
+18
-17
@@ -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);
|
||||
|
||||
+14
-14
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user