View Javadoc

1   package org.rcfaces.core.internal.taglib;
2   
3   import javax.faces.application.Application;
4   import javax.faces.component.UIComponent;
5   import org.rcfaces.core.internal.component.Properties;
6   import org.rcfaces.core.component.TextEditorComponent;
7   import javax.el.ValueExpression;
8   import javax.faces.component.UIViewRoot;
9   import org.apache.commons.logging.Log;
10  import javax.servlet.jsp.tagext.Tag;
11  import org.apache.commons.logging.LogFactory;
12  import org.rcfaces.core.internal.tools.ListenersTools1_2;
13  import org.rcfaces.core.internal.tools.ListenersTools;
14  import javax.faces.context.FacesContext;
15  
16  public class TextEditorTag extends AbstractInputTag implements Tag {
17  
18  
19  	private static final Log LOG=LogFactory.getLog(TextEditorTag.class);
20  
21  	private ValueExpression required;
22  	private ValueExpression text;
23  	private ValueExpression textDirection;
24  	private ValueExpression emptyMessage;
25  	private ValueExpression readOnly;
26  	private ValueExpression valueChangeListeners;
27  	private ValueExpression focusStyleClass;
28  	private ValueExpression errorStyleClass;
29  	private ValueExpression fatalStyleClass;
30  	private ValueExpression infoStyleClass;
31  	private ValueExpression warnStyleClass;
32  	private ValueExpression selectionListeners;
33  	private ValueExpression alternateText;
34  	private ValueExpression valueMimeType;
35  	private ValueExpression actionListeners;
36  	private ValueExpression action;
37  	public String getComponentType() {
38  		return TextEditorComponent.COMPONENT_TYPE;
39  	}
40  
41  	public final void setRequired(ValueExpression required) {
42  		this.required = required;
43  	}
44  
45  	public final void setText(ValueExpression text) {
46  		this.text = text;
47  	}
48  
49  	public final void setTextDirection(ValueExpression textDirection) {
50  		this.textDirection = textDirection;
51  	}
52  
53  	public final void setEmptyMessage(ValueExpression emptyMessage) {
54  		this.emptyMessage = emptyMessage;
55  	}
56  
57  	public final void setReadOnly(ValueExpression readOnly) {
58  		this.readOnly = readOnly;
59  	}
60  
61  	public final void setValueChangeListener(ValueExpression valueChangeListeners) {
62  		this.valueChangeListeners = valueChangeListeners;
63  	}
64  
65  	public final void setFocusStyleClass(ValueExpression focusStyleClass) {
66  		this.focusStyleClass = focusStyleClass;
67  	}
68  
69  	public final void setErrorStyleClass(ValueExpression errorStyleClass) {
70  		this.errorStyleClass = errorStyleClass;
71  	}
72  
73  	public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
74  		this.fatalStyleClass = fatalStyleClass;
75  	}
76  
77  	public final void setInfoStyleClass(ValueExpression infoStyleClass) {
78  		this.infoStyleClass = infoStyleClass;
79  	}
80  
81  	public final void setWarnStyleClass(ValueExpression warnStyleClass) {
82  		this.warnStyleClass = warnStyleClass;
83  	}
84  
85  	public final void setSelectionListener(ValueExpression selectionListeners) {
86  		this.selectionListeners = selectionListeners;
87  	}
88  
89  	public final void setAlternateText(ValueExpression alternateText) {
90  		this.alternateText = alternateText;
91  	}
92  
93  	public final void setValueMimeType(ValueExpression valueMimeType) {
94  		this.valueMimeType = valueMimeType;
95  	}
96  
97  	public final void setAction(ValueExpression action) {
98  		this.action=action;
99  	}
100 
101 	public final void setActionListener(ValueExpression listeners) {
102 		this.actionListeners = listeners;
103 	}
104 
105 	protected void setProperties(UIComponent uiComponent) {
106 		if (LOG.isDebugEnabled()) {
107 			if (TextEditorComponent.COMPONENT_TYPE==getComponentType()) {
108 				LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
109 			}
110 			LOG.debug("  required='"+required+"'");
111 			LOG.debug("  text='"+text+"'");
112 			LOG.debug("  textDirection='"+textDirection+"'");
113 			LOG.debug("  emptyMessage='"+emptyMessage+"'");
114 			LOG.debug("  readOnly='"+readOnly+"'");
115 			LOG.debug("  focusStyleClass='"+focusStyleClass+"'");
116 			LOG.debug("  errorStyleClass='"+errorStyleClass+"'");
117 			LOG.debug("  fatalStyleClass='"+fatalStyleClass+"'");
118 			LOG.debug("  infoStyleClass='"+infoStyleClass+"'");
119 			LOG.debug("  warnStyleClass='"+warnStyleClass+"'");
120 			LOG.debug("  alternateText='"+alternateText+"'");
121 			LOG.debug("  valueMimeType='"+valueMimeType+"'");
122 			LOG.debug("  action='"+action+"'");
123 			LOG.debug("  actionListeners='"+actionListeners+"'");
124 		}
125 		if ((uiComponent instanceof TextEditorComponent)==false) {
126 			if (uiComponent instanceof UIViewRoot) {
127 				throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
128 			}
129 			throw new IllegalStateException("Component specified by tag is not instanceof of 'TextEditorComponent'.");
130 		}
131 
132 		super.setProperties(uiComponent);
133 
134 		TextEditorComponent component = (TextEditorComponent) uiComponent;
135 		FacesContext facesContext = getFacesContext();
136 
137 		if (required != null) {
138 			if (required.isLiteralText()==false) {
139 				component.setValueExpression(Properties.REQUIRED, required);
140 
141 			} else {
142 				component.setRequired(getBool(required.getExpressionString()));
143 			}
144 		}
145 
146 		if (text != null) {
147 			if (text.isLiteralText()==false) {
148 				component.setValueExpression(Properties.TEXT, text);
149 
150 			} else {
151 				component.setText(text.getExpressionString());
152 			}
153 		}
154 
155 		if (textDirection != null) {
156 			if (textDirection.isLiteralText()==false) {
157 				component.setValueExpression(Properties.TEXT_DIRECTION, textDirection);
158 
159 			} else {
160 				component.setTextDirection(getInt(textDirection.getExpressionString()));
161 			}
162 		}
163 
164 		if (emptyMessage != null) {
165 			if (emptyMessage.isLiteralText()==false) {
166 				component.setValueExpression(Properties.EMPTY_MESSAGE, emptyMessage);
167 
168 			} else {
169 				component.setEmptyMessage(emptyMessage.getExpressionString());
170 			}
171 		}
172 
173 		if (readOnly != null) {
174 			if (readOnly.isLiteralText()==false) {
175 				component.setValueExpression(Properties.READ_ONLY, readOnly);
176 
177 			} else {
178 				component.setReadOnly(getBool(readOnly.getExpressionString()));
179 			}
180 		}
181 
182 		if (valueChangeListeners != null) {
183 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.VALUE_CHANGE_LISTENER_TYPE, valueChangeListeners);
184 		}
185 
186 		if (focusStyleClass != null) {
187 			if (focusStyleClass.isLiteralText()==false) {
188 				component.setValueExpression(Properties.FOCUS_STYLE_CLASS, focusStyleClass);
189 
190 			} else {
191 				component.setFocusStyleClass(focusStyleClass.getExpressionString());
192 			}
193 		}
194 
195 		if (errorStyleClass != null) {
196 			if (errorStyleClass.isLiteralText()==false) {
197 				component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
198 
199 			} else {
200 				component.setErrorStyleClass(errorStyleClass.getExpressionString());
201 			}
202 		}
203 
204 		if (fatalStyleClass != null) {
205 			if (fatalStyleClass.isLiteralText()==false) {
206 				component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
207 
208 			} else {
209 				component.setFatalStyleClass(fatalStyleClass.getExpressionString());
210 			}
211 		}
212 
213 		if (infoStyleClass != null) {
214 			if (infoStyleClass.isLiteralText()==false) {
215 				component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
216 
217 			} else {
218 				component.setInfoStyleClass(infoStyleClass.getExpressionString());
219 			}
220 		}
221 
222 		if (warnStyleClass != null) {
223 			if (warnStyleClass.isLiteralText()==false) {
224 				component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
225 
226 			} else {
227 				component.setWarnStyleClass(warnStyleClass.getExpressionString());
228 			}
229 		}
230 
231 		if (selectionListeners != null) {
232 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, selectionListeners);
233 		}
234 
235 		if (alternateText != null) {
236 			if (alternateText.isLiteralText()==false) {
237 				component.setValueExpression(Properties.ALTERNATE_TEXT, alternateText);
238 
239 			} else {
240 				component.setAlternateText(alternateText.getExpressionString());
241 			}
242 		}
243 
244 		if (valueMimeType != null) {
245 			if (valueMimeType.isLiteralText()==false) {
246 				component.setValueExpression(Properties.VALUE_MIME_TYPE, valueMimeType);
247 
248 			} else {
249 				component.setValueMimeType(valueMimeType.getExpressionString());
250 			}
251 		}
252 
253 		if (action != null) {
254 			ListenersTools1_2.parseAction(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, action);
255 		}
256 
257 		if (actionListeners != null) {
258 			ListenersTools1_2.parseListener(facesContext, component, ListenersTools.SELECTION_LISTENER_TYPE, actionListeners, true);
259 		}
260 	}
261 
262 	public void release() {
263 		required = null;
264 		text = null;
265 		textDirection = null;
266 		emptyMessage = null;
267 		readOnly = null;
268 		valueChangeListeners = null;
269 		focusStyleClass = null;
270 		errorStyleClass = null;
271 		fatalStyleClass = null;
272 		infoStyleClass = null;
273 		warnStyleClass = null;
274 		selectionListeners = null;
275 		alternateText = null;
276 		valueMimeType = null;
277 		action = null;
278 		actionListeners = null;
279 
280 		super.release();
281 	}
282 
283 }