views:

404

answers:

5

I'm going to need to write a program that takes a list of persons and connects them together in a directed-graph-like manner. The GUI aspect of the whole project is very important. The graph must allow a lot of interaction. Such as selecting several people and hiding the others, moving them around.

Additionally, the software will need to be able to provide other kind of GUI-features such as several tabs, text boxes etc.

The application must be quite efficient. As in, it must be able to handle hundreds if not thousands of widgets.

Hence, I would like to know which open source libraries (at this point the programming language they are written in does not matter - I just want an overview of everything good that is out there) would allow me to develop such piece of software? What would you recommend?

Edit: Could you please also link to tutorials explaining how I could program a GUI that can interact with the generated graph? For example mouse events.

+3  A: 

Take a look at Graphviz, especially its lefty component. It should satisfy your needs.

http://en.wikipedia.org/wiki/Graphviz

Vlad
Thanks for that. Graphviz looks like what I would need to use.However, I would prefer using a programming language such as Java or Ruby for my software. Would you have a good tutorial showing how it is possible from a GUI (i.e. Tk, GTK, Qt or Swing) to add a mouse event when the user clicks on a node?I haven't been able to figure out myself how to do that.Thanks for your time.
Benjamin
A: 

You might want to have a look to Dynagraph.

EDIT: An article presenting Graphviz and Dynagraph is available here.

Roberto Aloi
Thanks for that. Any tutorials or binding librairies that could easily allow adding events such as mouse clicks on a node?
Benjamin
+2  A: 

How about JGraphT in combination with JGraph.

Check here for a simple demo with basic interaction

jitter
The JGraph webstart demo app is pretty sweet looking:http://jgraph.com/jgraph.htmlUnfortunately it looks only commercial?
dsummersl
JGraph/JGraphX aren't commercial they are BSD licensed. What you are referring too is mxGraph which is a javascript library by the same guys http://www.jgraph.com/mxgraph.html. mxGraph is commercial
jitter
+2  A: 

Depending on your actual goal and needs, you might consider taking a look at processing.org. The site has many demos and like many other libraries, it is free. Using Processing does not require you to learn much. It is similar to Java and written in Java, but allows you to ignore much of the Java structure and code and just do what you want.

Since you mentioned that you would want to use x or y to code in, it sounds like you have not made a language decision, so this might be worth your time. Spend 15 minutes there and look at the demos to see if it provides what you are looking for. If speed to a single solution is one of your criteria, this might do it.

MJB
A: 

My first thought was ILOG Views (for Java, .Net, C++), now owned by IBM, but their pricing is rather steep. My second thought would be yFiles (for Java or .NET), perhaps in conjunction with yEd (Java only).

If that still doesn't cut it, have a look at the alternatives on this list (rather unsorted, some tools are not open source, others won't suit you for other reasons).

RegDwight