Hi!

On my quest to inject all the features of the GraphBuilder into Mondrian, I have just improved Mondrian with the (i) the #notUseInLayout option when building edges and (ii) the bezier line that follow a path.

It sounds like very technical, but this effort is to make the Mondrian and the edge/layout builders more expressive.

Here is a small example:

-=-=-=-=-=-=-=-=-=-=-=-=
classes := RTShape withAllSubclasses, TRShape withAllSubclasses.

b := RTMondrian new.
b shape circle.
b nodes: classes.
b edges connectFrom: #superclass.

b shape bezierLineFollowing: #superclass;
 color: (Color blue alpha: 0.2).
b edges notUseInLayout; connectToAll: #dependentClasses.
b normalizer
normalizeSize: #numberOfMethods using: #sqrt;
normalizeColor: #numberOfMethods using: (Array with: Color green with: Color red) using: #sqrt.
b layout cluster.
b build.
-=-=-=-=-=-=-=-=-=-=-=-=

Another example:
-=-=-=-=-=-=-=-=-=-=-=-=
classes := RTObject withAllSubclasses, RTTest withAllSubclasses.

b := RTMondrian new.
b shape circle.
b nodes: classes.
b edges connectFrom: #superclass.

b shape bezierLineFollowing: #superclass;
color: (Color blue alpha: 0.2).
b edges 
notUseInLayout; 
connectToAll: #dependentClasses.
b normalizer
normalizeSize: #numberOfMethods using: #sqrt;
normalizeColor: #numberOfMethods using: (Array with: Color green with: Color red) using: #sqrt.
b layout cluster.
b build.
^ b
-=-=-=-=-=-=-=-=-=-=-=-=


Doru, on some point we discussed whether it was a good idea to have a clause
 #if: [ :fromObject :toObject | … return a boolean … ]

You argued that it was not a good idea and I agree with you. However, I cannot see how to avoid it. 
For example, how can I have only edges going from the tests to the base code, and not between classes of the base code?

Cheers,
Alexandre

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.