add calculating methods to bind
Tomas Mikula
tomas.mikula at gmail.com
Wed May 21 19:47:54 UTC 2014
Yeah, and you could also eliminate "Observable... dependencies" from
snap's signature, since now you are not using them to invalidate your
binding.
On Wed, May 21, 2014 at 9:36 PM, Tom Eugelink <tbee at tbee.org> wrote:
>
> Found it! Slightly different DoubleBinding was required (copied it from
> negate).
>
> private DoubleBinding snap(final ObservableNumberValue value, final
> Observable... dependencies) {
> return new DoubleBinding() {
> {
> super.bind(value);
> }
>
> @Override
> public void dispose() {
> super.unbind(value);
> }
>
> @Override
> protected double computeValue() {
> return NodeUtil.snapXY(value.doubleValue());
>
> }
>
> @Override
> public ObservableList<?> getDependencies() {
> return FXCollections.singletonObservableList(value);
> }
> };
>
> }
>
>
>
> On 2014-5-21 21:34, Tomas Mikula wrote:
>>
>> Hi Tom,
>>
>> it seems to me that in your custom DoubleBinding implementation
>> `other` is not its dependency, thus it does not react to it's
>> invalidations.
>>
>> Tomas
>>
>> On Wed, May 21, 2014 at 9:25 PM, Tom Eugelink <tbee at tbee.org> wrote:
>>>
>>> I came up with this:
>>>
>>> startXProperty().bind( *snap(*heightProperty().multiply(0.2)) )
>>>
>>>
>>> And then:
>>>
>>> private DoubleBinding snap(final ObservableNumberValue other, final
>>> Observable... dependencies) {
>>> return new DoubleBinding() {
>>> {
>>> super.bind(dependencies);
>>> }
>>>
>>> @Override
>>> public void dispose() {
>>> super.unbind(dependencies);
>>> }
>>>
>>> @Override
>>> protected double computeValue() {
>>> return NodeUtil.snap(other.doubleValue());
>>> }
>>>
>>> @Override
>>> public ObservableList<?> getDependencies() {
>>> return new
>>> ImmutableObservableList<Observable>(dependencies);
>>> }
>>> };
>>> }
>>>
>>> But that always returns 0... I feel this should have worked.
>>>
>>> Tom
>
>
>
More information about the openjfx-dev
mailing list