[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>
> * <h:form>
> * <h:selectOneMenu
> * immediate="true"
> * value="#{themeSelector.theme}"
> * onchange="submit();"
> * valueChangeListener="#{themeSelector.valueChanged}">
> * <f:selectItems value="#{themeSelector.themes}" />
> * </h:selectOneMenu>
> * </h:form>
> * </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>
> * <h:commandLink value="#{messages['org.jboss.seam.theme.default']}"
> * action="#{themeSelector.selectTheme('default')}"/>
> * </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>
> * <h:form>
> * <h:selectOneMenu
> * immediate="true"
> * value="#{localeSelector.localeString}"
> * onchange="submit();"
> * valueChangeListener="#{localeSelector.valueChanged}">
> * <f:selectItems value="#{localeSelector.supportedLocales}" />
> * </h:selectOneMenu>
> * </h:form>
> * </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