1 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 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 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 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 158 public void keyPressed(KeyEvent arg0) { 159 } 160 161 164 public void keyReleased(KeyEvent ke) { 165 } 166 167 170 public void keyTyped(KeyEvent arg0) { 171 } 172 173 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 240 public void validationFailed(JDateField source, int nReason) { 241 } 242 243 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 |