[databinding] too many events while listening to changes inside IObservableList/Set [message #553055] |
Mon, 16 August 2010 09:37 |
Henno Vermeulen Messages: 126 Registered: July 2009 |
Senior Member |
|
|
I am setting the input of a TableViewer to an IObservableList which I obtain from observing a detail list on a Javabean. The list elements are Javabeans as well.
For dirty tracking and for generating validation messages, I need to add a relatively expensive listener to the list which needs to be notified exactly ONCE when something in the list changes, i.e.:
1. adding an element (I fire a Javabean property change on this)
2. removing an element (I fire a Javabean property change on this)
3. changing a property of an element in the list
I can easily get 1 and 2 working by observing the IObservableList directly or using
contentProvider.getKnownElements()
on my ObservableListContentProvider.
For each property of the elements in my list I can also easily get number 3 working by adding a listener to the propertyMap obtained by
...
IValueProperty labelProperty = BeanProperties.value(propertyName,
propertyClass);
IObservableMap propertyMap = Properties.observeEach(contentProvider
.getKnownElements(), new IValueProperty[] { labelProperty })[0];
...
When adding the listener to each such propertyMap, changes of type 3 fire the listener exactly once when a property changes. I also don't need to add the listener to the contentProvider.getKnownElements() because changes of type 1 and 2 also fires events.
But the problem is that when adding or removing an element of the list the listener is called once for each propertyMap.
This gives a performance problem.
How can I have a listener that is called only once when a change of type 1, 2 or 3 happens?
[Updated on: Mon, 16 August 2010 09:39] Report message to a moderator
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03168 seconds