mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
improved modules dependencies diagram, added 'Show module cycles' intention action
This commit is contained in:
@@ -130,7 +130,16 @@ public abstract class ModuleManager {
|
||||
* @return the module dependency graph.
|
||||
*/
|
||||
@NotNull public abstract Graph<Module> moduleGraph();
|
||||
|
||||
|
||||
/**
|
||||
* Returns the graph of dependencies between modules in the project.
|
||||
*
|
||||
* @param includeTests whether test-only dependencies should be included
|
||||
* @return the module dependency graph.
|
||||
* @since 11.0
|
||||
*/
|
||||
@NotNull public abstract Graph<Module> moduleGraph(boolean includeTests);
|
||||
|
||||
/**
|
||||
* Adds a listener for receiving notifications to the module structure of the project.
|
||||
*
|
||||
|
||||
@@ -534,8 +534,14 @@ public class ModuleManagerImpl extends ModuleManager implements ProjectComponent
|
||||
|
||||
@NotNull
|
||||
public Graph<Module> moduleGraph() {
|
||||
return moduleGraph(true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Graph<Module> moduleGraph(boolean includeTests) {
|
||||
ApplicationManager.getApplication().assertReadAccessAllowed();
|
||||
return myModuleModel.moduleGraph();
|
||||
return myModuleModel.moduleGraph(includeTests);
|
||||
}
|
||||
|
||||
@NotNull public List<Module> getModuleDependentModules(@NotNull Module module) {
|
||||
@@ -782,18 +788,18 @@ public class ModuleManagerImpl extends ModuleManager implements ProjectComponent
|
||||
}
|
||||
|
||||
private Comparator<Module> moduleDependencyComparator() {
|
||||
DFSTBuilder<Module> builder = new DFSTBuilder<Module>(moduleGraph());
|
||||
DFSTBuilder<Module> builder = new DFSTBuilder<Module>(moduleGraph(true));
|
||||
return builder.comparator();
|
||||
}
|
||||
|
||||
private Graph<Module> moduleGraph() {
|
||||
private Graph<Module> moduleGraph(final boolean includeTests) {
|
||||
return GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph<Module>() {
|
||||
public Collection<Module> getNodes() {
|
||||
return myPathToModule.values();
|
||||
}
|
||||
|
||||
public Iterator<Module> getIn(Module m) {
|
||||
Module[] dependentModules = ModuleRootManager.getInstance(m).getDependencies();
|
||||
Module[] dependentModules = ModuleRootManager.getInstance(m).getDependencies(includeTests);
|
||||
return Arrays.asList(dependentModules).iterator();
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -289,10 +289,16 @@ abstract class OrderEnumeratorBase extends OrderEnumerator implements OrderEnume
|
||||
forEach(new Processor<OrderEntry>() {
|
||||
@Override
|
||||
public boolean process(OrderEntry orderEntry) {
|
||||
if (orderEntry instanceof ModuleSourceOrderEntry) {
|
||||
if (myRecursively && orderEntry instanceof ModuleSourceOrderEntry) {
|
||||
final Module module = ((ModuleSourceOrderEntry)orderEntry).getRootModel().getModule();
|
||||
return processor.process(module);
|
||||
}
|
||||
else if (!myRecursively && orderEntry instanceof ModuleOrderEntry) {
|
||||
final Module module = ((ModuleOrderEntry)orderEntry).getModule();
|
||||
if (module != null) {
|
||||
return processor.process(module);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user