Hi everyone, I'm working on a project in order to analyze automatically project source code. The project consists in analyzing automatically Smalltalk project source code and in visualizing all the dependencies among the packages. Currently i have only a UI (using Spec Framework) to visualize the results in a TreeModel. I would like to have a visualization, like the screenshot attached (done with Graphviz), using Roassal. As you can see, we have the packages (the nodes) and the edges are linking the packages when they have dependencies among them. I would like to have a graph-visualization in order to detect potential cyclic dependencies. How can i do that with Roassal? Thanks for your help. Baptiste _______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev collections.pdf (38K) Download Attachment |
Hi Baptiste!
I think this is your first email to the mailing list, so welcome! There are many different ways to do this. One easy way is to use the graph builder. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | b | b := RTGraphBuilder new. b nodes if: [ :c | c inheritsFrom: RTShape ]; color: Color green. b nodes if: [ :c | c inheritsFrom: RTLayout ]; color: Color yellow. b nodes if: [ :c | 'TR*' match: c name ]; color: Color purple. b nodes color: Color red. b edges connectTo: #dependentClasses; useInLayout. b layout force charge: -100. b global minSize: 15; alphaColor: 0.4. b addAll: RTObject withAllSubclasses, TRObject withAllSubclasses. b open. b view canvas -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Which produce the following: I suggest you to have a look at the example. Cheers, Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. On Jun 26, 2014, at 9:01 AM, Baptiste Quide <[hidden email]> wrote:
_______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
Thanks for your quickly answer (and for your welcome!) I tried with this visualization. However i would like to have a label into the node of the graph, is it possible ? Moreover, can i add a title for the visualization? Cheers, Baptiste De: "Alexandre Bergel" <[hidden email]> _______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
Using the RTGraphBuilder, you can simply use #labelled to nodes. There is an example for this (accessible from the World Menu): -=—=-=—=-=—=-=—=-=—= | b | b := RTGraphBuilder new. b nodes shape: (RTEllipse new size: #numberOfMethods); whenOverShowEdges: [ :cls | cls dependentClasses ]; labelled. b edges if: [ :f :t | f isBehavior ]; connectTo: [ :c | c subclasses ]; useInLayout; shape: (RTLine new color: Color gray). b layout force charge: -150. b global minSize: 10; normalizeColor: [ :cls | cls methods size ] using: (Array with: Color green with: Color red); alphaColor: 0.4. b addAll: (RTObject withAllSubclasses). b open. -=—=-=—=-=—=-=—=-=—= screenshot: Cheers, Alexandre
_______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
Alex,
Sorry, but I have some critics about this visu: - there is a central (root) point, but it is not always the case in graph - the first visu you sent is beautiful but not useable to detect cycle or to see a flowI think. - the second visu contains the labels as required, but it is not readable - Baptiste will, certainly unfortunately, better identify cycles with graphviz than with such a visu. - it would be very great to really have in Roassal something like what Baptiste sent today and defined with graphviz. Perhaps a different layout than the existing one is needed. - I was discussing with Christophe and Vincent (and other in the team), they all need graphs. It is easy to ask and as we are in an open source project we can all contribute. But there is a very big requirements for graph. The Roassal visu are really awesome, but concerning graph, it is unfortunately one step lower. Anne Le 26 juin 2014 à 17:25, Alexandre Bergel <[hidden email]> a écrit :
_______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
Hi Anne,
This is true that Roassal does not help in identifying cycles or applying any graph algorithm on this. More work on this is indeed welcome. The main advantage of Graphviz, in my opinion, is the scalability. Graphiviz works well, even with large graph. The script I gave was just an example and was not made to replace the visualization sent by Baptiste. Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. On Jun 26, 2014, at 11:50 AM, Anne Etien <[hidden email]> wrote:
_______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
By the way, it would be great to revive the binding Roassal/Mondrian <—> Graphviz. It was working well on some point using OSProcess…
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. On Jun 26, 2014, at 12:10 PM, Alexandre Bergel <[hidden email]> wrote:
_______________________________________________ Moose-dev mailing list [hidden email] https://www.iam.unibe.ch/mailman/listinfo/moose-dev |
Free forum by Nabble | Edit this page |