001: /*
002: * Copyright 2005 jWic group (http://www.jwic.de)
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: *
016: * de.jwic.controls.DateInputBoxControl
017: * $Id: DateInputBoxControl.java,v 1.3 2006/03/23 11:24:19 lordsam Exp $
018: */
019: package de.jwic.controls;
020:
021: import java.text.DateFormat;
022: import java.text.ParseException;
023: import java.text.SimpleDateFormat;
024: import java.util.Date;
025:
026: import de.jwic.base.IControlContainer;
027:
028: /**
029: * DateInputBoxControl displays a InputBoxContol with an date picker link.
030: *
031: * $Id: DateInputBoxControl.java,v 1.3 2006/03/23 11:24:19 lordsam Exp $
032: * @version $Revision: 1.3 $
033: * @author JBornemann
034: */
035: public class DateInputBoxControl extends InputBoxControl {
036:
037: private static final long serialVersionUID = 1L;
038:
039: protected String cssClassBorder = null;
040:
041: /**
042: * @param container
043: */
044: public DateInputBoxControl(IControlContainer container) {
045: super (container);
046: initialize();
047: }
048:
049: /**
050: * @param container
051: * @param name
052: */
053: public DateInputBoxControl(IControlContainer container, String name) {
054: super (container, name);
055: initialize();
056: }
057:
058: /**
059: * DateInputBoxControl constructor.
060: */
061: private void initialize() {
062: // new default width
063: width = 80;
064: // new default maxLength
065: maxLength = 10;
066: }
067:
068: /**
069: * @return Returns the cssClassBorder.
070: */
071: public String getCssClassBorder() {
072: return cssClassBorder;
073: }
074:
075: /**
076: * @param cssClassBorder The cssClassBorder to set.
077: */
078: public void setCssClassBorder(String cssClassBorder) {
079: this .cssClassBorder = cssClassBorder;
080: }
081:
082: /**
083: * @return Returns the DateFormat used by this control for formating and parsing.
084: */
085: protected DateFormat getDateFormat() {
086: String pattern = getDatePattern();
087: SimpleDateFormat format = pattern != null ? new SimpleDateFormat(
088: pattern)
089: : new SimpleDateFormat();
090: return format;
091: }
092:
093: /**
094: * Returns the pattern used for the DateFormat.
095: * "dd.MM.yyyy" for DE or "MM/dd/yyyy" for EN.
096: * @return
097: */
098: public String getDatePattern() {
099: String lang_id = getSessionContext().getLocale().getLanguage()
100: .toUpperCase();
101: if (lang_id.equals("DE")) {
102: return "dd.MM.yyyy";
103: } else if (lang_id.equals("EN")) {
104: return "MM/dd/yyyy";
105: }
106: return null;
107: }
108:
109: /**
110: * @return Returns the date.
111: */
112: public Date getDate() {
113: DateFormat format = getDateFormat();
114: try {
115: return format.parse(getText());
116: } catch (ParseException pe) {
117: return null;
118: }
119: }
120:
121: /**
122: * Returns true if the value entered by the user is a
123: * valid date or if the field is empty.
124: * @return
125: */
126: public boolean isValid() {
127:
128: // an empty field is valid!
129: if (getText().length() == 0) {
130: return true;
131: }
132:
133: DateFormat format = getDateFormat();
134: try {
135: format.parse(getText());
136: } catch (ParseException pe) {
137: return false;
138: }
139: return true;
140: }
141:
142: /**
143: * @param date The date to set.
144: */
145: public void setDate(Date date) {
146: DateFormat format = getDateFormat();
147: setText(date == null ? "" : format.format(date));
148: }
149:
150: }
|