How to trigger property invalidation? (original) (raw)
Will Hoover java.whoover at gmail.com
Fri Nov 2 11:46:39 PDT 2012
- Previous message: How to trigger property invalidation?
- Next message: How to trigger property invalidation?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
...or you could use a BeanPathAdapter that handles all your POJO field to JFX property conversions for you (http://wp.me/P2rLDc-1s) and listen for changes to the bean:
BeanPathAdapter myPojoAdapter = new BeanPathAdapter<>(myPojo); TextField tf = new TextField(); myPojoAdapter.bindBidirectional("myPojoField.anotherField.destinationField", tf.valueProperty()); myPojoAdapter.fieldPathValueProperty().addListener( new ChangeListener() { @Override public void changed( final ObservableValue<? extends FieldPathValue> observable, final FieldPathValue oldValue, final FieldPathValue newValue) { System.out.println("Value changed from path: " + oldValue.getPath() + " value: " + oldValue.getValue() + " to path: " + newValue.getPath() + " value: " + newValue.getValue()); } });
... another shameless plug ;)
-----Original Message----- From: openjfx-dev-bounces at openjdk.java.net [mailto:openjfx-dev-bounces at openjdk.java.net] On Behalf Of Martin Sladecek Sent: Friday, November 02, 2012 2:13 PM To: openjfx-dev at openjdk.java.net Subject: Re: How to trigger property invalidation?
Hi Werner, maybe an ObjectProperty isn't really what you are looking for. If you have single bean with an non-observable property (BTW, how do you know it has changed?) and you want to convert it to an FX property, why not using a property of the same type as MyBean.myProperty and set FX property when myProperty changes?
-Martin
On 11/02/2012 04:25 PM, Werner Lehmann wrote:
Pavel,
unfortunately I cannot listen to changes on myProperty because it is not an observable property: MyBean is a domain bean provided by the server and those beans do not have observable properties. Thanks for the clarification though. In my case this means that I have to clone the bean everytime when a slider position changes so that I can replace the property value I am actually observing (the MyBean property). Seems to be quick enough but is hardly elegant... Werner On 02.11.2012 15:50, Pavel Safrata wrote: Hi Werner, I think that you cannot trigger invalidation manually by design. The property holds a reference and should not be concerned with changes of anything else than the reference. There would be various issues with it, for example there are change notifications bound to the invalidation, which would produce a weird notification of the property being changed to the same value. I think the right approach is to listen directly on the myProperty instead of tweaking the invalidation mechanism.
With Regards, Pavel On 2.11.2012 12:55, Werner Lehmann wrote: Hi,
for an ObjectProperty, is it possible to trigger invalidation manually when MyBean.myProperty changes? Basically I'd like to call markInvalid() but it is private. And set() compares old and new value by reference before invalidating, so won't see the change either. Workaround seems to be to copy the bean to another instance and assign the new instance to the object property. Rgds Werner
- Previous message: How to trigger property invalidation?
- Next message: How to trigger property invalidation?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]