*** empty log message ***
[thera-pi.git] / RehaKassenbuch / src / Tools / DateInputVerifier.java
blob3be450ec76bf195ed8eab64f2fb29759e9b115a2
1 package Tools;
3 import java.awt.Color;
4 import java.text.DateFormat;
5 import java.text.ParseException;
6 import java.text.SimpleDateFormat;
7 import java.util.Date;
8 import java.util.Locale;
10 import javax.swing.BorderFactory;
11 import javax.swing.InputVerifier;
12 import javax.swing.JComponent;
13 import javax.swing.JFormattedTextField;
14 import javax.swing.JOptionPane;
15 import javax.swing.JTextField;
16 import javax.swing.SwingUtilities;
17 import javax.swing.UIManager;
18 import javax.swing.border.Border;
23 public class DateInputVerifier extends InputVerifier {
24 JFormattedTextField input;
25 public DateInputVerifier(JFormattedTextField tf){
26 this.input = tf;
28 public boolean verify (final JComponent input) {
29 ////System.out.println("Input getText = "+((JRtaTextField)input).getText());
30 ////System.out.println("L�nge des Inputs = "+((JRtaTextField)input).getText().length());
31 return this.isAlowedDate((JFormattedTextField)input);
35 private Character placeholder = null;
36 /**
37 * Set an Empty Character for delete the Input. If Empty Character is null,
38 * a valid value need to input.
39 * @param c Character
41 public void setPlaceholder (final Character c) {
42 this.placeholder = c;
45 /**
46 * Return the char for delete the input or null if delete not allowed.
47 * @return Character
49 public Character getPlaceHolder () {
50 return this.placeholder;
53 protected boolean isAlowedDate (final JFormattedTextField input) {
54 if(input.getText().equals(" . . ")){
55 return true;
57 String inhalt = input.getText();
58 ////System.out.println("In verify / input = "+input.getText());
59 final DateFormat sdf = this.getDateFormat ();
60 try {
61 String teil = inhalt.substring(6).trim();
62 if(teil.length()==0){
63 input.setText(" . . ");
64 return true;
66 if(teil.length() == 2){
67 String jahrtausend = "";
68 if(IntegerTools.trailNullAndRetInt(teil) > 20){
69 jahrtausend = inhalt.substring(0,6).trim()+"19"+teil;
70 }else{
71 jahrtausend = inhalt.substring(0,6).trim()+"20"+teil;
73 input.setText(jahrtausend);
74 ////System.out.println("Datum = "+jahrtausend);
76 if(inhalt.length() >= 8){
77 ////System.out.println("L�nge des Strings = "+input.getText().length());
78 if(inhalt.substring(6,7).equals("0")){
79 String korrekt = inhalt.substring(0,6);
80 korrekt = korrekt+"20"+inhalt.substring(6,8);
81 input.setText(korrekt);
82 ////System.out.println("korrigiertes Datum = "+korrekt);
85 final Date d = sdf.parse (input.getText());
86 SwingUtilities.invokeLater(new Runnable () {
87 public void run () {
88 input.setText(sdf.format(d));
90 });
91 return true;
93 catch (final ParseException notValidOrDelete) {
96 /*
98 if (((DateInputVerifier) input).getPlaceHolder() != null) {
99 String noMaskValue = null;
100 if (Locale.getDefault ().getLanguage ().equals (Locale.GERMANY.getLanguage ())) {
101 ////System.out.println("InputVerifier - Locale = Germany");
102 noMaskValue = input.getText().replace ('.',((JFormattedField) input).getPlaceHolder ());
104 else {
105 noMaskValue = input.getText().replace ('-',((JRtaTextField) input).getPlaceHolder ());
106 ////System.out.println("InputVerifier - Locale = English");
108 for (char c : noMaskValue.toCharArray()) {
109 if (c != ((JRtaTextField) input).getPlaceHolder()) return false;
111 return true;
114 //System.out.println("Unzul�ssige Datumseingabe");
115 JOptionPane.showMessageDialog(null,"Unzulässige Datumseingabe");
117 return false;
122 protected DateFormat getDateFormat () {
123 if (Locale.getDefault().getLanguage().equals(Locale.GERMANY.getLanguage())) {
124 return new SimpleDateFormat ("dd.MM.yyyy");
126 else {
127 return new SimpleDateFormat("yyyy-MM-dd");
131 public boolean shouldYieldFocus (final JComponent input) {
132 if (!verify(input)) {
133 input.setForeground(Color.RED);
134 input.setBorder(BorderFactory.createEtchedBorder(Color.RED, new Color (255,50,50)));
135 return false;
137 else {
138 //input.setForeground(Color.BLACK);
139 input.setBorder((Border)UIManager.getLookAndFeelDefaults().get("TextField.border"));
140 return true;