Re: question about collaboration

Hi Nicolas,

> Let's suppose I have a big 3D block and also a 1D view "associated" with,
> for instance a vertical line passing through the block.
> If computations modify the 1D data, is there a "simple"
> way to propagate the changes to the 3D block (the father)?
> What else if there are 2 views sharing the same 3D block data?

You can use CellImpls to do this. For each 1-D view of a 3-D block,
you'd construct a CellImpl whose doAction() method would propagate
the change to the 3-D block, as well as to the other 1-D views.
You'd pass a DataReference for the 1-D view to the addReference()
method of the CellImpl. In a situation with multiple 1-D views,
this can lead to event loops (i.e., A changes B which changes A
which changes B ...). So when a doAction changes B, it should
first test if the new value for B is the same as the old value
for B, and if they are equal then don't make the change. There
are various signatures in vsad/util/ for a method
isApproximatelyEqual() for testing approximate equality between
floats and doubles.


  • 2002 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: