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 org.rcfaces.core.component.PagerComponent;
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 PagerTag extends AbstractBasicTag implements Tag {
17
18
19 private static final Log LOG=LogFactory.getLog(PagerTag.class);
20
21 private ValueExpression forValue;
22 private ValueExpression manyResultsMessage;
23 private ValueExpression message;
24 private ValueExpression oneResultMessage;
25 private ValueExpression zeroResultMessage;
26 private ValueExpression noPagedMessage;
27 public String getComponentType() {
28 return PagerComponent.COMPONENT_TYPE;
29 }
30
31 public final void setFor(ValueExpression forValue) {
32 this.forValue = forValue;
33 }
34
35 public final void setManyResultsMessage(ValueExpression manyResultsMessage) {
36 this.manyResultsMessage = manyResultsMessage;
37 }
38
39 public final void setMessage(ValueExpression message) {
40 this.message = message;
41 }
42
43 public final void setOneResultMessage(ValueExpression oneResultMessage) {
44 this.oneResultMessage = oneResultMessage;
45 }
46
47 public final void setZeroResultMessage(ValueExpression zeroResultMessage) {
48 this.zeroResultMessage = zeroResultMessage;
49 }
50
51 public final void setNoPagedMessage(ValueExpression noPagedMessage) {
52 this.noPagedMessage = noPagedMessage;
53 }
54
55 protected void setProperties(UIComponent uiComponent) {
56 if (LOG.isDebugEnabled()) {
57 if (PagerComponent.COMPONENT_TYPE==getComponentType()) {
58 LOG.debug("Component id='"+getId()+"' type='"+getComponentType()+"'.");
59 }
60 LOG.debug(" forValue='"+forValue+"'");
61 LOG.debug(" manyResultsMessage='"+manyResultsMessage+"'");
62 LOG.debug(" message='"+message+"'");
63 LOG.debug(" oneResultMessage='"+oneResultMessage+"'");
64 LOG.debug(" zeroResultMessage='"+zeroResultMessage+"'");
65 LOG.debug(" noPagedMessage='"+noPagedMessage+"'");
66 }
67 if ((uiComponent instanceof PagerComponent)==false) {
68 if (uiComponent instanceof UIViewRoot) {
69 throw new IllegalStateException("The first component of the page must be a UIViewRoot component !");
70 }
71 throw new IllegalStateException("Component specified by tag is not instanceof of 'PagerComponent'.");
72 }
73
74 super.setProperties(uiComponent);
75
76 PagerComponent component = (PagerComponent) uiComponent;
77 FacesContext facesContext = getFacesContext();
78
79 if (forValue != null) {
80 if (forValue.isLiteralText()==false) {
81 component.setValueExpression(Properties.FOR, forValue);
82
83 } else {
84 component.setFor(forValue.getExpressionString());
85 }
86 }
87
88 if (manyResultsMessage != null) {
89 if (manyResultsMessage.isLiteralText()==false) {
90 component.setValueExpression(Properties.MANY_RESULTS_MESSAGE, manyResultsMessage);
91
92 } else {
93 component.setManyResultsMessage(manyResultsMessage.getExpressionString());
94 }
95 }
96
97 if (message != null) {
98 if (message.isLiteralText()==false) {
99 component.setValueExpression(Properties.MESSAGE, message);
100
101 } else {
102 component.setMessage(message.getExpressionString());
103 }
104 }
105
106 if (oneResultMessage != null) {
107 if (oneResultMessage.isLiteralText()==false) {
108 component.setValueExpression(Properties.ONE_RESULT_MESSAGE, oneResultMessage);
109
110 } else {
111 component.setOneResultMessage(oneResultMessage.getExpressionString());
112 }
113 }
114
115 if (zeroResultMessage != null) {
116 if (zeroResultMessage.isLiteralText()==false) {
117 component.setValueExpression(Properties.ZERO_RESULT_MESSAGE, zeroResultMessage);
118
119 } else {
120 component.setZeroResultMessage(zeroResultMessage.getExpressionString());
121 }
122 }
123
124 if (noPagedMessage != null) {
125 if (noPagedMessage.isLiteralText()==false) {
126 component.setValueExpression(Properties.NO_PAGED_MESSAGE, noPagedMessage);
127
128 } else {
129 component.setNoPagedMessage(noPagedMessage.getExpressionString());
130 }
131 }
132 }
133
134 public void release() {
135 forValue = null;
136 manyResultsMessage = null;
137 message = null;
138 oneResultMessage = null;
139 zeroResultMessage = null;
140 noPagedMessage = null;
141
142 super.release();
143 }
144
145 }