Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java	(revision 8005)
@@ -62,5 +62,5 @@
     protected final void createColumns() {
 
-        AutoCompletingTextField roleEditor = new AutoCompletingTextField();
+        AutoCompletingTextField roleEditor = new AutoCompletingTextField(0, false);
         RelationMemberConflictDecisionRenderer decisionRenderer = new RelationMemberConflictDecisionRenderer();
         RelationMemberConflictDecisionEditor decisionEditor = new RelationMemberConflictDecisionEditor();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java	(revision 8005)
@@ -30,5 +30,5 @@
         this.ds = ds;
         this.relation = relation;
-        editor = new AutoCompletingTextField();
+        editor = new AutoCompletingTextField(0, false);
         editor.setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
         autoCompletionList = new AutoCompletionList();
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TagCellEditor.java	(revision 8005)
@@ -33,5 +33,5 @@
      */
     public TagCellEditor() {
-        editor = new AutoCompletingTextField();
+        editor = new AutoCompletingTextField(0, false);
         editor.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
     }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java	(revision 8005)
@@ -154,5 +154,5 @@
      */
     public AutoCompletingTextField() {
-        init();
+        this(0);
     }
 
@@ -163,5 +163,15 @@
      */
     public AutoCompletingTextField(int columns) {
-        super(columns);
+        this(columns, true);
+    }
+
+    /**
+     * Constructs a new {@code AutoCompletingTextField}.
+     * @param columns the number of columns to use to calculate the preferred width;
+     * if columns is set to zero, the preferred width will be whatever naturally results from the component implementation
+     * @param undoRedo Enables or not Undo/Redo feature. Not recommended for table cell editors, unless each cell provides its own editor
+     */
+    public AutoCompletingTextField(int columns, boolean undoRedo) {
+        super(null, null, columns, undoRedo);
         init();
     }
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java	(revision 8005)
@@ -181,5 +181,6 @@
         private PopupMenuLauncher launcher;
 
-        @Override public void propertyChange(PropertyChangeEvent evt) {
+        @Override
+        public void propertyChange(PropertyChangeEvent evt) {
             if ("editable".equals(evt.getPropertyName())) {
                 if (evt.getNewValue().equals(true)) {
@@ -202,5 +203,5 @@
                     component = (JTextComponent) editorComponent;
                     component.addMouseListener(this);
-                    launcher = TextContextualPopupMenu.enableMenuFor(component);
+                    launcher = TextContextualPopupMenu.enableMenuFor(component, true);
                 }
             }
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java	(revision 8005)
@@ -32,5 +32,5 @@
      */
     public JosmEditorPane() {
-        TextContextualPopupMenu.enableMenuFor(this);
+        TextContextualPopupMenu.enableMenuFor(this, true);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextArea.java	(revision 8005)
@@ -86,5 +86,5 @@
     public JosmTextArea(Document doc, String text, int rows, int columns) {
         super(doc, text, rows, columns);
-        TextContextualPopupMenu.enableMenuFor(this);
+        TextContextualPopupMenu.enableMenuFor(this, true);
         addFocusListener(this);
     }
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(revision 8005)
@@ -45,6 +45,27 @@
      */
     public JosmTextField(Document doc, String text, int columns) {
+        this(doc, text, columns, true);
+    }
+
+    /**
+     * Constructs a new <code>JosmTextField</code> that uses the given text
+     * storage model and the given number of columns.
+     * This is the constructor through which the other constructors feed.
+     * If the document is <code>null</code>, a default model is created.
+     *
+     * @param doc  the text storage to use; if this is <code>null</code>,
+     *      a default will be provided by calling the
+     *      <code>createDefaultModel</code> method
+     * @param text  the initial string to display, or <code>null</code>
+     * @param columns  the number of columns to use to calculate
+     *   the preferred width &gt;= 0; if <code>columns</code>
+     *   is set to zero, the preferred width will be whatever
+     *   naturally results from the component implementation
+     * @param undoRedo Enables or not Undo/Redo feature. Not recommended for table cell editors, unless each cell provides its own editor
+     * @exception IllegalArgumentException if <code>columns</code> &lt; 0
+     */
+    public JosmTextField(Document doc, String text, int columns, boolean undoRedo) {
         super(doc, text, columns);
-        TextContextualPopupMenu.enableMenuFor(this);
+        TextContextualPopupMenu.enableMenuFor(this, undoRedo);
         // Fix minimum size when columns are specified
         if (columns > 0) {
Index: trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java	(revision 8002)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java	(revision 8005)
@@ -46,4 +46,5 @@
 
     protected JTextComponent component = null;
+    protected boolean undoRedo;
     protected final UndoAction undoAction = new UndoAction();
     protected final RedoAction redoAction = new RedoAction();
@@ -82,8 +83,9 @@
      * @see #detach()
      */
-    protected TextContextualPopupMenu attach(JTextComponent component) {
+    protected TextContextualPopupMenu attach(JTextComponent component, boolean undoRedo) {
         if (component != null && !isAttached()) {
             this.component = component;
-            if (component.isEditable()) {
+            this.undoRedo = undoRedo;
+            if (undoRedo && component.isEditable()) {
                 component.getDocument().addUndoableEditListener(undoEditListener);
                 if (!GraphicsEnvironment.isHeadless()) {
@@ -102,7 +104,9 @@
     private void addMenuEntries() {
         if (component.isEditable()) {
-            add(new JMenuItem(undoAction));
-            add(new JMenuItem(redoAction));
-            addSeparator();
+            if (undoRedo) {
+                add(new JMenuItem(undoAction));
+                add(new JMenuItem(redoAction));
+                addSeparator();
+            }
             addMenuEntry(component, tr("Cut"), DefaultEditorKit.cutAction, null);
         }
@@ -125,5 +129,7 @@
             component.removePropertyChangeListener(EDITABLE, propertyChangeListener);
             removeAll();
-            component.getDocument().removeUndoableEditListener(undoEditListener);
+            if (undoRedo) {
+                component.getDocument().removeUndoableEditListener(undoEditListener);
+            }
             component = null;
         }
@@ -134,10 +140,11 @@
      * Creates a new {@link TextContextualPopupMenu} and enables it for the given text component.
      * @param component The component that will display the menu and handle its actions.
+     * @param undoRedo Enables or not Undo/Redo feature. Not recommended for table cell editors, unless each cell provides its own editor
      * @return The {@link PopupMenuLauncher} responsible of displaying the popup menu.
      *         Call {@link #disableMenuFor} with this object if you want to disable the menu later.
-     * @see #disableMenuFor(JTextComponent, PopupMenuLauncher)
-     */
-    public static PopupMenuLauncher enableMenuFor(JTextComponent component) {
-        PopupMenuLauncher launcher = new PopupMenuLauncher(new TextContextualPopupMenu().attach(component), true);
+     * @see #disableMenuFor
+     */
+    public static PopupMenuLauncher enableMenuFor(JTextComponent component, boolean undoRedo) {
+        PopupMenuLauncher launcher = new PopupMenuLauncher(new TextContextualPopupMenu().attach(component, undoRedo), true);
         component.addMouseListener(launcher);
         return launcher;
@@ -148,5 +155,5 @@
      * @param component The component that currently displays the menu and handles its actions.
      * @param launcher The {@link PopupMenuLauncher} obtained via {@link #enableMenuFor}.
-     * @see #enableMenuFor(JTextComponent)
+     * @see #enableMenuFor
      */
     public static void disableMenuFor(JTextComponent component, PopupMenuLauncher launcher) {
