Commit e9836c4e879ce7f45d5e83cb1b2eade07ce1c587
1 parent
972d686a
Added "for" and "suffix" attributes to watermark component.
Showing
3 changed files
with
63 additions
and
3 deletions
| ... | ... | @@ -8,7 +8,12 @@ | 
| 8 | 8 | <classname>org.richfaces.component.html.HtmlWatermark</classname> | 
| 9 | 9 | <superclass>org.richfaces.component.UIWatermark</superclass> | 
| 10 | 10 | <description> | 
| 11 | - <![CDATA[]]> | |
| 11 | + <![CDATA[ | |
| 12 | + Adds watermark capability to HTML input and textarea elements. | |
| 13 | + A watermark typically appears as light gray text within an input or textarea element whenever | |
| 14 | + the element is empty and does not have focus. This provides a hint to the user as to what | |
| 15 | + the input or textarea element is used for, or the type of input that is required. | |
| 16 | + ]]> | |
| 12 | 17 | </description> | 
| 13 | 18 | <renderer generate="true" override="true"> | 
| 14 | 19 | <name>org.richfaces.component.renderkit.html.WatermarkRenderer</name> | 
| ... | ... | @@ -33,5 +38,30 @@ | 
| 33 | 38 | attribute. | 
| 34 | 39 | </description> | 
| 35 | 40 | </property> | 
| 41 | + <property> | |
| 42 | + <name>suffix</name> | |
| 43 | + <classname>java.lang.String</classname> | |
| 44 | + <description> | |
| 45 | + Use this if watermark should be attached to element with id different then component id. | |
| 46 | + i.e.: rich:comboBox with id="combo" nested in form with id="f" renders input with | |
| 47 | + clientId="f:combocomboboxField" | |
| 48 | + So in order to attach watermark to that element provide suffix="comboboxField". | |
| 49 | + </description> | |
| 50 | + </property> | |
| 51 | + <property> | |
| 52 | + <name>for</name> | |
| 53 | + <classname>java.lang.String</classname> | |
| 54 | + <description> | |
| 55 | + Use this if watermark cannot be nested within come components i.e. in calendar. | |
| 56 | + | |
| 57 | + Example 1: rich:calendar with id="c" nested in form with id="f" renders input with | |
| 58 | + clientId="f:cInputDate". | |
| 59 | + rich:calendar also gets messed up if watermark is nested within, so place it outside of calendar. | |
| 60 | + So in order to attach watermark to that element provide for="c" suffix="InputDate". | |
| 61 | + | |
| 62 | + Example 2: watermark should be attached to pure html input (not jsf component) with id="htmlInput". | |
| 63 | + To achieve this provide for="htmlInput". | |
| 64 | + </description> | |
| 65 | + </property> | |
| 36 | 66 | </component> | 
| 37 | 67 | </components> | ... | ... | 
| ... | ... | @@ -3,12 +3,23 @@ package org.richfaces.component; | 
| 3 | 3 | import javax.faces.component.UIOutput; | 
| 4 | 4 | |
| 5 | 5 | public abstract class UIWatermark extends UIOutput { | 
| 6 | +// ------------------------------ FIELDS ------------------------------ | |
| 6 | 7 | |
| 7 | - public static final String COMPONENT_TYPE = "org.richfaces.Watermark"; | |
| 8 | 8 | public static final String COMPONENT_FAMILY = "org.richfaces.Watermark"; | 
| 9 | 9 | |
| 10 | + public static final String COMPONENT_TYPE = "org.richfaces.Watermark"; | |
| 11 | + | |
| 12 | +// -------------------------- OTHER METHODS -------------------------- | |
| 13 | + | |
| 14 | + public abstract String getFor(); | |
| 15 | + | |
| 10 | 16 | public abstract String getStyleClass(); | 
| 11 | 17 | |
| 18 | + public abstract String getSuffix(); | |
| 19 | + | |
| 20 | + public abstract void setFor(String _for); | |
| 21 | + | |
| 12 | 22 | public abstract void setStyleClass(String styleClass); | 
| 13 | 23 | |
| 24 | + public abstract void setSuffix(String suffix); | |
| 14 | 25 | } | ... | ... | 
| ... | ... | @@ -19,7 +19,26 @@ | 
| 19 | 19 | |
| 20 | 20 | <jsp:scriptlet> | 
| 21 | 21 | <![CDATA[ | 
| 22 | - String target = getUtils().clientId(context,component.getParent()); | |
| 22 | + String sid = (String) component.getAttributes().get("for"); | |
| 23 | + String target; | |
| 24 | + if (sid != null && ! "".equals(sid)) { | |
| 25 | + try { | |
| 26 | + UIComponent forcomp = getUtils().findComponentFor((UIComponent)component,sid); | |
| 27 | + if (forcomp != null) { | |
| 28 | + target = forcomp.getClientId(context); | |
| 29 | + } else { | |
| 30 | + target = sid; | |
| 31 | + } | |
| 32 | + }catch(IllegalArgumentException e) { | |
| 33 | + target = sid; | |
| 34 | + } | |
| 35 | + } else { | |
| 36 | + target = component.getParent().getClientId(context); | |
| 37 | + } | |
| 38 | + String suffix = component.getSuffix(); | |
| 39 | + if(suffix != null && !"".equals(suffix)) { | |
| 40 | + target += suffix; | |
| 41 | + } | |
| 23 | 42 | variables.setVariable("for",target); | 
| 24 | 43 | ]]> | 
| 25 | 44 | </jsp:scriptlet> | ... | ... | 
Please
register
or
login
to post a comment