From 0b80771bb1467bc162da17f4dc0817b3bb34ba0b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 15 Feb 2005 21:29:24 +0300 Subject: [PATCH] new scope to analyze --- .../ModulesDependenciesPanel.java | 62 ++++++++++++------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/source/com/intellij/moduleDependencies/ModulesDependenciesPanel.java b/source/com/intellij/moduleDependencies/ModulesDependenciesPanel.java index 3d62c64d641a..d8ca80afb9e0 100644 --- a/source/com/intellij/moduleDependencies/ModulesDependenciesPanel.java +++ b/source/com/intellij/moduleDependencies/ModulesDependenciesPanel.java @@ -8,14 +8,19 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.openapi.roots.ModuleRootListener; +import com.intellij.openapi.roots.ModuleRootEvent; +import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.projectRoots.ProjectRootListener; import com.intellij.ui.*; import com.intellij.ui.content.Content; import com.intellij.util.EditSourceOnDoubleClickHandler; import com.intellij.util.graph.CachingSemiGraph; import com.intellij.util.graph.Graph; import com.intellij.util.graph.GraphGenerator; +import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.ui.Tree; import com.intellij.util.ui.tree.TreeUtil; @@ -36,7 +41,7 @@ import java.util.List; * User: anna * Date: Feb 10, 2005 */ -public class ModulesDependenciesPanel extends JPanel{ +public class ModulesDependenciesPanel extends JPanel implements ModuleRootListener{ private Content myContent; private Project myProject; @@ -49,6 +54,7 @@ public class ModulesDependenciesPanel extends JPanel{ private Graph myModulesGraph; private Module[] myModules; + private Splitter mySplitter; public ModulesDependenciesPanel(final Project project, final Module[] modules) { super(new BorderLayout()); myProject = project; @@ -60,11 +66,27 @@ public class ModulesDependenciesPanel extends JPanel{ initLeftTree(); - Splitter treeSplitter = new Splitter(); - treeSplitter.setFirstComponent(ScrollPaneFactory.createScrollPane(myLeftTree)); - treeSplitter.setSecondComponent(ScrollPaneFactory.createScrollPane(myRightTree)); - add(treeSplitter, BorderLayout.CENTER); + mySplitter = new Splitter(); + mySplitter.setFirstComponent(ScrollPaneFactory.createScrollPane(myLeftTree)); + mySplitter.setSecondComponent(ScrollPaneFactory.createScrollPane(myRightTree)); + + setSplitterProportion(); + add(mySplitter, BorderLayout.CENTER); add(createNorthPanel(), BorderLayout.NORTH); + + ProjectRootManager.getInstance(myProject).addModuleRootListener(this); + } + + private void setSplitterProportion() { + if (mySplitter == null){ + return; + } + myModulesGraph = buildGraph(); + DFSTBuilder builder = new DFSTBuilder(myModulesGraph); + builder.buildDFST(); + if (builder.isAcyclic()){ + mySplitter.setProportion(1.f); + } } public ModulesDependenciesPanel(final Project project) { @@ -80,16 +102,6 @@ public class ModulesDependenciesPanel extends JPanel{ } }); - final AnAction rerunAction = - new AnAction("Rerun", "Rerun modules dependencies analyzer", IconLoader.getIcon("/actions/refreshUsages.png")) { - public void actionPerformed(AnActionEvent e) { - initLeftTreeModel(); - TreeUtil.selectFirstNode(myLeftTree); - } - }; - group.add(rerunAction); - rerunAction.registerCustomShortcutSet(CommonShortcuts.getRerun(), this); - ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true); return toolbar.getComponent(); } @@ -117,8 +129,9 @@ public class ModulesDependenciesPanel extends JPanel{ final DefaultMutableTreeNode root = (DefaultMutableTreeNode)myLeftTreeModel.getRoot(); root.removeAllChildren(); myModulesGraph = buildGraph(); - for (Iterator iterator = myModulesGraph.getNodes().iterator(); iterator.hasNext();) { - Module module = iterator.next(); + setSplitterProportion(); + for (int i = 0; i < myModules.length; i++) { + Module module = myModules[i]; final DefaultMutableTreeNode moduleNode = new DefaultMutableTreeNode(new MyUserObject(false, module)); root.add(moduleNode); final Iterator out = myModulesGraph.getOut(module); @@ -270,14 +283,11 @@ public class ModulesDependenciesPanel extends JPanel{ private Graph buildGraph() { final Graph graph = GraphGenerator.create(CachingSemiGraph.create(new GraphGenerator.SemiGraph() { public Collection getNodes() { - return Arrays.asList(myModules); + return Arrays.asList(ModuleManager.getInstance(myProject).getModules()); } public Iterator getIn(Module module) { - //only in choosen modules scope - final HashSet depModules = new HashSet(Arrays.asList(ModuleRootManager.getInstance(module).getDependencies())); - depModules.retainAll(Arrays.asList(myModules)); - return depModules.iterator(); + return Arrays.asList(ModuleRootManager.getInstance(module).getDependencies()).iterator(); } })); return graph; @@ -287,6 +297,14 @@ public class ModulesDependenciesPanel extends JPanel{ myContent = content; } + public void beforeRootsChange(ModuleRootEvent event) { + } + + public void rootsChanged(ModuleRootEvent event) { + initLeftTreeModel(); + TreeUtil.selectFirstNode(myLeftTree); + } + private static class MyUserObject{ private boolean myInCycle; private Module myModule;