The critical thing at the moment is to have the labels of children elements not overlap the label of the parent element. For example...
-------------
| view outer inner label |
view := ROView new.
outerLabel := (ROLabel new text: [ :el | el ]).
innerLabel := (ROLabel new text: [ :el | el ]).
outer := (ROElement on: 'outer element text should be easily visible by default') + outerLabel + ROBorder @ RODraggable.
inner := (ROElement on:  'inner element text should not overlap outer') + innerLabel + ROBorder @ RODraggable.
view add: (outer add: inner).
view open
------------

Having an only an offset capability (rather than complex compositing) would I am hoping be sufficient to enable something like...
inner := ((ROElement on:  'inner element text should not overlap outer') offset: #bottomLeft of: outerLabel ) + innerLabel + ROBorder @ RODraggable.


Alexandre Bergel wrote:
Thanks Ben for all the effort you are putting in Roassal.
  
You are welcome.  Actually
The core of Roassal should have the minimum amount tools to let one built any extensions. Currently, Roassal does not support a mechanism to compose shapes. It will probably come on some point. However, this future mechanism will not be at the core of Roassal. It should rather be done by having a small language on top of it.

Is having an offset for shape be useful when come the time to have a FormBuilder? I have the impression that yes. I can work on it this week.

Cheers,
Alexandre


On Sep 1, 2012, at 11:36 AM, Ben Coman <btc@openInWorld.com> wrote:

  
My question was less about compositing and more about ROCircleLayout, so I've split my response into two posts.  

About compositing, really I'm not sure yet.  However I have a couple of thoughts that may be easier prior to full compositing.  Referring to the attached images, you can see that the children shapes overlap the label shape of the parent, and also multiples within the one shape overlap.  IT would help to have a way to offset shapes, and as a default the children should be offset below the label.  One way to do that would be being able to specify an offset for shapes, and have some way for the user to set up the specific linking of the bounds.  For instance, perhaps adding two label shapes at the top with the children nodes below.  The user would have to specifically define the offset of the 

Take for instance this code for Roassal Easel... 
    n1 := ROElement spriteOn: 'XX___'.
    n1 + (ROLabel new text: #model). 
    n1 + (ROLabel new text: #bounds ).
    rawView add: n1.

...where the two labels overlap.  I think you would gain a lot if you could do something like the following...
    n1 := ROElement spriteOn: 'XX___'.
    n1 + (shape1 := ROLabel new text: #model). 
    n1 + (ROLabel new text: #bounds; offset: [ shape1 bottomLeftCorner ] ).
    rawView add: n1.

This should handle shape1 being a multi-line label.

As a second stage, there should be some way to add text under the children nodes.  The perhaps (only a wild guess) means that ROChildrenShape should not inherit from RONullShape to be forced to appear at the end of the list of shapes. Or perhaps since ROChildrenShape might be more coupled to the internals than other shapes, something like....
    n1 := ROElement spriteOn: 'XX___'
    n1 + (shape1 := ROLabel new text: #model). 
    n1 + (ROLabel new text: #bounds; offset: [ (shape1 bottomLeftCorner) + (n1 childrenShape bottomLeftCorner) ] ).
    rawView add: n1.

Perhaps this is fairly rough - but it at least makes things possible.  

hope that makes sense :)
cheers -ben

Alexandre Bergel wrote:
    
Hi Ben,

Currently no. We definitely need a better way to specific layouts and their composition. However this will take time before we have this. 

How would you like to specific the layout?

Cheers,
Alexandre


On Aug 30, 2012, at 6:10 PM, Ben Coman 
<btc@openInWorld.com>
 wrote:

  

      
I have been looking at the ROExample "Nesting" examples and expanded #nesting2 with another level as shown in the code below, such that there is the outer view, middle "#1" nodes and inner "#2" nodes. However the initial state of this has much of the middle node1 and inner node2 nodes overlapping. 
How can these be made for the circle layout to leave spacing between the middle node1 nodes?

cheers -ben

--------------------
  | view nodes1 |
  view := ROView new.
  view add: (ROElement sprite addAll: (nodes1 := ROElement spritesOn: (1 to: 10))).
  nodes1 do: [:n | n addShape: ROLabel].
  nodes1 do:
  [     :node1 |
      ( (node1 model) *100+1 to: (node1 model)*100+5 ) do:
      [    :x |
          node1 add: ( (ROElement spriteOn: x) addShape: ROLabel).
      ].
  ROGridLayout on: node1 elements.
  ].

  ROCircleLayout on: nodes1.
  view openInWindow.
_______________________________________________
Moose-dev mailing list

Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev

    

        
  

      
<roassal simple composition.png><roassal children overlapping parent label.png>_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev