In summary, the whole scenario is the following: - on the left we have classes, on the right we have commits. One class can be changed by several commits. One commit can change several classes.
- initially, the panes show just the classes and just the commits. (There are some additional information with polymetric, but this is irrelevant to the problem)
- if we select on a class, we want to highlight all the commits that impacted it. If we select a commit, we want to highlight all the classes that it impacts.
The first implementation recomputed the whole pane with some
"if: [ :aClass | aClass commits includes: aCommit ] fillColor: Color black."
at the right place to "highlight" the proper entities.
We understand that we should not recompute the entire pane, but somehow update it by way of ports. Can you give some insight?
thank you very much
nicolas
On Thursday 05 January 2012 19:10:27 Tudor Girba wrote:
Hi,
I know it is executed only once.
But, I do not know what you want :). Please provide the whole scenario so that I can get a better idea.
Cheers, Doru
On 5 Jan 2012, at 17:36, César Couto wrote:
Hi Doru,
thanks for the reply, but unfortunately did not work. If you put the
command halt:
|browser |
browser := GLMTabulator new. browser column: #one; column: #two. browser transmit to: #one; andShow: [ :a |
a mondrian painting: [:view :list | view shape label text: #asString. view nodes: list. self halt. view verticalLineLayout ]].
browser transmit to: #two; andShow: [ :a |
a mondrian painting: [:view :list | view shape label text: #asString. view nodes: list. self halt. view verticalLineLayout ]].
browser transmit from: #one; to: #two port: #selection. browser transmit from: #two; to: #one port: #selection. browser openOn: (1 to: 42)
you will realize that the block is executed only once. I want the block is executed always there is a selection.
César Couto
On Thu, Jan 5, 2012 at 4:28 PM, Tudor Girba tudor@tudorgirba.com wrote: Hi Cesar,
Welcome in Moose-land :)
The problem in your script is that you are sending andShow: with your transmissions as well.
For the record, the semantics of andShow: are:
- delete the existing presentations
- delete the value of all ports
- install the new value in the port
- install the new presentations
Try this: browser := GLMTabulator new. browser column: #one; column: #two. browser transmit to: #one; andShow: [ :a |
a mondrian painting: [:view :list | view shape label text: #asString. view nodes: list. view verticalLineLayout ]].
browser transmit to: #two; andShow: [ :a |
a mondrian painting: [:view :list | view shape label text: #asString. view nodes: list. view verticalLineLayout ]].
browser transmit from: #one; to: #two port: #selection. browser transmit from: #two; to: #one port: #selection. browser openOn: (1 to: 42)
Note that there is no andShow: related to the last two transmissions. Only the values get moved.
Does this work for you?
Cheers, Doru
On Thu, Jan 5, 2012 at 2:50 PM, Cesar Couto cesarfmc@gmail.com wrote:
My name is Cesar Couto and I am working with Nicolas Anquetil at INRIA.
I think this code just works with list, but it does not work mondrian
painting. Look this simple code using mondrian: |browser|
browser := GLMTabulator new. browser column: #one; column: #two.
browser transmit to: #one; andShow: [ :a | a mondrian painting: [ :view :bug | view shape label. view node: 'one'. view shape rectangle. view node:1 ] ].
browser transmit to: #two; andShow: [ :a | a mondrian painting: [ :view :bug | view shape label. view node: 'two'. view shape rectangle. view node:2 ] ]. browser transmit from: #one; to: #two port: #selection; andShow: [ :a | a mondrian title: [ :entity | 'one clicked']; painting: [ :view :class | view shape label. view node: 'one clicked'. view shape rectangle. view node:3 ]].
browser transmit from: #two; to: #one port: #selection; andShow: [ :a | a mondrian title: [ :entity | 'two clicked']; painting: [ :view :bug | view shape label. view node: 'two clicked'. view shape rectangle. view node:4]]. browser openOn: MooseModel root allModels first.
Both of the panes open correctly. But when I click on the entities in one pane, the other pane turn gray and nothing happens.
What do you think?
Cesar Couto
-- http://www.decom.cefetmg.br/cesar
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Every thing has its own flow"
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"It's not what we do that matters most, it's how we do it."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev