Modifying timezone.jspx
In the timezone.jspx page, make the following changes:
1. To support partial submission, we need to use an ICEfaces specific component, which requires adding a namespace declaration:
xmlns:ice="http://www.icesoft.com/icefaces/component"
2. The standard JSF form component is replaced with the ICEfaces form component, enabling partial submission:
<ice:form partialSubmit="true">
...
</ice:form>
3. In the panelGrid holding the map, add a row of seven selectBooleanCheckbox components, under the seven commandButton components.
<ice:panelGrid columns="7" cellspacing="0" cellpadding="0">
<ice:panelGroup
style="background:#f16e28; border:1px solid #999999;">
<ice:selectBooleanCheckbox id="GMTminus10" required="false"
immediate="true"
valueChangeListener="#{timeZoneBean.timeZoneChanged}"
value="#{timeZoneBean.checkboxStates['GMTminus10']}"
autocomplete="off"/>
<ice:outputLabel value="HADT" style="margin-right:7px;"/>
</ice:panelGroup>
<ice:panelGroup
style="background: #9566b6; border:1px solid #999999;">
<ice:selectBooleanCheckbox id="GMTminus9" required="false"
immediate="true"
valueChangeListener="#{timeZoneBean.timeZoneChanged}"
value="#{timeZoneBean.checkboxStates['GMTminus9']}"
autocomplete="off"/>
<ice:outputLabel value="AKST" style="margin-right:7px;"/>
</ice:panelGroup>
<ice:panelGroup
style="background: #fefc5a; border:1px solid #999999;">
<ice:selectBooleanCheckbox id="GMTminus8" required="false"
immediate="true"
valueChangeListener="#{timeZoneBean.timeZoneChanged}"
value="#{timeZoneBean.checkboxStates['GMTminus8']}"
autocomplete="off"/>
<ice:outputLabel value="PST" style="margin-right:7px;"/>
</ice:panelGroup>
<ice:panelGroup
style="background: #96b710; border:1px solid #999999;">
<ice:selectBooleanCheckbox id="GMTminus7" required="false"
immediate="true"
valueChangeListener="#{timeZoneBean.timeZoneChanged}"
value="#{timeZoneBean.checkboxStates['GMTminus7']}"
autocomplete="off"/>
<ice:outputLabel value="MDT" style="margin-right:7px;"/>
</ice:panelGroup>
<ice:panelGroup
style="background: #f16e28; border:1px solid #999999;">
<ice:selectBooleanCheckbox id="GMTminus6" required="false"
immediate="true"
valueChangeListener="#{timeZoneBean.timeZoneChanged}"
value="#{timeZoneBean.checkboxStates['GMTminus6']}"
autocomplete="off"/>
<ice:outputLabel value="CDT" style="margin-right:7px;"/>
</ice:panelGroup>
<ice:panelGroup
style="background: #9566b6; border:1px solid #999999;">
<ice:selectBooleanCheckbox id="GMTminus5" required="false"
immediate="true"
valueChangeListener="#{timeZoneBean.timeZoneChanged}"
value="#{timeZoneBean.checkboxStates['GMTminus5']}"
autocomplete="off"/>
<ice:outputLabel value="EST" style="margin-right:8px;"/>
</ice:panelGroup>
<ice:panelGroup
style="background: #fefc5a; border:1px solid #999999;">
<ice:selectBooleanCheckbox id="GMTminus4" required="false"
immediate="true"
valueChangeListener="#{timeZoneBean.timeZoneChanged}"
value="#{timeZoneBean.checkboxStates['GMTminus4']}"
autocomplete="off"/>
<ice:outputLabel value="NST" style="margin-right:8px;"/>
</ice:panelGroup>
</ice:panelGrid>
4. A dataTable is added below the panelGrid component in the UI. This dataTable will display information on all the selected time zones, getting its data from timeZoneBean's checkedTimeZoneList property, which is a list of TimeZoneWrapper objects. The properties of each object in the list are then displayed through JSF expression language bindings in outputText components in each row of the dataTable.
<h:dataTable frame="box" value="#{timeZoneBean.checkedTimeZoneList}"
var="checkedTimeZone">
<f:facet name="header">
<h:outputText value="Checked Time Zones"/></f:facet>
<h:column>
<f:facet name="header"><h:outputText value="Time Zone"/></f:facet>
<h:outputText value="#{checkedTimeZone.displayName}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="Location"/></f:facet>
<h:outputText value="#{checkedTimeZone.location}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="Uses DST"/></f:facet>
<h:outputText value="#{checkedTimeZone.useDaylightTime}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="In DST"/></f:facet>
<h:outputText value="#{checkedTimeZone.inDaylightTime}"/>
</h:column>
<h:column>
<f:facet name="header"><h:outputText value="Time"/></f:facet>
<h:outputText value=" #{checkedTimeZone.time} "/>
</h:column>
</h:dataTable>