I only used Polymorph for the first time a couple of months ago. I don't really know what is available, but having a quick poke around what I found was: 1. If you follow the call-chain from UITheme>>newListFor:list:selected:changeSelected:help: you end up in UITheme>>newListIn:for: list: selected: changeSelected: getEnabled: help:
which uses PluggableListMorph
2. There is also PluggableMultiColumnListMorph (read its comment)
but if if you check "References" for it, it does not appear to be used by UITheme

So the short answer seems to be - no, Polymorph doesn't out of the box support multi-column lists. The long answer - the components seem to be available for you to add multi-column-lists to Polymorph yourself - perhaps just replicating the call-chain from (1.) to end up using PluggableMultiColumnListMorph)

cheers -ben

J. P. L. Martín wrote:
I got everything working besides the list update when changed. Also, is
there anyway to properly display data in columns? This is what i have:
http://i.imgur.com/bwK2M.png


On Wed, Jan 2, 2013 at 11:47 AM, Ben Coman <[email protected]> wrote:

J. P. L. Martín wrote:

 Hello, I'm having trouble to figure out how to do this, I have a simple
window with 3 buttons, each button should change the content listed on the
list below them but I'm really not sure about how to do it.

This is the code for the window:
---
open
    "Abre la ventana principal del Sistema de Gestion Bibleotecaria"

    | builder contain |
    builder := UITheme builder.
    contain := builder newColumn: {builder newRow: {
            builder newButtonFor: self action: #onPrestamosClick label:
'Prestamos'  help: ''.
            builder newButtonFor: self action: #onMaterialesClick label:
'Materiales'  help: ''.
            builder newButtonFor: self action: #onSociosClick label:
'Socios'  help: ''}.
            builder newColumn: {
            builder newListFor: self list: nil selected: nil
changeSelected: nil  help: '' }.}.

    (contain  openInWindowLabeled: 'Babel') extent: 600@600.
---

How should I define #onLabelClick to set the list to for example: Prestamo
database.

Thanks in advance.



J. P. L. Martín wrote:

Actually the code of the GUI is inspired on the Pharocast video on the
making of a Contact list. I wonder if the list is static since is defined
there as a newListFor and because that you can't send any message to it,


The #changed: method tells the list to get its contents again - see
example below.

I'm sure there should be a way to do it so #onPrestamosClick look like:
---
#onPrestamosClick
    listMorph list: Prestamo database.
---
or something like that.




You didn't explicitly state your references, I presume you a referring to
http://www.pharocasts.com/**2011/02/pharo-gui-with-**polymorph.html<http://www.pharocasts.com/2011/02/pharo-gui-with-polymorph.html>
.
Note that ContactManager-**LaurentLaffront.1.mcz referred to from this
post uses...

        |builder                newListFor: self                  list:
#contacts
               selected: #contactSelectedIndex
               changeSelected: #contactSelectedIndex:
               help: ''.|

whereas you have...

        builder                 newListFor: self                list: nil
              selected: nil
                changeSelected: nil             help: ''
which is the key part you are missing, where the (list: #contacts) defines
the method to return the list contents, for example...
---
#contacts
   ^ Contact database collect: [:aContact|
       ', ' join: {aContact lastName.  aContact firstName}
   ].
---


You have defined your list contents as (list: nil), whereas if it was
(list: #selectedDatabase) the following might work...
---
#onPrestamosClick

   selectedDatabase := Prestamo database.
   self changed: #selectedDatabase.
---
#selectedDatabase
        ^selectedDatabase.

---

good luck,
cheers -ben






Reply via email to