[announce] InhiBeans: mitigate redundant recalculations
swpalmer at gmail.com
Sun Dec 15 15:39:12 PST 2013
Good stuff! This is the sort of thing that might make a good contribution
to extend the standard Bindings class.
On Sun, Dec 15, 2013 at 5:49 PM, Tomas Mikula <tomas.mikula at gmail.com>wrote:
> On Sun, Dec 15, 2013 at 6:39 PM, Scott Palmer <swpalmer at gmail.com> wrote:
> > Interesting idea.
> > There is a case I have been curious about and wonder what the best
> > are for it. Suppose you have a case when you are changing multiple
> > different properties that will be used in a single calculation. You
> want to
> > deal with a single change to all of them in one go. E.g. imagine you
> > an "area" property that is bound to both "width" and "height". You want
> > write code like:
> > obj.setWidth(w);
> > obj.setHeight(h);
> > and have only ONE recalculation of the area property happen. Currently
> > way bindings work the area will be calculated twice. The intermediate
> > calculation is really not a value that you ever want to observe.
> Hi Scott,
> this is precisely the problem that I'm trying to address here. Now,
> the question is whether you have control over the implementation of
> If yes, then it is the same case as the AND gate "motivational
> example" from InhiBeans page. You provide a method setSize(w, h) and
> use block()/release() to implement it in a way that causes only one
> change of the area property.
> If you cannot change the implementation of obj, what you can do is to
> bind an inhibeans.binding.DoubleBinding to the "area" value, call it
> relaxedArea, and listen to that one for all your purposes.
> Then you resize obj like this:
> Only one change of relaxedArea is emitted.
> > Are there helpers for this sort of situation? Are there guidelines in
> > JavaFX docs somewhere?
> > Regards,
> > Scott
> > On Sat, Dec 14, 2013 at 11:54 PM, Tomas Mikula <tomas.mikula at gmail.com>
> > wrote:
> >> Hello,
> >> I just published a small extension of javafx bindings and properties
> >> that can help you reduce redundant recalculations.
> >> They provide two additional methods:
> >> public void block();
> >> public void release();
> >> Call p.block() when you suspect your actions will lead to multiple
> >> invalidations of p, and call p.release() when you are done and want to
> >> deliver a single invalidation notification to p's observers.
> >> https://github.com/TomasMikula/InhiBeans
> >> Regards,
> >> Tomas
More information about the openjfx-dev