Very very very good Ben, thanks a lot. Last question: you use the "columns:" 
message, but it's not defined in TreeModel. You defined it 
hereMorphTreeAdapter>>#columns:         columns: columns                        
 self widgetDo: [ :w |                          w columns: columns.             
                w resizerChanged.                               w updateList ]
in the brand new Class MorphTreeAdapter. What's the difference between define 
columns: here instead of in the TreeModel class?Great job and thank you!Paolo

From: benjamin.vanryseghem.ph...@gmail.com
Date: Fri, 8 Nov 2013 14:15:46 +0100
To: pharo-users@lists.pharo.org
Subject: Re: [Pharo-users] Spec - Grid/Table Layout

tree := TreeModel new.tree openWithSpec.
tree columns: (Array    with: (MorphTreeColumn new rowMorphGetSelector: [:node 
| node item first asString asMorph ]; headerButtonLabel: 'Name' font: nil; 
yourself)     with: (MorphTreeColumn new rowMorphGetSelector: [:node | node 
item second asString asMorph ]; headerButtonLabel: 'Last Name' font: nil; 
yourself)       with: (MorphTreeColumn new rowMorphGetSelector: [:node | node 
item third asString asMorph ]; headerButtonLabel: 'Age' font: nil; yourself)    
  with: (MorphTreeColumn new rowMorphGetSelector: [:node | node item fourth 
asString asMorph ]; headerButtonLabel:  'Gender' font: nil; yourself) with: 
(MorphTreeColumn new rowMorphGetSelector: [:node | (ButtonModel new label: 'Yes 
we can') buildWithSpec hResizing: #spaceFill]; headerButtonLabel:  'Morph' 
font: nil; yourself)). tree roots: {   {'Benjamin'.'Van Ryseghem'.'26'.'M'}.   
{'Pamela'.'Anderson'.'Far too much'.'F'}} 
Ben



On 08 Nov 2013, at 14:05, prova email <prova...@hotmail.it> wrote:Yes Ben, too 
much threads! That's why i'm a little bit confused! That's what i understood: 
i've got two roads-> use TreeModel as you did with Pamela Anderson or use the 
simple and nested SpecLayout (SpecLayout composed) as Clement did.If in your 
TreeModel i can put a RadioButtonModel or a ButtonModel or so on... we got the 
deal!
Paolo
From: benjamin.vanryseghem.ph...@gmail.com
Date: Fri, 8 Nov 2013 13:59:51 +0100
To: pharo-users@lists.pharo.org
Subject: Re: [Pharo-users] Spec - Grid/Table Layout

I guess too much threads :)
I answer this in another thread I think :P
the block provided to displayBlock:/rowMorphGetSelector: can return anything 
understanding asMorph.So you can return any custom morph there :)
I think the following work
tree columns: (Array 
        with: (TreeColumnModel new displayBlock: [:node | node content first 
asString ]; headerLabel: 'Name'; yourself)
        with: (TreeColumnModel new displayBlock: [:node | node content second 
asString ]; headerLabel: 'Last Name'; yourself)
        with: (TreeColumnModel new displayBlock: [:node | node content third 
asString ]; headerLabel: 'Age'; yourself)
        with: (TreeColumnModel new displayBlock: [:node | node content fourth 
asString ]; headerLabel: 'Gender'; yourself)      with: (TreeColumnModel new 
displayBlock: [:node | Morph new ]; headerLabel: ‘Morph'; yourself))
or
tree columns: (Array    with: (MorphTreeColumn new rowMorphGetSelector: [:node 
| node item first asString asMorph ]; headerButtonLabel: 'Name' font: nil; 
yourself)     with: (MorphTreeColumn new rowMorphGetSelector: [:node | node 
item second asString asMorph ]; headerButtonLabel: 'Last Name' font: nil; 
yourself)       with: (MorphTreeColumn new rowMorphGetSelector: [:node | node 
item third asString asMorph ]; headerButtonLabel: 'Age' font: nil; yourself)    
  with: (MorphTreeColumn new rowMorphGetSelector: [:node | node item fourth 
asString asMorph ]; headerButtonLabel:  'Gender' font: nil; yourself) with: 
(MorphTreeColumn new rowMorphGetSelector: [:node | Morph new ]; 
headerButtonLabel:  'Morph' font: nil; yourself)).And you get something like
<Screen Shot 2013-11-08 at 13.58.51.png>Ben
On 08 Nov 2013, at 13:45, prova email <prova...@hotmail.it> wrote:Yes Clement, 
i've got your .st file. I saw it in Nested Layout thread. I file in it in Pharo 
and i see that is not as good as a fashion window is. Maybe Morphic is the 
right solution but, in that way, we are leaving the idea of Bahman, and the 2nd 
Spec Tuto is in danger!
However, you asked to Ben the same question that i did: can i put some widgets 
in these cells or only String? 
Thanks again!Paolo

From: bera.clem...@gmail.com
Date: Fri, 8 Nov 2013 12:51:06 +0100
To: pharo-users@lists.pharo.org
Subject: Re: [Pharo-users] Spec - Grid/Table Layout

Ben answered in another thread:
About table, I have an example which will be running soon in Pharo (the changes 
are waiting to be integrated)
tree := TreeModel new.tree openWithSpec.
tree columns: (Array    with: (TreeColumnModel new displayBlock: [:node | node 
content first asString ]; headerLabel: 'Name'; yourself) with: (TreeColumnModel 
new displayBlock: [:node | node content second asString ]; headerLabel: 'Last 
Name'; yourself)   with: (TreeColumnModel new displayBlock: [:node | node 
content third asString ]; headerLabel: 'Age'; yourself)  with: (TreeColumnModel 
new displayBlock: [:node | node content fourth asString ]; headerLabel: 
'Gender'; yourself)).    tree roots: {   {'Benjamin'.'Van Ryseghem'.'26'.'M'}.  
 {'Pamela'.'Anderson'.'Far too much'.'F'}}

Right now, you can get the same by      - adding MorphTreeAdapter>>#columns:    
        columns: columns                         self widgetDo: [ :w |          
                w columns: columns.                             w 
resizerChanged.                               w updateList ]
And then evaluating:
tree := TreeModel new.tree openWithSpec.
tree columns: (Array    with: (MorphTreeColumn new rowMorphGetSelector: [:node 
| node item first asString asMorph ]; headerButtonLabel: 'Name' font: nil; 
yourself)     with: (MorphTreeColumn new rowMorphGetSelector: [:node | node 
item second asString asMorph ]; headerButtonLabel: 'Last Name' font: nil; 
yourself)       with: (MorphTreeColumn new rowMorphGetSelector: [:node | node 
item third asString asMorph ]; headerButtonLabel: 'Age' font: nil; yourself)    
  with: (MorphTreeColumn new rowMorphGetSelector: [:node | node item fourth 
asString asMorph ]; headerButtonLabel:  'Gender' font: nil; yourself)).       
tree roots: {   {'Benjamin'.'Van Ryseghem'.'26'.'M'}.   
{'Pamela'.'Anderson'.'Far too much'.'F'}}
Ben
Ben, in each cell, can we put something else than a String ? If so, can you add 
an example in the code above ? Thanks.
I guess doing Ben's solution is the best. I did it with nested layout but it is 
definitely not as good (see file in attachment, add it in your image then 
evaluate SpecTable new).

2013/11/8 prova email <prova...@hotmail.it>
Hi Clement;
I did the Spec tuto made by Bahman (great tuto). As him, i'd like to put some 
widgets into it. Is it possible? Maybe with the method "items:"? I don't know 
if the solution that Ben give to us (use Morphic instead of Spec) is suitable, 
that's because his UI looks like a list that accept only string. Maybe i'm 
wrong, can you give us more explanations? Or is it something new for you too?
Thanks for your help!Paolo

From: bera.clem...@gmail.com
Date: Thu, 7 Nov 2013 10:04:51 +0100
To: bah...@bahmanm.com; pharo-users@lists.pharo.org
Subject: Re: [Pharo-users] Spec - Grid/Table Layout

Hello,
Actually I had the same problem, I think the best widget that exists for that 
right now is MultiColumnListModel.
For example, in the senders window (in attachment), the top panel is a 
MultiColumnListModel. You can have as many lines and as many columns as you 
want. 
We do not have yet a tableLayout, but we miss it. If you plan to implement it, 
we will be interested in integrating it into Pharo.
Ben can advise you on how to implement that.



2013/11/7 Bahman Movaqar <bah...@bahmanm.com>
Hi all,

Is there a grid/table layout available in Spec?  Something like an HTML
table or Swing's GridLayout?  If not, how may I achieve such a
functionality?

I'd appreciate any hints/pointers.

--
Bahman Movaqar  (http://BahmanM.com)

ERP Evaluation, Implementation & Deployment Consultant
PGP Key ID: 0x6AB5BD68 (keyserver2.pgp.com)
                                          

Reply via email to