package etiquetas.components;

import javax.swing.*;
import java.awt.event.*;
import etiquetas.util.*;
import etiquetas.util.validacao.*;

public class DataFormattedTextField extends JTextField implements KeyListener, FocusListener {

  public DataFormattedTextField() {
    this.addKeyListener(this);
    this.addFocusListener(this);
  }

    public void keyReleased(KeyEvent ke) {}

    public void keyPressed(KeyEvent ke) {
      if (!((ke.getKeyCode() >= 37 && ke.getKeyCode() <= 40) || ke.getKeyCode() == 8
       || ke.getKeyCode() == 127  || ke.getKeyCode() == 111 )) {
          int size = this.getText().length();
          String content = this.getText();
          if (size == 2) this.setText(content + "/");
          else if (size == 5) this.setText(content + "/");
          else if (size >= 10) this.setText(content.substring(0, 9));
      }
    }
    public void keyTyped(KeyEvent ke) {}
    public void focusGained(FocusEvent fe) {}

    public void focusLost(FocusEvent fe) {
        if (StringUtils.isNull(getText())) return;

        Valida validaobjeto = new Valida(new MessageBean());
        validaobjeto.add(this.getText(), "", Valida.DATE, false);
        boolean isValid = validaobjeto.valida();
        if (!isValid) {
          JOptionPane.showMessageDialog(null, "Data inválida.", "", JOptionPane.ERROR_MESSAGE);
          this.grabFocus();
        }
    }
};