1 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 34 public class ClearableDateSelector extends JSpinner implements ChangeListener, Runnable , KeyListener { 35 36 private Date m_dtTempVal; 37 38 private String m_sFormat = null; 39 40 private boolean m_bCleared = false; 41 42 private boolean m_bIgnoreChanges = false; 43 44 47 public ClearableDateSelector(Date initDate, Date minDate, Date maxDate, String 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 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 107 public void stateChanged(ChangeEvent e) { 108 if(m_bCleared == true && m_bIgnoreChanges == false) { 109 setCleared(false); 110 } 111 } 112 113 116 public void run() { 117 this.revalidate(); 118 this.repaint(); 119 120 } 121 122 125 public void keyPressed(KeyEvent e) { 126 m_bIgnoreChanges = true; 127 if(e.getKeyCode() == KeyEvent.VK_DELETE) { 128 129 } 130 131 } 132 133 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 149 public void keyTyped(KeyEvent e) { 150 m_bIgnoreChanges = false; 151 } 152 153 } 154 | Popular Tags |