So far, Wicket only has CheckGroupSelector as a select-all component. It has two main drawbacks:
- it only works with CheckGroup components, not with CheckboxMultipleChoice or multiple CheckBox components.
- it has no "auto update" feature that updates the state of the select-all when any of the associated checkboxes is checked or unchecked.
This patch introduces two new components:
- CheckboxMultipleChoiceSelector: This does for CheckboxMultipleChoice what CheckGroupSelector does for CheckGroup.
- CheckBoxSelector: A select-all component for a collection of CheckBox instances.
Both are based on a new abstract superclass called AbstractCheckSelector that does the heavy lifting. The subclasses only provide a JS function that finds the associated checkboxes. The superclass manages both the select-all and the auto-update mentioned above. The auto update feature is turned on by default, since it seems to be the most sensible behavior.
The patch also pretty much rewrites the original CheckGroupSelector to also use the new AbstractCheckSelector. In CheckGroupSelector the auto-update feature is disabled by default to keep the behavior the same as in previous versions. It can be enabled by overriding wantAutomaticUpdate() to return true. This default should probably be changed in Wicket 1.5 or 1.6.