import javax.swing.text.*;
import java.awt.Toolkit;


//Creăm un formator pt. nume tabel și nume câmp
class TabelSauCampFormatter extends DefaultFormatter {
	protected DocumentFilter getDocumentFilter() {
		return new TabSauCpDocFilter();
	}
}
//clasa nu va permite lungimi > 64 car. sau ca primul caracter să nu fie literă
//sau să conțină spațiu, ? sau * sau (
class TabSauCpDocFilter extends DocumentFilter {	
	static final int MAXCHARS = 64;	 
	public void insertString(DocumentFilter.FilterBypass fb, int offs, 
		String str, AttributeSet a) throws BadLocationException { 
	    if ((fb.getDocument().getLength() + str.length()) <= MAXCHARS &&
        	(offs != 0 || (offs == 0 && Character.isLetter(str.charAt(0)))) &&
        	(str.indexOf(' ') < 0) && (str.indexOf('?') < 0) && 
        	(str.indexOf('*') < 0) && (str.indexOf('/') < 0) && 
        	(str.indexOf('\\') < 0) && (str.indexOf('.') < 0) &&
        	(str.indexOf('(') < 0))
        		super.insertString(fb, offs, str, a);
	    else
	        Toolkit.getDefaultToolkit().beep();
	}	
	public void remove(DocumentFilter.FilterBypass fb, int offs, int len)
		 throws BadLocationException {
			if (offs != 0 || (offs == 0 && Character.isLetter(
				fb.getDocument().getText(len, 1).charAt(0))))
				super.remove(fb, offs, len);
	    	else
	        	Toolkit.getDefaultToolkit().beep();
	}	
	public void replace(DocumentFilter.FilterBypass fb, int offs, int len,
		String str, AttributeSet a) throws BadLocationException {
	    if (fb.getDocument().getLength() + str.length() - len <= MAXCHARS &&
        	(offs != 0 || (offs == 0 && Character.isLetter(str.charAt(0)))) &&
        	(str.indexOf(' ') < 0) && (str.indexOf('?') < 0) && 
        	(str.indexOf('*') < 0) && (str.indexOf('/') < 0) && 
        	(str.indexOf('\\') < 0) && (str.indexOf('.') < 0) &&
        	(str.indexOf('(') < 0))
        		super.replace(fb, offs, len, str, a);
	    else
	        Toolkit.getDefaultToolkit().beep();
		}
}
