mondrian overview 2007-11-06
TRANSCRIPT
Painting objects with Mondrian
Tudor Gîrbawww.tudorgirba.com
Mondrian is created by
Michael Meyer and Tudor Gîrba
Mondrian is about
visualization
A picture is worth
a thousand words
UML took it literally :)
70%ofour
sensorsarededicatedto
vision
How many groups do you see?
How many groups do you see?
How many groups do you see?
How many groups do you see?
70%ofour
sensorsarededicatedto
vision
A picture is worth
a thousand words
Example: What is ?
digraph classGraph {A [ shape=polygon, width = 6 ... ]B [ shape=polygon, width = 5 ... ]...A -> BC -> D...
}
What we have: Graphviz
What we have: CodeCrawler
Node
ClassNode
Edge
InheritanceEdge
Mondrian
What we want
Scripting
Instance based
Any data model
Close to data
Interaction
What we want
Scripting
Instance based
Any data model
Close to data
Interaction
Composition with Red, Yellow and Blue Piet Mondrian (1921)
Mondrian is about
visualization
The simplest script is an empty view
view := ViewRenderer new.view open.
View = nodes, edges, layout
view := ViewRenderer new.
view nodes: classes.
view edges: classes
from: [:each | each superclass]
to: [:each | each].
view treeLayout.
view open.
Shapes are responsible for drawing
view := ViewRenderer new.
view borderedRectangleShape height: [:each | each numberOfMethods].
view nodes: classes.view edges: classes from: [:each | each superclass] to: [:each | each].view treeLayout.view open.
Blocks can be replaced by symbols
view := ViewRenderer new.view borderedRectangleShape
height: #numberOfMethods.
view nodes: classes.
view edgesFrom: #superclass.
view treeLayout.view open.
Nesting is done through blocks
view := ViewRenderer new.view borderedRectangleShape.
view nodes: classes forEach: [:each |
view nodes: each methods.
view gridLayout].
view edgesFrom: #superclass.view treeLayout.view open.
Mondrian is about
visualizations
Mondrian is about
interactive visualization
Interaction is scriptable, too
view := ViewRenderer new.view2 := ViewRenderer new.
view interaction onSelect: [:each | each viewOn: view2].
view interaction popupView: [:each :aView | each viewOn: aView].
...view open.view2 open.
Mondrian is a domain specific language
view := ViewRenderer new.view borderedRectangleShape.view interaction popupView: [:each :aView | each viewOn: aView].view nodes: classes forEach: [:each |
view nodes: each methods.view gridLayout
].view edgesFrom: #superclass.view treeLayout.view open.
Tudor Gîrbawww.tudorgirba.com
creativecommons.org/licenses/by/3.0/