Hi!
If you create the following Glamour browser: ``` tabulator := GLMTabulator new. tabulator column: #one; column: #two; column: #three. tabulator transmit to: #one; andShow: [ :composite | composite fastList display: [ :x | Array with: x ] ]. tabulator transmit to: #two; andShow: [ :composite | composite fastList display: [ :x | Array with: 2 * x ] ]. tabulator transmit from: #one; to: #three; andShow: [ :a | a fastList display: [ :x | Array with: x ] ]. tabulator transmit from: #two; to: #three; andShow: [ :a | a fastList display: [ :x | Array with: x ] ]. tabulator openOn: 4. ``` You will get the following browser: if you then select 4, the third list appears. If you then select 8, the value is changed: But since then, the third list does not change. It stays with 8 value forever. Do I miss something? Should I define it differently? Or if it is a bug: Can you give me insights how to fix it? Tested in the latest Pharo 6. Thanks! Juraj |
Hi, That's actually the default behavior, but I see there is also a bug. Normally if you want to allow deselection in a presentation you should use allowDeselection. Just I see there is a bug in the fast table renderer because if I add #allowDeselection to the first presentation when clicking again on the selected element the selection port is not cleared. If you use #list instead of #fastList it works. I think you can get the desired behaviur using this code: ----------------------------------------------------------------- tabulator := GLMTabulator new. tabulator column: #one; column: #two; column: #three. tabulator transmit to: #one; andShow: [ :composite | composite list allowDeselection; display: [ :x | Array with: x ] ]. tabulator transmit to: #two; andShow: [ :composite | composite list allowDeselection; display: [ :x | Array with: 2 * x ] ]. tabulator transmit from: #one; to: #three; from: #two; to: #three; transformed: [ :x :y | y ifNil: [ x ] ifNotNil: [ y ] ]; andShow: [ :a | a fastList display: [ :x | Array with: x ] ]. tabulator openOn: 4. ----------------------------------------------------------------- Cheers, Andrei On Mon, Apr 3, 2017 at 9:35 PM, Juraj Kubelka <[hidden email]> wrote:
|
Hi, yes, it is better, but it does not work intuitively. Try the following: 1. execute your script, 2. click on 4 (selection), 3. click on 8 (selection), 4. click on 4 (deselection), 5. click on 4 (selection) You can see that the third list still keeps the number 8. It is necessary to deselect 8 in order to see 4. This part explains to me how the transmit works: ``` tabulator transmit from: #one; to: #three; from: #two; to: #three; transformed: [ :x :y | y ifNil: [ x ] ifNotNil: [ y ] ]; andShow: [ :a | a fastList display: [ :x | Array with: x ] ]. ``` By using #transformed: I can decide what to use (#one or #two). It is nice feature! I think what I need is having to possibility to change the third list also according to what list is active (#one or #two). In the first screenshot, the first list is active (blue border). In the second screenshot, the second list is active. So I would like to update the third list according to the active one. Is it possible? Thanks! Juraj
|
Hi,
On Tue, Apr 4, 2017 at 5:01 PM, Juraj Kubelka <[hidden email]> wrote:
Indeed, this is not what you'd expect.
Unfortunately this doesn't work out of the box. We'll need to implement something that can generate evens/populates a port when a presentation gets the focus. Cheers, Andrei
|
Hi Andrei!
Does it make sense such feature? I am willing to do it. Can you give me some starting points? My knowledge about Glamour design is a bit weak. I suppose that it is necessary to subscribe for MorphGotFocus and MorphLostFocus in each renderer and do some actions accordingly, right? What are the actions? Thanks! Juraj
|
Free forum by Nabble | Edit this page |