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 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 }