Hi,
On 14 Nov 2011, at 23:47, Alexandre Bergel wrote:
It could be
very useful in serialization because sometimes you start traversing an object and you end
up traversing much more objects you wanted. So Mondrian could help to find the problematic
objects.
Visualization is cool indeed
It would be great to have the ability of
affecting the parent graph of a node, not just the subgraph of a node.
+1
This goes against some principles in Mondrian (e.g., zOrdering different than object
nesting).
I fail to see what these principles are :). Mondrian is nothing but a very simple graph
model with a builder api and some rendering logic. zOrder is just a smart way of drawing
edges such that you can see them properly even in the case of nested graphs. But, the
model does not have to be static.
So, why is adding new nodes against the principles of Mondrian?
I tried the following:
-=-=-=-=-=-=-=-=-=-=-=-=
| n |
n := OrderedCollection new.
view shape rectangle withText.
view interaction on: MOMouseDown do: [ :ann |
n add: (MONode on: 'hello').
view root addNode: n last.
(MOGridLayout forNodes: n) applyOn: ann node root.
view root resetCache; updateWindow ].
view node: 'press me'
-=-=-=-=-=-=-=-=-=-=-=-=
It looks like a good start :)
Additionally,
it would be nice to express the graph more concisely. I am a newbie in Mondrian so maybe
it has not sense what I imagine (following the example with Collection hierarchy):
view shape expandableNode childrenNodesWith: [:aNodeToExpand | aExpandableNode
subclasses].
view node: Collection.
view edgesFrom: #superclass.
is it possible to add only the root at first and the rest when nodes expand?
Humm... Hardly feasible without completely bypassing many things Mondrian was designed
for.
However, I am currently working on Roassal, a new visualization framework with a strong
emphasis on interaction. What you are asking for will be trivial to do.
I took a quick look at Roassal. It looks quite interesting.
I have some questions/remarks:
- What is the performance for large views when compared with Mondrian?
- It is at a lower level of abstraction than Mondrian, but higher than actual rendering.
The first thing I thought of when looking at it was that perhaps it would be interesting
to have it as a backend for Mondrian. Like this we can potentially have the best of both
worlds and we can reuse the engineering effort. And then I saw ROMondrianViewBuilder which
is a good start :).
- I like the decoration. This is what we had in Mondrian, but that got lost in
translation.
- The rendering logic is tightly coupled with Morphic. It does not have to be, right?
- I did not see how the decision of drawing edge appears to be. For example, in the
mondrian2 you have the edges drawn on top of the nodes. But, I am not sure if this is
because of the declaration order of because of something else.
Cheers,
Doru
Alexandre
On 14 Nov 2011, at 17:30, Alexandre Bergel
wrote:
Martin, are you happy with what Mondrian offers
currently? Is there anything else you would like to see?
Alexandre
On 8 Nov 2011, at 15:50, Martin Dias wrote:
Johan and Alexandre: Thank you, was funny to play
with Mondrian Easel and to see AspectMaps.
Doru: You was right, I had in mind something like a tree. I made a proof script using
blocks for recursion... look:
| blockForClass blockForExpandable blockForLeaf |
blockForClass := [:aClass |
blockForLeaf value: aClass.
aClass subclasses do: [:aSubclass |
(aSubclass subclasses isEmpty
ifTrue: [blockForLeaf]
ifFalse: [blockForExpandable])
value: aSubclass ] ].
blockForLeaf := [:aClass |
view shape label text: #name.
view node: aClass.
view edgesFrom: #superclass.
view horizontalTreeLayout ].
blockForExpandable := [:aClass |
view interaction
whenClickingUpdateNode: [:x | blockForClass value: x ]
withLayoutUpdate: true.
view shape rectangle
dashedBorder;
size: 10;
borderColor: Color lightGray.
view node: aClass.
view edgesFrom: #superclass.
view horizontalTreeLayout ].
blockForClass value: Collection.
On Tue, Nov 8, 2011 at 4:16 AM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
Hi,
I think Martin was asking for a script that would add nodes to the parent graph, not to
the inner graph of a selected node.
The idea is to have an expandable graph that would behave similarly to a tree morph
widget (when you expand a node, the whole tree becomes larger).
Cheers,
Doru
On 8 Nov 2011, at 04:28, Alexandre Bergel wrote:
>> During Smalltalks conference, we started with Mariano and Doru to do an
experiment: to use Mondrian to visualize the graph that is being serialized with Fuel.
>
> Cool!
>
>> 1) Is it fine how I installed Mondrian?
>>
>> Gofer it
>> squeaksource: 'Mondrian';
>> package: 'ConfigurationOfMondrian';
>> load.
>> (ConfigurationOfMondrian project latestVersion) load.
>
> Yes.
>
>> 2) For large graphs, I would like to show them lazily, maybe drawing some
expandable nodes (+). Do you understand what I mean? Is that possible?
>
> Try this in an easel:
> -=-=-=-=-=-=-=-=-=-=-=-=
> view shape rectangle size: 20.
> view interaction action: #inspect.
> view interaction
> whenEnteringUpdateNode: [:node |
> view interaction forwarder.
> view nodes: (Set allSubclasses).
> view interaction forwarder.
> view edgesFrom: #superclass..
> view treeLayout
> ]
> whenLeavingUpdateNode: [:node | ]
> withLayoutUpdate: true.
> view nodes: (1 to: 3)
> -=-=-=-=-=-=-=-=-=-=-=-=
>
> Cheers,
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel
http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>
> _______________________________________________
> Moose-dev mailing list
> Moose-dev(a)iam.unibe.ch
>
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
www.tudorgirba.com
"Not knowing how to do something is not an argument for how it cannot be
done."
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel
http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
www.tudorgirba.com
"Reasonable is what we are accustomed with."
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel
http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________
Moose-dev mailing list
Moose-dev(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
www.tudorgirba.com
Innovation comes in least expected form.
That is, if it is expected, it already happened.