Painting objects with Mondrian

36
Painting objects with Mondrian Michael Meyer and Tudor Gîrba Software Composition Group University of Berne Switzerland September 6, 2006

description

Painting objects with Mondrian. Michael Meyer and Tudor Gîrba. ESUG 2006, Prague

Transcript of Painting objects with Mondrian

Page 1: Painting objects with Mondrian

Painting objects with Mondrian

Michael Meyer and Tudor Gîrba

Software Composition GroupUniversity of BerneSwitzerland

September 6, 2006

Page 2: Painting objects with Mondrian

Mondrian is about visualization

Page 3: Painting objects with Mondrian

Mondrian is also about interaction

Page 4: Painting objects with Mondrian

please ask questions

Page 5: Painting objects with Mondrian

Why visualization?

Page 6: Painting objects with Mondrian

“One picture is worth a thousand words”

Page 7: Painting objects with Mondrian
Page 8: Painting objects with Mondrian

some took it literally :)

Page 9: Painting objects with Mondrian

70% of our sensors are dedicated to vision

Do you see?

Picture it!

Let’s see

I see

Page 10: Painting objects with Mondrian

How many groups do you see?

Page 11: Painting objects with Mondrian

How many groups do you see?

Page 12: Painting objects with Mondrian

How many groups do you see?

Page 13: Painting objects with Mondrian

How many groups do you see?

Page 14: Painting objects with Mondrian

70% of our sensors are dedicated to vision

Do you see?

Picture it!

Let’s see

I see

Page 15: Painting objects with Mondrian

“One picture is worth a thousand words”

Page 16: Painting objects with Mondrian

Example: What is ?

Page 17: Painting objects with Mondrian
Page 18: Painting objects with Mondrian
Page 19: Painting objects with Mondrian
Page 20: Painting objects with Mondrian
Page 21: Painting objects with Mondrian
Page 22: Painting objects with Mondrian

What we have: Graphviz is a visualization engine

digraph classGraph {A [ shape=polygon, width = 6 ... ]B [ shape=polygon, width = 5 ... ]...A -> BC -> D...

}

Page 23: Painting objects with Mondrian

What we would like

Scripting

Instance based

Any data model

Close to data

Interaction

Page 24: Painting objects with Mondrian

What we would like

Scripting

Instance based

Any data model

Close to data

Interaction

Page 25: Painting objects with Mondrian

Mondrian

Page 26: Painting objects with Mondrian

Mondrian metaphor: painting a view

Page 27: Painting objects with Mondrian

Mondrian metaphor: painting a view

Page 28: Painting objects with Mondrian

Mondrian metaphor: painting a view

Composition with Red, Yellow and Blue Piet Mondrian (1921)

Page 29: Painting objects with Mondrian

The simplest Mondrian script is an empty view

view := ViewRenderer new.view open.

Page 30: Painting objects with Mondrian

The view consists of nodes and edges arranged according to a layout

view := ViewRenderer new.view nodes: classes.view edges: classes from: [:each | each superclass] to: [:each | each].view treeLayout.view open.

Page 31: Painting objects with Mondrian

Visual representation is given by the shape

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.

Page 32: Painting objects with Mondrian

Blocks can be replaced by symbols

view := ViewRenderer new.view borderedRectangleShape height: #numberOfMethods.view nodes: classes.view edgesFrom: #superclass.view treeLayout.view open.

Page 33: Painting objects with Mondrian

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.

Page 34: Painting objects with Mondrian

What about interaction?

Page 35: Painting objects with Mondrian

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 nodes: ......

view open.view2 open.

Page 36: Painting objects with Mondrian

Mondrian

Close to data

Any data model

Scripting

Interaction

Least object creation

Instance based

Soon in the Cincom Store ...

September 6, 2006