Hello,
i want to display the results of an ongoing calculation. I'm not terribly concerned about speed, as this is just for educational purposes. So i figured that PluggableMultiColumnListMorph would be a good place to start. My problem now is, that it only wants to take Arrays as its source list. Because i don't know how many rows of data need to be displayed, i just threw all of them in an OrderedCollection. If i convert this OrderedCollection with "asArray" and feed it to the MultiColoumnMorph the contents are displayed just fine, but i can't select any entries or navigate using the arrow keys. In fact, i can only select as much entries as there are columns in the Morph.
To illustrate, i did something roughly similiar to the following:
|column1 column2| result := OrderedCollection new. column1 := OrderedCollection new. column2 := OrderedCollection new. column1 add: 'x-component'; add: 'purz'; add: 'durst'; add: 'puh'. column2 add: 'y-component'; add: 'purz1'; add: 'durst1'; add: 'puh1'. result add: (column1 asArray); add: (column2 asArray). result := result asArray.
And it seems like PluggableMultiColumnListMorph doesn't treat "result" as a proper array. Is there a possible workaround or do i absolutely have to work with simple arrays? Or is there an even better way to display rows and columns of data?
Thanks in advance, Peter Schneider
On Fri, Oct 12, 2007 at 06:56:55PM +0200, Peter Schneider wrote:
Hello,
i want to display the results of an ongoing calculation. I'm not terribly concerned about speed, as this is just for educational purposes. So i figured that PluggableMultiColumnListMorph would be a good place to start. My problem now is, that it only wants to take Arrays as its source list. Because i don't know how many rows of data need to be displayed, i just threw all of them in an OrderedCollection. If i convert this OrderedCollection with "asArray" and feed it to the MultiColoumnMorph the contents are displayed just fine, but i can't select any entries or navigate using the arrow keys. In fact, i can only select as much entries as there are columns in the Morph.
To illustrate, i did something roughly similiar to the following:
|column1 column2| result := OrderedCollection new. column1 := OrderedCollection new. column2 := OrderedCollection new. column1 add: 'x-component'; add: 'purz'; add: 'durst'; add: 'puh'. column2 add: 'y-component'; add: 'purz1'; add: 'durst1'; add: 'puh1'. result add: (column1 asArray); add: (column2 asArray). result := result asArray.
I don't understand how this hooks up to PluggableMultiColumnListMorph. Is this the getListSelector code? Looking at the class comment, it says getListSelector should return an OrderedCollection of Arrays, where each Array is a row. You seem to be doing something in column-major order, so I don't really see how this code is supposed to work
Yes, thats the getListSelector stuff.
Basically i just tried the PluggableMorphsDemo.pr, which you can download here: http://lists.squeakfoundation.org/pipermail/beginners/2006-May/000259.html(f... should end in .pr instead of .obj.)
The ListDemo2 doesn't work as expected. The getListSelector is feed the following Array: self collection: #( "items in the first column" #('1a' '2a' '3a' '4a' '5a')
"items in the second column" #('1b' '2b' '3b' '4b' '5b') ).
So i figured that order would be correct, at least in principle. Now the there are two columns and four rows displayed with that data in PluggableMultiColumnListMorph. But i can only select the first two rows.
Changing the the array like this: self collection: #( #('1a' '2a' '3a' '4a' '5a') #('1b' '2b' '3b' '4b' '5b') #('1c' '2c' '3c' '4bc' '5c') ).
Produces 3 columns and 4 rows. I can now select 3 rows. I can't really see what i am doing wrong there.
I'm using the Squeak-dev 3.10 Image.
beginners@lists.squeakfoundation.org