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 javax.el.ValueExpression;
7   import javax.faces.component.UIViewRoot;
8   import org.apache.commons.logging.Log;
9   import javax.servlet.jsp.tagext.Tag;
10  import org.apache.commons.logging.LogFactory;
11  import org.rcfaces.core.component.MessagesComponent;
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 MessagesTag extends AbstractMessagesTag implements Tag {
17  
18  
19  	private static final Log LOG=LogFactory.getLog(MessagesTag.class);
20  
21  	private ValueExpression errorStyleClass;
22  	private ValueExpression fatalStyleClass;
23  	private ValueExpression infoStyleClass;
24  	private ValueExpression warnStyleClass;
25  	private ValueExpression showIfMessage;
26  	private ValueExpression showActiveComponentMessage;
27  	private ValueExpression maxCount;
28  	public String getComponentType() {
29  		return MessagesComponent.COMPONENT_TYPE;
30  	}
31  
32  	public final void setErrorStyleClass(ValueExpression errorStyleClass) {
33  		this.errorStyleClass = errorStyleClass;
34  	}
35  
36  	public final void setFatalStyleClass(ValueExpression fatalStyleClass) {
37  		this.fatalStyleClass = fatalStyleClass;
38  	}
39  
40  	public final void setInfoStyleClass(ValueExpression infoStyleClass) {
41  		this.infoStyleClass = infoStyleClass;
42  	}
43  
44  	public final void setWarnStyleClass(ValueExpression warnStyleClass) {
45  		this.warnStyleClass = warnStyleClass;
46  	}
47  
48  	public final void setShowIfMessage(ValueExpression showIfMessage) {
49  		this.showIfMessage = showIfMessage;
50  	}
51  
52  	public final void setShowActiveComponentMessage(ValueExpression showActiveComponentMessage) {
53  		this.showActiveComponentMessage = showActiveComponentMessage;
54  	}
55  
56  	public final void setMaxCount(ValueExpression maxCount) {
57  		this.maxCount = maxCount;
58  	}
59  
60  	protected void setProperties(UIComponent uiComponent) {
61  		if (LOG.isDebugEnabled()) {
62  			if (MessagesComponent.COMPONENT_TYPE==getComponentType()) {
63  				LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
64  			}
65  			LOG.debug("  errorStyleClass='"+errorStyleClass+"'");
66  			LOG.debug("  fatalStyleClass='"+fatalStyleClass+"'");
67  			LOG.debug("  infoStyleClass='"+infoStyleClass+"'");
68  			LOG.debug("  warnStyleClass='"+warnStyleClass+"'");
69  			LOG.debug("  showIfMessage='"+showIfMessage+"'");
70  			LOG.debug("  showActiveComponentMessage='"+showActiveComponentMessage+"'");
71  			LOG.debug("  maxCount='"+maxCount+"'");
72  		}
73  		if ((uiComponent instanceof MessagesComponent)==false) {
74  			if (uiComponent instanceof UIViewRoot) {
75  				throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
76  			}
77  			throw new IllegalStateException("Component specified by tag is not instanceof of 'MessagesComponent'.");
78  		}
79  
80  		super.setProperties(uiComponent);
81  
82  		MessagesComponent component = (MessagesComponent) uiComponent;
83  		FacesContext facesContext = getFacesContext();
84  
85  		if (errorStyleClass != null) {
86  			if (errorStyleClass.isLiteralText()==false) {
87  				component.setValueExpression(Properties.ERROR_STYLE_CLASS, errorStyleClass);
88  
89  			} else {
90  				component.setErrorStyleClass(errorStyleClass.getExpressionString());
91  			}
92  		}
93  
94  		if (fatalStyleClass != null) {
95  			if (fatalStyleClass.isLiteralText()==false) {
96  				component.setValueExpression(Properties.FATAL_STYLE_CLASS, fatalStyleClass);
97  
98  			} else {
99  				component.setFatalStyleClass(fatalStyleClass.getExpressionString());
100 			}
101 		}
102 
103 		if (infoStyleClass != null) {
104 			if (infoStyleClass.isLiteralText()==false) {
105 				component.setValueExpression(Properties.INFO_STYLE_CLASS, infoStyleClass);
106 
107 			} else {
108 				component.setInfoStyleClass(infoStyleClass.getExpressionString());
109 			}
110 		}
111 
112 		if (warnStyleClass != null) {
113 			if (warnStyleClass.isLiteralText()==false) {
114 				component.setValueExpression(Properties.WARN_STYLE_CLASS, warnStyleClass);
115 
116 			} else {
117 				component.setWarnStyleClass(warnStyleClass.getExpressionString());
118 			}
119 		}
120 
121 		if (showIfMessage != null) {
122 			if (showIfMessage.isLiteralText()==false) {
123 				component.setValueExpression(Properties.SHOW_IF_MESSAGE, showIfMessage);
124 
125 			} else {
126 				component.setShowIfMessage(getBool(showIfMessage.getExpressionString()));
127 			}
128 		}
129 
130 		if (showActiveComponentMessage != null) {
131 			if (showActiveComponentMessage.isLiteralText()==false) {
132 				component.setValueExpression(Properties.SHOW_ACTIVE_COMPONENT_MESSAGE, showActiveComponentMessage);
133 
134 			} else {
135 				component.setShowActiveComponentMessage(getBool(showActiveComponentMessage.getExpressionString()));
136 			}
137 		}
138 
139 		if (maxCount != null) {
140 			if (maxCount.isLiteralText()==false) {
141 				component.setValueExpression(Properties.MAX_COUNT, maxCount);
142 
143 			} else {
144 				component.setMaxCount(getInt(maxCount.getExpressionString()));
145 			}
146 		}
147 	}
148 
149 	public void release() {
150 		errorStyleClass = null;
151 		fatalStyleClass = null;
152 		infoStyleClass = null;
153 		warnStyleClass = null;
154 		showIfMessage = null;
155 		showActiveComponentMessage = null;
156 		maxCount = null;
157 
158 		super.release();
159 	}
160 
161 }