mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add 'reverse' action to module dependencies panel
This commit is contained in:
@@ -30,7 +30,7 @@ public class ShortestPathUtil <Node> {
|
||||
|
||||
public List<Node> getShortestPath(Node from, Node to) {
|
||||
ArrayList<Node> result = new ArrayList<Node>();
|
||||
if (myShortestPathTree == null) {
|
||||
if (myShortestPathTree == null || ((DefaultMutableTreeNode)myShortestPathTree.getRoot()).getUserObject() != from) {
|
||||
shortestPath(from);
|
||||
}
|
||||
final boolean flag = traverse(to, result);
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.intellij.ide.impl.ContentManagerWatcher;
|
||||
import com.intellij.openapi.components.ProjectComponent;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.startup.StartupManager;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowAnchor;
|
||||
import com.intellij.openapi.wm.ToolWindowId;
|
||||
@@ -12,14 +12,16 @@ import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.peer.PeerFactory;
|
||||
import com.intellij.ui.content.Content;
|
||||
import com.intellij.ui.content.ContentManager;
|
||||
import org.jdom.Element;
|
||||
|
||||
/**
|
||||
* User: anna
|
||||
* Date: Feb 10, 2005
|
||||
*/
|
||||
public class DependenciesAnalyzeManager implements ProjectComponent{
|
||||
public class DependenciesAnalyzeManager implements JDOMExternalizable, ProjectComponent{
|
||||
private Project myProject;
|
||||
private ContentManager myContentManager;
|
||||
public boolean myForwardDirection;
|
||||
|
||||
public DependenciesAnalyzeManager(final Project project) {
|
||||
myProject = project;
|
||||
@@ -68,4 +70,20 @@ public class DependenciesAnalyzeManager implements ProjectComponent{
|
||||
public void disposeComponent() {
|
||||
|
||||
}
|
||||
|
||||
public boolean isForwardDirection() {
|
||||
return myForwardDirection;
|
||||
}
|
||||
|
||||
public void setForwardDirection(final boolean forwardDirection) {
|
||||
myForwardDirection = forwardDirection;
|
||||
}
|
||||
|
||||
public void readExternal(Element element) throws InvalidDataException {
|
||||
DefaultJDOMExternalizer.readExternal(this, element);
|
||||
}
|
||||
|
||||
public void writeExternal(Element element) throws WriteExternalException {
|
||||
DefaultJDOMExternalizer.writeExternal(this, element);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,20 +7,18 @@ import com.intellij.openapi.actionSystem.*;
|
||||
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.ModuleRootListener;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
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.DFSTBuilder;
|
||||
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;
|
||||
|
||||
@@ -99,6 +97,20 @@ public class ModulesDependenciesPanel extends JPanel implements ModuleRootListen
|
||||
}
|
||||
});
|
||||
|
||||
group.add(new ToggleAction("Dependencies Direction", "", DependenciesAnalyzeManager.getInstance(myProject).isForwardDirection() ? IconLoader.getIcon("/actions/sortAsc.png") : IconLoader.getIcon("/actions/sortDesc.png")){
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return DependenciesAnalyzeManager.getInstance(myProject).isForwardDirection();
|
||||
}
|
||||
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
DependenciesAnalyzeManager.getInstance(myProject).setForwardDirection(state);
|
||||
initLeftTreeModel();
|
||||
}
|
||||
|
||||
public void update(final AnActionEvent e) {
|
||||
e.getPresentation().setIcon(DependenciesAnalyzeManager.getInstance(myProject).isForwardDirection() ? IconLoader.getIcon("/actions/sortAsc.png") : IconLoader.getIcon("/actions/sortDesc.png"));
|
||||
}
|
||||
});
|
||||
ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true);
|
||||
return toolbar.getComponent();
|
||||
}
|
||||
@@ -270,8 +282,6 @@ public class ModulesDependenciesPanel extends JPanel implements ModuleRootListen
|
||||
|
||||
TreeToolTipHandler.install(tree);
|
||||
TreeUtil.installActions(tree);
|
||||
SmartExpander.installOn(tree);
|
||||
EditSourceOnDoubleClickHandler.install(tree);
|
||||
new TreeSpeedSearch(tree);
|
||||
PopupHandler.installUnknownPopupHandler(tree, createTreePopupActions(isRightTree, tree), ActionManager.getInstance());
|
||||
}
|
||||
@@ -287,7 +297,23 @@ public class ModulesDependenciesPanel extends JPanel implements ModuleRootListen
|
||||
return Arrays.asList(ModuleRootManager.getInstance(module).getDependencies()).iterator();
|
||||
}
|
||||
}));
|
||||
return graph;
|
||||
if (DependenciesAnalyzeManager.getInstance(myProject).isForwardDirection()){
|
||||
return graph;
|
||||
} else {
|
||||
return new Graph<Module>(){
|
||||
public Collection<Module> getNodes() {
|
||||
return graph.getNodes();
|
||||
}
|
||||
|
||||
public Iterator<Module> getIn(final Module n) {
|
||||
return graph.getOut(n);
|
||||
}
|
||||
|
||||
public Iterator<Module> getOut(final Module n) {
|
||||
return graph.getIn(n);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public void setContent(final Content content) {
|
||||
|
||||
Reference in New Issue
Block a user