KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openharmonise > swing > ClearableDateSelector


1 /*
2  * The contents of this file are subject to the
3  * Mozilla Public License Version 1.1 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at http://www.mozilla.org/MPL/
6  *
7  * Software distributed under the License is distributed on an "AS IS"
8  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
9  * See the License for the specific language governing rights and
10  * limitations under the License.
11  *
12  * The Initial Developer of the Original Code is Simulacra Media Ltd.
13  * Portions created by Simulacra Media Ltd are Copyright (C) Simulacra Media Ltd, 2004.
14  *
15  * All Rights Reserved.
16  *
17  * Contributor(s):
18  */

19 package org.openharmonise.swing;
20
21 import java.awt.*;
22 import java.awt.event.*;
23 import java.util.*;
24
25 import javax.swing.*;
26 import javax.swing.event.*;
27
28 /**
29  *
30  * @author Michael Bell
31  * @version $Revision: 1.1 $
32  *
33  */

34 public class ClearableDateSelector extends JSpinner implements ChangeListener, Runnable JavaDoc, KeyListener {
35
36     private Date m_dtTempVal;
37
38     private String JavaDoc m_sFormat = null;
39
40     private boolean m_bCleared = false;
41     
42     private boolean m_bIgnoreChanges = false;
43
44     /**
45      *
46      */

47     public ClearableDateSelector(Date initDate, Date minDate, Date maxDate, String JavaDoc sFormat) {
48         super();
49         if(minDate!=null && initDate.getTime()<minDate.getTime()) {
50             initDate = minDate;
51         }
52
53         if(maxDate!=null && initDate.getTime()>maxDate.getTime()) {
54             initDate = maxDate;
55         }
56         
57         m_sFormat = sFormat;
58         
59         //can't pass null to spinner date model as init date
60
if(initDate == null) {
61             m_bCleared = true;
62             initDate = new Date();
63         }
64
65         SpinnerModel dateModel = new SpinnerDateModel(initDate,minDate,maxDate,Calendar.YEAR);
66
67         setModel(dateModel);
68         
69         JSpinner.DateEditor editor = new JSpinner.DateEditor(this,m_sFormat);
70         
71         editor.getTextField().addKeyListener(this);
72         
73         setEditor(editor);
74         
75         if(m_bCleared == true) {
76             setCleared(true);
77         }
78         
79         this.addChangeListener(this);
80     }
81     
82     public void setCleared(boolean bCleared) {
83         if(bCleared) {
84             this.m_bCleared = true;
85             
86             ((JSpinner.DefaultEditor)getEditor()).getTextField().setForeground(Color.WHITE);
87             ((JSpinner.DefaultEditor)getEditor()).getTextField().setSelectedTextColor(Color.WHITE);
88             ((JSpinner.DefaultEditor)getEditor()).getTextField().setSelectionColor(Color.WHITE);
89             
90         } else {
91             this.m_bCleared = false;
92             
93             ((JSpinner.DefaultEditor)getEditor()).getTextField().setForeground(Color.BLACK);
94             ((JSpinner.DefaultEditor)getEditor()).getTextField().setSelectedTextColor(Color.WHITE);
95             ((JSpinner.DefaultEditor)getEditor()).getTextField().setSelectionColor(Color.BLUE);
96         }
97         SwingUtilities.invokeLater(this);
98     }
99     
100     public boolean isCleared() {
101         return m_bCleared;
102     }
103
104     /* (non-Javadoc)
105      * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
106      */

107     public void stateChanged(ChangeEvent e) {
108         if(m_bCleared == true && m_bIgnoreChanges == false) {
109             setCleared(false);
110         }
111     }
112
113     /* (non-Javadoc)
114      * @see java.lang.Runnable#run()
115      */

116     public void run() {
117         this.revalidate();
118         this.repaint();
119         
120     }
121
122     /* (non-Javadoc)
123      * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
124      */

125     public void keyPressed(KeyEvent e) {
126         m_bIgnoreChanges = true;
127         if(e.getKeyCode() == KeyEvent.VK_DELETE) {
128     
129         }
130         
131     }
132
133     /* (non-Javadoc)
134      * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
135      */

136     public void keyReleased(KeyEvent e) {
137         if(e.getKeyCode() == KeyEvent.VK_DELETE) {
138             
139             ((JSpinner.DefaultEditor)getEditor()).getTextField().setValue(new Date());
140
141             setCleared(true);
142         }
143         
144     }
145
146     /* (non-Javadoc)
147      * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
148      */

149     public void keyTyped(KeyEvent e) {
150         m_bIgnoreChanges = false;
151     }
152
153 }
154
Popular Tags