Thursday, July 5, 2007

Plug-in Dependency Visualization

A lot has happened in my Summer of Code project over the past few weeks. To recap, my project has two main objectives; 1) to bring plug-in (bundle) dependency visualization to the PDE and 2) to solidify Zest, an information visualization toolkit for Eclipse.

Zest came out of some work I was doing for Mylyn, but we are now in the process of moving it to GEF / Draw2D. However, until this happens, we are still in the Mylyn repository and went through the move with them. After a bit of work, we are up and running again.

Zest has also been refactored to offer two separate APIs for Directed Graph Rendering. One API resembles SWT and the other one, JFace. In fact, I have created a number of snippets to show how these APIs can be used to create a view with a directed graph. During the refactoring I also removed all dependencies on the Runtime (we are now runtime free). This means that you can use Zest in your standalone SWT applications. Of course I still use the PDE tooling, so the JARs can also be used as an OSGi Bundle.

Finally, I have added container support to Zest. I plan on using this to group bundles in the dependency view. This should help with the scalability problems you get when you try and render a large graph. Nodes can now be added to containers and the containers can be expanded / collapsed. I am pretty sure I completed this without breaking any existing API, but if you use Zest and I broke something, please let me know. This feature was fun to implement, however, there are still some open issues. In particular, how to deal with connections that go from nodes in one container to nodes in another, and nested containers.


Frank Gerhardt said...

Very nice!

I have a compile error in AbstractVisualizationLabelProvider. The getConnectionElements() method is undefined on GraphViewer. I can't find this method in Zest. What about providing a compiled plug-in for download? ;-)

Jacob said...

This is a great idea. I badly need a Graph of my dependencies.
I have downloaded your code, but could you possible post an example of the usage of your API?

Jacob said...

BTW your snippets does not demonstrate the use of your goal number one, and depends on Mylar??

christian said...

I work at present under eclipse, and I use zest for visualize the relations between the nodes of my graph.
I would like to considere a node as a structure.
I am limited by the documentation.
Could you help me?

andre said...

Hi! the screenshots look impressive. I managed to check out the plugins but didn't find any view to show up. How can I see the dependecy graph?

T.S.SUTHA said...

Very nice, I am trying to implement the nested Package dependency viewer.

I am new to eclipse and zest. I created the Node Link diagram for packages.

Could not get the idea how to implement the nested view, My content provider implements the NestedContentProvider.

How to add the childs in to the container.
Am I supposed to implement IContainer for every node?

Any idea, tips about how to creat nested viewer, will be helpful.