[jbossseam-issues] [JBoss JIRA] Closed: (JBSEAM-1124) Make ThemeSelector and LocaleSelector implement valueChanged(ValueChangeEvent event), and some more...

Gavin King (JIRA) jira-events at lists.jboss.org
Thu Mar 29 12:29:57 EDT 2007


     [ http://jira.jboss.com/jira/browse/JBSEAM-1124?page=all ]

Gavin King closed JBSEAM-1124.
------------------------------

    Fix Version/s: 1.3.0.BETA1
       Resolution: Done

Done, except for the cookie name customization. Please test it for me, thanks.

> Make ThemeSelector and LocaleSelector implement valueChanged(ValueChangeEvent event), and some more...
> ------------------------------------------------------------------------------------------------------
>
>                 Key: JBSEAM-1124
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-1124
>             Project: JBoss Seam
>          Issue Type: Feature Request
>          Components: Framework
>    Affects Versions: 1.2.1.GA
>         Environment: All
>            Reporter: Arjan van Bentem
>            Priority: Optional
>             Fix For: 1.3.0.BETA1
>
>
> Neither LocaleSelector nor ThemeSelector currently provide a method valueChanged(ValueChangeEvent event). Such method is needed to get some auto-submit without the need for a lot of JavaScript, to change the locale or theme without clicking a Submit button. The following would create a dropdown list, for which selecting a new value would change the look and feel right away -- thus loosing any changes made in other forms on the very same page...
>     <h:form>
>         <h:selectOneMenu 
>                 immediate="true"
>                 value="#{themeSelector.theme}"
>                 onchange="submit();"
>                 valueChangeListener="#{themeSelector.valueChanged}">
>             <f:selectItems value="#{themeSelector.themes}" />
>         </h:selectOneMenu>
>     </h:form>	
> And while extending ThemeSelector, why not add a method selectTheme(String), just like LocaleSelector#selectLanguage(String).
> And one might also make the cookie name available for injection. This, however, also needs some work in the xmlns:theme="http://jboss.com/products/seam/theme" namespace.
>     http://fisheye.labs.jboss.com/browse/JBoss/jboss-seam/src/main/org/jboss/seam/theme/ThemeSelector.java?r=1.15#l41
>     public class ThemeSelector  extends Selector
>     {
>         :
>         :
>         private String cookieName = "org.jboss.seam.core.Theme";
>         public String getCookieName() {
>             return cookieName;
>         }
>         public void setCookieName(String cookieName) {
>               this.cookieName = cookieName;
>         }
>         /**
>          * Sets the theme and forces it to load, useful for auto-submit dropdown
>          * lists using the JavaScript onchange event: <br>
>          * <code>
>          *   &lt;h:form&gt;
>          *     &lt;h:selectOneMenu
>          *         immediate="true"
>          *         value="#{themeSelector.theme}"
>          *         onchange="submit();"
>          *         valueChangeListener="#{themeSelector.valueChanged}"&gt;
>          *       &lt;f:selectItems value="#{themeSelector.themes}" /&gt;
>          *     &lt;/h:selectOneMenu&gt;
>          *    &lt;/h:form&gt;
>          *  </code>
>          * 
>          * @param event
>          *            the JavaServer Faces ValueChangedEvent
>          */
>         public void valueChanged(ValueChangeEvent event) {
>             setTheme((String) event.getNewValue());
>             select();
>         }
>         /**
>          * Sets the theme and force it to load, useful for quick action links: <br>
>          * <code>
>          *   &lt;h:commandLink value="#{messages['org.jboss.seam.theme.default']}"
>          *      action="#{themeSelector.selectTheme('default')}"/&gt;
>          * </code>
>          * 
>          * @param theme the name of the theme to be loaded
>          */
>         public void selectTheme(String theme) {
>             setTheme(theme);
>             select();
>         }	
>         :
>     }
> In fact, the current LocaleSelector somehow does support the auto-submit without any changes:
>     <h:form>     
>         <h:selectOneMenu
>                 value="#{localeSelector.localeString}"
>                 onchange="submit();"
>                 valueChangeListener="#{localeSelector.select}">
>             <f:selectItems value="#{localeSelector.supportedLocales}" />
>         </h:selectOneMenu>
>     </h:form>	
> However, I guess this works by accident; in fact org.jboss.seam.core.LocaleSelector#select() does not accept ValueChangeEvent as a parameter; so I don't know why the above works -- no guarantees for future releases of JavaServer Faces? So for LocaleSelector as well a method valueChanged(ValueChangeEvent event) could be added, just to be sure:
>     http://fisheye.labs.jboss.com/browse/JBoss/jboss-seam/src/main/org/jboss/seam/core/LocaleSelector.java?r=1.19#l38
>     public class LocaleSelector extends Selector
>     {
>         :
>         :
>         /**
>          * Sets the locale and forces it to load, useful for auto-submit dropdown
>          * lists using the JavaScript onchange event: <br>
>          * <code>
>          *   &lt;h:form&gt;
>          *     &lt;h:selectOneMenu
>          *         immediate="true"
>          *         value="#{localeSelector.localeString}"
>          *         onchange="submit();"
>          *         valueChangeListener="#{localeSelector.valueChanged}"&gt;
>          *       &lt;f:selectItems value="#{localeSelector.supportedLocales}" /&gt;
>          *     &lt;/h:selectOneMenu&gt;
>          *    &lt;/h:form&gt;
>          *  </code>
>          * 
>          * @param event
>          *            the JavaServer Faces ValueChangedEvent
>          */
>         public void valueChanged(ValueChangeEvent event) {
>             select();
>         }
>         :
>     }
> That's all...!
> Arjan.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list