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