package project;

import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;

public class NumericVerifier extends InputVerifier {
	Border originalBorder=null;
	@Override
	public boolean verify(JComponent input) {
		String text=null;
		if (input instanceof JTextField ){
			text=((JTextField)input).getText();
			try {
				Integer.parseInt(text);
			}
			catch(NumberFormatException e){
				return false;
			}
		}
		return true;
	}
	
	
	@Override
	public boolean shouldYieldFocus(JComponent input) {
		originalBorder=(originalBorder==null)?input.getBorder():originalBorder;
		boolean valid=verify(input);
		if (!valid){
			
			JOptionPane.showMessageDialog(null, "Invalid data!! Enter Numerical Value");
			Border border=BorderFactory.createLineBorder(Color.red);
			Border emptyBorder=new EmptyBorder(5, 5, 5, 0);
			Border compoundBorder=BorderFactory.createCompoundBorder(border, emptyBorder);
			input.setBorder(compoundBorder);
		}
		else {
			if (input.getClass()==JTextField.class){
				input.setBorder(originalBorder);
			}
			else input.setBorder(((RoundedTextField) input).getOriginalBorder());
		}
		return valid;
		
		//return super.shouldYieldFocus(input);
	}

}
