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 }