package etiquetas.components;

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

public class NumberFormattedTextField extends JTextField implements KeyListener, FocusListener {

  public int MAXLENGTH = 4;

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

  public void keyReleased(KeyEvent ke) {}

  public void keyPressed(KeyEvent ke) {
      if (this.getText().length() >= MAXLENGTH) this.setText(this.getText().substring(0, MAXLENGTH - 1));
  }

  public void keyTyped(KeyEvent ke) {}
  public void focusGained(FocusEvent fe) {}

  public void focusLost(FocusEvent fe) {
      if (StringUtils.isNull(getText())) return;
      boolean isValid = false;
      try {
        Integer.parseInt(this.getText());
        isValid = true;
      }
      catch (NumberFormatException ex) {
        JOptionPane.showMessageDialog(null, "Número incorreto, preencha novamente.", "", JOptionPane.ERROR_MESSAGE);
        this.grabFocus();
      }
  }
};
