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,7 +8,12 @@ | ||
| 8 | <classname>org.richfaces.component.html.HtmlWatermark</classname> | 8 | <classname>org.richfaces.component.html.HtmlWatermark</classname> | 
| 9 | <superclass>org.richfaces.component.UIWatermark</superclass> | 9 | <superclass>org.richfaces.component.UIWatermark</superclass> | 
| 10 | <description> | 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 | </description> | 17 | </description> | 
| 13 | <renderer generate="true" override="true"> | 18 | <renderer generate="true" override="true"> | 
| 14 | <name>org.richfaces.component.renderkit.html.WatermarkRenderer</name> | 19 | <name>org.richfaces.component.renderkit.html.WatermarkRenderer</name> | 
| @@ -33,5 +38,30 @@ | @@ -33,5 +38,30 @@ | ||
| 33 | attribute. | 38 | attribute. | 
| 34 | </description> | 39 | </description> | 
| 35 | </property> | 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 | </component> | 66 | </component> | 
| 37 | </components> | 67 | </components> | 
| @@ -3,12 +3,23 @@ package org.richfaces.component; | @@ -3,12 +3,23 @@ package org.richfaces.component; | ||
| 3 | import javax.faces.component.UIOutput; | 3 | import javax.faces.component.UIOutput; | 
| 4 | 4 | ||
| 5 | public abstract class UIWatermark extends UIOutput { | 5 | public abstract class UIWatermark extends UIOutput { | 
| 6 | +// ------------------------------ FIELDS ------------------------------ | ||
| 6 | 7 | ||
| 7 | - public static final String COMPONENT_TYPE = "org.richfaces.Watermark"; | ||
| 8 | public static final String COMPONENT_FAMILY = "org.richfaces.Watermark"; | 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 | public abstract String getStyleClass(); | 16 | public abstract String getStyleClass(); | 
| 11 | 17 | ||
| 18 | + public abstract String getSuffix(); | ||
| 19 | + | ||
| 20 | + public abstract void setFor(String _for); | ||
| 21 | + | ||
| 12 | public abstract void setStyleClass(String styleClass); | 22 | public abstract void setStyleClass(String styleClass); | 
| 13 | 23 | ||
| 24 | + public abstract void setSuffix(String suffix); | ||
| 14 | } | 25 | } | 
| @@ -19,7 +19,26 @@ | @@ -19,7 +19,26 @@ | ||
| 19 | 19 | ||
| 20 | <jsp:scriptlet> | 20 | <jsp:scriptlet> | 
| 21 | <![CDATA[ | 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 | variables.setVariable("for",target); | 42 | variables.setVariable("for",target); | 
| 24 | ]]> | 43 | ]]> | 
| 25 | </jsp:scriptlet> | 44 | </jsp:scriptlet> | 
Please
register
or
login
to post a comment