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