Selecting all rows in Pulse has been disabled when upgrading to Vaadin 8. Reason is that, due to the nature of Vaadin's AbstractBackEndDataProvider we use there, all rows would be put in memory if we were to enable the select all checkbox, which would cause severe performance issues with a large enough dataset.
Some ideas to tackle this:
What we could do is to simply add a button "Remove all messages" - this way we'll allow them to erase all the stuff, but also will avoid the possible performance problems, cause we wouldn't query anything at all.
Found this by chance but don't know if it's doable (and not too complicated) in Java
Solution eventually implemented is the following:
- make the select all checkbox configurable and enable it by default
- make an item threshold configurable (e.g. 1000 items by default)
- if a user tries to select all items AND the total item size is > threshold, emit a message saying something like "operation can't be carried out due to possible memory issues. Contact admin if needed"
In extreme cases, an admin can either increase the threshold or use a Groovy script to perform bulk operations w/o using the UI.
The advantage of all this would be that (in probably 99% of cases) users would keep on using a familiar and effective UX pattern.
Also, from Magnolia's perspective this solution seems easier to implement and maintain.