On Sep 15, 2016, at 5:16 PM, Cris Fuhrman <fuhrmanator@gmail.com> wrote:Indeed, much cleaner.Your code also made it clear to me that I was wrongly making a new shape each time I added an element to the view (I'm guessing this makes a big deal in some of my bigger models).Here's what I came up with in my context:~~~~~~~~~~~~~~~~~~~~~| v boxedTextShape boxedTextElement classA classB |classA := FAMIXType new name:'Façade'.classB := FAMIXType new name:'BridgeOfSighs'.v := RTView new.boxedTextShape := RTCompositeShape new.boxedTextShape add: (RTBox new color: Color blue).boxedTextShape add: (RTLabel new text:#name; color: Color white).boxedTextShape allOfSameSizeWithPadding.boxedTextElement := boxedTextShape elementOn: classA.boxedTextElement @ RTDraggable.v add: boxedTextElement.boxedTextElement := boxedTextShape elementOn: classB.boxedTextElement @ RTDraggable.v add: boxedTextElement.RTGridLayout on: v elements.v~~~~~~~~~~~~~~~~~~~~~~~~_______________________________________________On Thu, Sep 15, 2016 at 11:39 AM, Alexandre Bergel <alexandre.bergel@me.com> wrote:Hi Cris,You are right. The examples you provide are a bit hacky. The standard way in Roassal is to use composite shapes.Try this:-=-=-=-=-=-=-=-=-=-=-=-=v := RTView new.boxShape := RTBox new color: Color veryLightGray.labelShape := RTLabel new text: #name.composite := RTCompositeShape new.composite add: boxShape.composite add: labelShape.composite allOfSameSizeWithPadding.elements := composite elementsOn: (Collection withAllSubclasses copyFrom: 1 to: 5).v addAll: elements.elements when: TRMouseClick do: [ :evt |evt element model: Collection withAllSubclasses atRandom.evt element update.RTGridLayout on: elements. ].RTGridLayout on: elements.v-=-=-=-=-=-=-=-=-=-=-=-=The code I provide defines a callback that changes the label. You can see how to adapt it.Let us know how it goes.Cheers,AlexandreOn Sep 15, 2016, at 12:10 PM, Cris Fuhrman <fuhrmanator@gmail.com> wrote:Hello,______________________________I'd like to visualize a graph where the nodes are boxes and they have text inside. The boxes should grow or shrink horizontally so the text doesn't go outside the box.I saw the answer at http://forum.world.st/Roassal2-Label-width- which led me to a solution. However, I've commented the "not robust" part below, since it's passing by "lbl" which I suspect could change.td4847887.html ~~~~~~~~~~~~~~~~| b label el |b := RTView new.el := RTBox new elementOn: 'hello world'.label := RTLabeled new center.b add: el.el @ label."not robust"el width: label lbl width.el height: label lbl height.b~~~~~~~~~~~~~~~~~~~~~~<image.png>I found the unit tests for RTLabel (RTLabelTest) and I found another solution, but maybe it's equally fragile?~~~~~~~~~~~~~~~~~~~~~~~~~| text b lblBox lblForCalc dummyElement |text := 'Text inside the box'.b := RTView new.lblBox := (RTBox new elementOn: text) + RTLabel.lblForCalc := RTLabel new text: text.dummyElement := RTElement new.lblBox height: (lblForCalc heightFor: dummyElement).lblBox width: (lblForCalc widthFor: dummyElement).b add: lblBox.b~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <image.png>I'd love to get some feedback on these approaches. Maybe there's a simpler robust way? Thanks!_________________
Moose-dev mailing list
Moose-dev@list.inf.unibe.ch
https://www.list.inf.unibe.ch/listinfo/moose-dev
_______________________________________________
Moose-dev mailing list
Moose-dev@list.inf.unibe.ch
https://www.list.inf.unibe.ch/listinfo/moose-dev
Moose-dev mailing list
Moose-dev@list.inf.unibe.ch
https://www.list.inf.unibe.ch/listinfo/moose-dev