Details
-
Type: New Feature
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 1.8.2-EE-GA_P01, 1.8.3
-
Component/s: ICE-Components
-
Labels:None
-
Environment:All
Description
Any of the select based input components, which use onchange to do a partial submit, such as selectOneListbox, selectManyListbox and selectManyMenu, have an issue with keyboard navigation. On the one hand, a user may need to press the down arrow, in the select, to get to their desired option, somewhere down the list, and won't want to incur the latency of partial submits as they go. On the other hand, an application may wish for users to cycle through their options, updating the rest of the display as they go. So we need to differentiate between selections that are just the user flitting through, versus selections where the user wishes to remain for a bit, and only partial submit in the latter.
We'll use the selectInputText technique of using a timer, so that multiple change events within a certain time range will result in only the last one causing a partial submit.
We'll use the selectInputText technique of using a timer, so that multiple change events within a certain time range will result in only the last one causing a partial submit.
Issue Links
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Balanced the two requirements of responsiveness and avoiding redundant partialSubmits by creating an algorithm that immediately does a partialSubmit, on an initial change of value, or on a change of value that was not preceded by another within a certain time-frame. Then, subsequent change events will use the timer method. If a second change starts up a timer, and then a third change happens while the timer is set, but has not yet rung, then the timer is canceled, and begun anew. The timer was then tuned to be 300 ms, so that the smallest perceptible user delay between change events would trigger a partialSubmit, but all changes with no delay, from an intentional desire to skip over them, would result in no partialSubmit. In this way, the default delay adds no perceptible latency, while still improving performance and reducing server load. The delay is configurable, so that applications may set it to their varying needs.
TRUNK
Subversion 21043
icefaces\bridge\build.xml
icefaces\bridge\lib\extras\select.js
icefaces\component-metadata\src\main\resources\conf\extended-faces-config.xml
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyListbox-props.xml
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyMenu-props.xml
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectOneListbox-props.xml
icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyListbox.java
icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyMenu.java
icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectOneListbox.java
icefaces\component\src\com\icesoft\faces\component\ext\renderkit\ListboxRenderer.java
icefaces\component\src\com\icesoft\faces\component\ext\renderkit\MenuRenderer.java
Subversion 21044
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml
icefaces-ee-1.8.2_p01
Subversion 21045
icefaces\bridge\build.xml
icefaces\bridge\lib\extras\select.js
icefaces\component-metadata\src\main\resources\conf\extended-faces-config.xml
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-att-partialSubmitDelay-props.xml
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyListbox-props.xml
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectManyMenu-props.xml
icefaces\component-metadata\src\main\resources\conf\ice_properties\ice-selectOneListbox-props.xml
icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyListbox.java
icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectManyMenu.java
icefaces\component\src\com\icesoft\faces\component\ext\HtmlSelectOneListbox.java
icefaces\component\src\com\icesoft\faces\component\ext\renderkit\ListboxRenderer.java
icefaces\component\src\com\icesoft\faces\component\ext\renderkit\MenuRenderer.java