View Javadoc

1   /*
2    * Copyright 2007 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 1.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl1.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krad.uif.control;
17  
18  import org.apache.commons.lang.StringUtils;
19  import org.kuali.rice.krad.uif.container.View;
20  import org.kuali.rice.krad.uif.core.Component;
21  import org.kuali.rice.krad.uif.field.AttributeField;
22  import org.kuali.rice.krad.uif.widget.DatePicker;
23  
24  import java.util.List;
25  
26  /**
27   * Represents a HTML Text control, generally rendered as a input field of type
28   * 'text'. This can display and receive a single value
29   * 
30   * @author Kuali Rice Team (rice.collab@kuali.org)
31   */
32  public class TextControl extends ControlBase {
33  	private static final long serialVersionUID = -8267606288443759880L;
34  
35  	private int size;
36      private Integer maxLength;
37      private Integer minLength;
38  
39  	private DatePicker datePicker;
40  	private String watermarkText = StringUtils.EMPTY;
41  	private boolean textExpand;
42  	
43  	public TextControl() {
44  		super();
45  	}
46  
47  	/**
48  	 * @see org.kuali.rice.krad.uif.core.ComponentBase#getNestedComponents()
49  	 */
50  	@Override
51  	public List<Component> getNestedComponents() {
52  		List<Component> components = super.getNestedComponents();
53  
54  		components.add(datePicker);
55  
56  		return components;
57  	}
58  
59      /**
60       * The following actions are performed:
61       *
62       * <ul>
63       * <li>Defaults maxLength, minLength (if not set) to maxLength of parent field</li>
64       * </ul>
65       *
66       * @see org.kuali.rice.krad.uif.core.ComponentBase#performFinalize(org.kuali.rice.krad.uif.container.View,
67       *      java.lang.Object, org.kuali.rice.krad.uif.core.Component)
68       */
69      @Override
70      public void performFinalize(View view, Object model, Component parent) {
71          super.performFinalize(view, model, parent);
72  
73          if (parent instanceof AttributeField) {
74              AttributeField field = (AttributeField) parent;
75              if (getMaxLength() == null) {
76                  setMaxLength(field.getMaxLength());
77              }
78  
79              if (getMinLength() == null) {
80                  setMinLength(field.getMinLength());
81              }
82          }
83      }
84  
85      /**
86  	 * Horizontal display size of the control (in number of characters)
87  	 * 
88  	 * @return int size
89  	 */
90  	public int getSize() {
91  		return this.size;
92  	}
93  
94      /**
95       * Setter for the horizontal display size
96       *
97       * @param size
98       */
99      public void setSize(int size) {
100         this.size = size;
101     }
102 
103     /**
104      * Maximum number of characters that can be inputted
105      *
106      * <p>If not set on control, max length of field will be used</p>
107      *
108      * @return int max number of characters
109      */
110     public Integer getMaxLength() {
111         return maxLength;
112     }
113 
114     /**
115      * Setter for the max number of input characters
116      *
117      * @param maxLength
118      */
119     public void setMaxLength(Integer maxLength) {
120         this.maxLength = maxLength;
121     }
122 
123     /**
124      * Minimum number of characters that can be inputted
125      *
126      * <p>If not set on control, min length of field will be used</p>
127      *
128      * @return int max number of characters
129      */
130     public Integer getMinLength() {
131         return minLength;
132     }
133 
134     /**
135      * Setter for the min number of input characters
136      *
137      * @param maxLength
138      */
139     public void setMinLength(Integer minLength) {
140         this.minLength = minLength;
141     }
142 
143     /**
144 	 * Renders a calendar that can be used to select a date value for the text
145 	 * control. The <code>Calendar</code> instance contains configuration such
146 	 * as the date format string
147 	 * 
148 	 * @return Calendar
149 	 */
150 	public DatePicker getDatePicker() {
151 		return this.datePicker;
152 	}
153 
154 	public void setDatePicker(DatePicker datePicker) {
155 		this.datePicker = datePicker;
156 	}
157 
158 	/**
159 	 * @return the watermarkText
160 	 */
161 	public String getWatermarkText() {
162 		return this.watermarkText;
163 	}
164 
165 	/**
166 	 * @param watermarkText the watermarkText to set
167 	 */
168 	public void setWatermarkText(String watermarkText) {
169 		//to avoid users from putting in the same value as the watermark adding some spaces here
170 		//see watermark troubleshooting for more info
171 		if (StringUtils.isNotEmpty(watermarkText)) {
172 			watermarkText = watermarkText + "   ";
173 		}
174 		this.watermarkText = watermarkText;
175 	}
176 
177     /**
178      * If set to true, this control will have a button which can be clicked to expand the text area through
179      * a popup window so the user has more space to type and see the data they are entering in this text field
180      *
181      * @return the textExpand
182      */
183     public boolean isTextExpand() {
184         return this.textExpand;
185     }
186 
187     /**
188      * @param textExpand the textExpand to set
189      */
190     public void setTextExpand(boolean textExpand) {
191         this.textExpand = textExpand;
192     }
193 	
194 	
195 }