00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027 package org.mpcl.nui;
00028
00029 import javax.swing.text.AttributeSet;
00030 import javax.swing.text.BadLocationException;
00031 import javax.swing.text.DocumentFilter;
00032
00033
00035 public class TFixedSizeDocumentFilter extends DocumentFilter
00036 {
00037
00039 private int iMaxSize;
00040
00041
00042
00043
00044
00045
00050 public TFixedSizeDocumentFilter (int iMAX_SIZE)
00051 {
00052 iMaxSize = iMAX_SIZE;
00053 }
00054
00073 public void insertString ( DocumentFilter.FilterBypass tFILTER_BYPASS ,
00074 int iOFFSET ,
00075 String yTEXT ,
00076 AttributeSet tATTRIBUTE_SET )
00077 throws BadLocationException
00078 {
00079 replace (tFILTER_BYPASS, iOFFSET, 0, yTEXT, tATTRIBUTE_SET);
00080 }
00081
00102 public void replace ( DocumentFilter.FilterBypass tFILTER_BYPASS ,
00103 int iOFFSET ,
00104 int iLENGTH ,
00105 String yTEXT ,
00106 AttributeSet tATTRIBUTE_SET )
00107 throws BadLocationException
00108 {
00109 int iNewLength;
00110
00111 iNewLength = tFILTER_BYPASS.getDocument().getLength() - iLENGTH + yTEXT.length();
00112 if ( iNewLength <= iMaxSize)
00113 {
00114 tFILTER_BYPASS.replace (iOFFSET, iLENGTH, yTEXT, tATTRIBUTE_SET);
00115 }
00116 else
00117 {
00118 throw new BadLocationException ("new characters exceeds max size of document", iOFFSET);
00119 }
00120 }
00121
00122 }