KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openharmonise > him > metadata > range > swing > range > details > DateDetails


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.him.metadata.range.swing.range.details;
20
21 import java.awt.*;
22 import java.awt.event.*;
23 import java.text.*;
24
25 import javax.swing.*;
26
27 import org.openharmonise.him.metadata.range.swing.range.*;
28 import org.openharmonise.swing.datefield.*;
29 import org.openharmonise.vfs.metadata.*;
30 import org.openharmonise.vfs.metadata.range.*;
31 import org.openharmonise.vfs.metadata.value.*;
32
33
34 /**
35  * @author Matthew Large
36  * @version $Revision: 1.1 $
37  *
38  */

39 public class DateDetails extends AbstractRangeDetails
40     implements ActionListener, LayoutManager, KeyListener, DateFieldListener {
41
42     private JLabel m_minLabel = null;
43     private JDateField m_minDateField = null;
44     
45     private JLabel m_maxLabel = null;
46     private JDateField m_maxDateField = null;
47     
48     private JLabel m_includeTimeLabel = null;
49     private JCheckBox m_includeTimeCheck = null;
50     
51     private RangeValue m_value = null;
52     private Range m_range = null;
53     /**
54      * @param propInst
55      * @param sTitle
56      */

57     public DateDetails(PropertyInstance propInst) {
58         super(propInst, "Date details");
59         this.setup();
60     }
61     
62     private void setup() {
63         this.setLayout(this);
64         
65         this.m_includeTimeLabel = new JLabel("Include time");
66         this.add(this.m_includeTimeLabel);
67         this.m_includeTimeCheck = new JCheckBox();
68         this.m_includeTimeCheck.addActionListener(this);
69         this.add(this.m_includeTimeCheck);
70         
71         
72         this.m_minLabel = new JLabel("Minimum");
73         this.add(m_minLabel);
74         
75         this.m_maxLabel = new JLabel("Maximum");
76         this.add(m_maxLabel);
77         
78         if(this.getPropertyInstance().getValues().size()>0) {
79             this.m_value = (RangeValue) this.getPropertyInstance().getValues().get(0);
80             Range range = (Range) this.m_value.getRange();
81             
82             if(range==null) {
83                 this.m_range = (Range) new DateTimeRange();
84                 this.m_value.setRange((org.openharmonise.vfs.metadata.Range) m_range);
85             } else {
86                 this.m_range = (Range)range;
87             }
88             
89             SimpleDateFormat format = null;
90             
91             if(this.m_range instanceof DateTimeRange) {
92                 this.m_minDateField = new JDateField(DateTimeRange.XSD_DATE_FORMAT);
93                 this.m_minDateField.addDateFieldListener(this);
94                 this.add(m_minDateField);
95                 
96                 this.m_maxDateField = new JDateField(DateTimeRange.XSD_DATE_FORMAT);
97                 this.m_maxDateField.addDateFieldListener(this);
98                 this.add(m_maxDateField);
99                 
100                 format = new SimpleDateFormat(DateTimeRange.XSD_DATE_FORMAT);
101                 if(((DateTimeRange)this.m_range).getMinimum()!=null) {
102                     this.m_minDateField.setDate(((DateTimeRange)this.m_range).getMinimum());
103                 }
104                 if(((DateTimeRange)this.m_range).getMaximum()!=null) {
105                     this.m_maxDateField.setDate(((DateTimeRange)this.m_range).getMaximum());
106                 }
107                 this.m_includeTimeCheck.setSelected(true);
108             } else if(this.m_range instanceof DateRange) {
109                 this.m_minDateField = new JDateField(DateRange.XSD_DATE_FORMAT);
110                 this.m_minDateField.addDateFieldListener(this);
111                 this.add(m_minDateField);
112                 
113                 this.m_maxDateField = new JDateField(DateRange.XSD_DATE_FORMAT);
114                 this.m_maxDateField.addDateFieldListener(this);
115                 this.add(m_maxDateField);
116                 
117                 format = new SimpleDateFormat(DateRange.XSD_DATE_FORMAT);
118                 if(((DateRange)this.m_range).getMinimum()!=null) {
119                     this.m_minDateField.setDate(((DateTimeRange)this.m_range).getMinimum());
120                 }
121                 if(((DateRange)this.m_range).getMaximum()!=null) {
122                     this.m_maxDateField.setDate(((DateTimeRange)this.m_range).getMaximum());
123                 }
124                 this.m_includeTimeCheck.setSelected(false);
125             }
126         }
127     }
128
129     /* (non-Javadoc)
130      * @see java.awt.LayoutManager#layoutContainer(java.awt.Container)
131      */

132     public void layoutContainer(Container arg0) {
133         
134         this.m_includeTimeCheck.setSize(this.m_includeTimeCheck.getPreferredSize());
135         this.m_includeTimeCheck.setLocation(20, 20);
136         
137         this.m_includeTimeLabel.setSize(120, this.m_minLabel.getPreferredSize().height);
138         this.m_includeTimeLabel.setLocation(50, 20);
139         
140         this.m_minLabel.setSize(this.m_minLabel.getPreferredSize());
141         this.m_minLabel.setLocation(20, 50);
142
143         this.m_minDateField.setSize(m_minDateField.getPreferredSize());
144         this.m_minDateField.setLocation(20, 70);
145         
146         this.m_maxLabel.setSize(this.m_maxLabel.getPreferredSize());
147         this.m_maxLabel.setLocation(20, 110);
148
149         this.m_maxDateField.setSize(m_maxDateField.getPreferredSize());
150         this.m_maxDateField.setLocation(20, 130);
151         
152         
153     }
154
155     /* (non-Javadoc)
156      * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
157      */

158     public void keyPressed(KeyEvent arg0) {
159     }
160
161     /* (non-Javadoc)
162      * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
163      */

164     public void keyReleased(KeyEvent ke) {
165     }
166
167     /* (non-Javadoc)
168      * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
169      */

170     public void keyTyped(KeyEvent arg0) {
171     }
172
173     /* (non-Javadoc)
174      * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
175      */

176     public void actionPerformed(ActionEvent arg0) {
177         Range currentRange = (Range) this.m_range;
178         Range newRange = null;
179         if(this.m_includeTimeCheck.isSelected()) {
180             DateRange tempCurrRange = (DateRange)currentRange;
181             DateTimeRange tempRange = new DateTimeRange();
182             tempRange.setMaximum(tempCurrRange.getMaximum());
183             tempRange.setMinimum(tempCurrRange.getMinimum());
184             this.m_range = (Range) tempRange;
185             this.m_value.setRange((org.openharmonise.vfs.metadata.Range) this.m_range);
186
187             JDateField newMinDateField = new JDateField(DateTimeRange.XSD_DATE_FORMAT);
188             newMinDateField.setDate(tempCurrRange.getMinimum());
189             newMinDateField.addDateFieldListener(this);
190             
191             this.remove(this.m_minDateField);
192             this.m_minDateField = newMinDateField;
193             this.add(this.m_minDateField);
194
195             JDateField newMaxDateField = new JDateField(DateTimeRange.XSD_DATE_FORMAT);
196             newMaxDateField.setDate(tempCurrRange.getMaximum());
197             newMaxDateField.addDateFieldListener(this);
198             
199             this.remove(this.m_maxDateField);
200             this.m_maxDateField = newMaxDateField;
201             this.add(this.m_maxDateField);
202             
203             
204             this.fireRangeDetailsChanged(m_value);
205             this.revalidate();
206             this.repaint();
207         } else {
208             DateTimeRange tempCurrRange = (DateTimeRange)currentRange;
209             DateRange tempRange = new DateRange();
210             tempRange.setMaximum(tempCurrRange.getMaximum());
211             tempRange.setMinimum(tempCurrRange.getMinimum());
212             this.m_range = (Range) tempRange;
213             this.m_value.setRange((org.openharmonise.vfs.metadata.Range) this.m_range);
214
215             JDateField newMinDateField = new JDateField(DateRange.XSD_DATE_FORMAT);
216             newMinDateField.setDate(tempCurrRange.getMinimum());
217             newMinDateField.addDateFieldListener(this);
218             
219             this.remove(this.m_minDateField);
220             this.m_minDateField = newMinDateField;
221             this.add(this.m_minDateField);
222
223             JDateField newMaxDateField = new JDateField(DateRange.XSD_DATE_FORMAT);
224             newMaxDateField.setDate(tempCurrRange.getMaximum());
225             newMaxDateField.addDateFieldListener(this);
226             
227             this.remove(this.m_maxDateField);
228             this.m_maxDateField = newMaxDateField;
229             this.add(this.m_maxDateField);
230             
231             this.fireRangeDetailsChanged(m_value);
232             this.revalidate();
233             this.repaint();
234         }
235     }
236
237     /* (non-Javadoc)
238      * @see com.simulacramedia.swing.datefield.DateFieldListener#validationFailed(com.simulacramedia.swing.datefield.JDateField, int)
239      */

240     public void validationFailed(JDateField source, int nReason) {
241     }
242
243     /* (non-Javadoc)
244      * @see com.simulacramedia.swing.datefield.DateFieldListener#valueChanged(com.simulacramedia.swing.datefield.JDateField)
245      */

246     public void valueChanged(JDateField source) {
247         if(source==this.m_minDateField) {
248             if(this.m_range instanceof DateRange) {
249                 ((DateRange)this.m_range).setMinimum(this.m_minDateField.getDate());
250             } else {
251                 ((DateTimeRange)this.m_range).setMinimum(this.m_minDateField.getDate());
252             }
253             this.fireRangeDetailsChanged(m_value);
254         } else if(source==this.m_maxDateField) {
255             if(this.m_range instanceof DateRange) {
256                 ((DateRange)this.m_range).setMaximum(this.m_maxDateField.getDate());
257             } else {
258                 ((DateTimeRange)this.m_range).setMaximum(this.m_maxDateField.getDate());
259             }
260             this.fireRangeDetailsChanged(m_value);
261         }
262     }
263
264 }
265
Popular Tags