Index: trunk/src/org/openstreetmap/josm/gui/DocumentSizeFilter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/DocumentSizeFilter.java	(revision 4574)
+++ 	(revision )
@@ -1,71 +1,0 @@
-/*
- * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   - Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *
- *   - Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- *   - Neither the name of Oracle or the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.openstreetmap.josm.gui;
- 
-import javax.swing.text.*;
-import java.awt.Toolkit;
- 
-public class DocumentSizeFilter extends DocumentFilter {
-    int maxCharacters;
- 
-    public DocumentSizeFilter(int maxChars) {
-        maxCharacters = maxChars;
-    }
- 
-    public void insertString(FilterBypass fb, int offs,
-                             String str, AttributeSet a)
-        throws BadLocationException {
- 
-        //This rejects the entire insertion if it would make
-        //the contents too long. Another option would be
-        //to truncate the inserted string so the contents
-        //would be exactly maxCharacters in length.
-        if ((fb.getDocument().getLength() + str.length()) <= maxCharacters)
-            super.insertString(fb, offs, str, a);
-        else
-            Toolkit.getDefaultToolkit().beep();
-    }
-     
-    public void replace(FilterBypass fb, int offs,
-                        int length,
-                        String str, AttributeSet a)
-        throws BadLocationException {
-        //This rejects the entire replacement if it would make
-        //the contents too long. Another option would be
-        //to truncate the replacement string so the contents
-        //would be exactly maxCharacters in length.
-        if ((fb.getDocument().getLength() + str.length()
-             - length) <= maxCharacters)
-            super.replace(fb, offs, length, str, a);
-        else
-            Toolkit.getDefaultToolkit().beep();
-    }
-}
Index: trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 4574)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 4576)
@@ -14,5 +14,4 @@
 import javax.swing.JList;
 import javax.swing.ListCellRenderer;
-import javax.swing.text.AbstractDocument;
 import javax.swing.text.AttributeSet;
 import javax.swing.text.BadLocationException;
@@ -22,5 +21,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.DocumentSizeFilter;
 
 /**
@@ -30,4 +28,6 @@
 
     private boolean autocompleteEnabled = true;
+    
+    private int maxTextLength = -1;
 
     /**
@@ -53,4 +53,7 @@
             if (selecting || (offs == 0 && str.equals(getText(0, getLength()))))
                 return;
+            if (maxTextLength > -1 && str.length()+getLength() > maxTextLength) {
+                return;
+            }
             boolean initial = (offs == 0 && getLength() == 0 && str.length() > 1);
             super.insertString(offs, str, a);
@@ -154,7 +157,5 @@
     public void setMaxTextLength(int length)
     {
-        JTextComponent editor = (JTextComponent) this.getEditor().getEditorComponent();
-        AbstractDocument doc = (AbstractDocument) editor.getDocument();
-        doc.setDocumentFilter(new DocumentSizeFilter(length));
+        this.maxTextLength = length;
     }
 
