Index: src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java	(Arbeitskopie)
@@ -14,7 +14,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSeparator;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.data.AutosaveTask;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
@@ -25,6 +24,7 @@
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class BackupPreference implements SubPreferenceSetting {
 
@@ -37,8 +37,8 @@
     private static final BooleanProperty PROP_KEEP_BACKUP = new BooleanProperty("save.keepbackup", false);
     private JCheckBox keepBackup;
     private JCheckBox autosave;
-    private final JTextField autosaveInterval = new JTextField(8);
-    private final JTextField backupPerLayer = new JTextField(8);
+    private final JosmTextField autosaveInterval = new JosmTextField(8);
+    private final JosmTextField backupPerLayer = new JosmTextField(8);
 
     @Override
     public void addGui(PreferenceTabbedPane gui) {
Index: src/org/openstreetmap/josm/gui/preferences/PluginPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(Arbeitskopie)
@@ -29,7 +29,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
-import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 import javax.swing.event.DocumentEvent;
@@ -52,6 +51,7 @@
 import org.openstreetmap.josm.plugins.ReadRemotePluginInformationTask;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class PluginPreference extends DefaultTabPreferenceSetting {
     public static class Factory implements PreferenceSettingFactory {
@@ -97,7 +97,7 @@
         return sb.toString();
     }
 
-    private JTextField tfFilter;
+    private JosmTextField tfFilter;
     private PluginListPanel pnlPluginPreferences;
     private PluginPreferencesModel model;
     private JScrollPane spPluginPreferences;
@@ -122,7 +122,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfFilter = new JTextField(), gc);
+        pnl.add(tfFilter = new JosmTextField(), gc);
         tfFilter.setToolTipText(tr("Enter a search expression"));
         SelectAllOnFocusGainedDecorator.decorate(tfFilter);
         tfFilter.getDocument().addDocumentListener(new SearchFieldAdapter());
Index: src/org/openstreetmap/josm/gui/preferences/AudioPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/AudioPreference.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/AudioPreference.java	(Arbeitskopie)
@@ -9,10 +9,10 @@
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /*
  * marker.audiosampleminsecs
@@ -49,10 +49,10 @@
     private JCheckBox audioMarkersFromWavTimestamps = new JCheckBox(tr("Modified times (time stamps) of audio files."));
     private JCheckBox audioMarkersFromStart = new JCheckBox(tr("Start of track (will always do this if no other markers available)."));
 
-    private JTextField audioLeadIn = new JTextField(8);
-    private JTextField audioForwardBackAmount = new JTextField(8);
-    private JTextField audioFastForwardMultiplier = new JTextField(8);
-    private JTextField audioCalibration = new JTextField(8);
+    private JosmTextField audioLeadIn = new JosmTextField(8);
+    private JosmTextField audioForwardBackAmount = new JosmTextField(8);
+    private JosmTextField audioFastForwardMultiplier = new JosmTextField(8);
+    private JosmTextField audioCalibration = new JosmTextField(8);
 
     public void addGui(PreferenceTabbedPane gui) {
         JPanel audio = new JPanel(new GridBagLayout());
Index: src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(Arbeitskopie)
@@ -58,7 +58,6 @@
 import javax.swing.JScrollPane;
 import javax.swing.JSeparator;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.JToolBar;
 import javax.swing.KeyStroke;
 import javax.swing.ListCellRenderer;
@@ -91,6 +90,7 @@
 import org.openstreetmap.josm.tools.LanguageInfo;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public abstract class SourceEditor extends JPanel {
 
@@ -679,8 +679,8 @@
 
     protected class EditSourceEntryDialog extends ExtendedDialog {
 
-        private JTextField tfTitle;
-        private JTextField tfURL;
+        private JosmTextField tfTitle;
+        private JosmTextField tfURL;
         private JCheckBox cbActive;
 
         public EditSourceEntryDialog(Component parent, String title, SourceEntry e) {
@@ -690,11 +690,11 @@
 
             JPanel p = new JPanel(new GridBagLayout());
 
-            tfTitle = new JTextField(60);
+            tfTitle = new JosmTextField(60);
             p.add(new JLabel(tr("Name (optional):")), GBC.std().insets(15, 0, 5, 5));
             p.add(tfTitle, GBC.eol().insets(0, 0, 5, 5));
 
-            tfURL = new JTextField(60);
+            tfURL = new JosmTextField(60);
             p.add(new JLabel(tr("URL / File:")), GBC.std().insets(15, 0, 5, 0));
             p.add(tfURL, GBC.std().insets(0, 0, 5, 5));
             JButton fileChooser = new JButton(new LaunchFileChooserAction());
@@ -1317,7 +1317,7 @@
     }
 
     class FileOrUrlCellEditor extends JPanel implements TableCellEditor {
-        private JTextField tfFileName;
+        private JosmTextField tfFileName;
         private CopyOnWriteArrayList<CellEditorListener> listeners;
         private String value;
         private boolean isFile;
@@ -1333,7 +1333,7 @@
             gc.fill = GridBagConstraints.BOTH;
             gc.weightx = 1.0;
             gc.weighty = 1.0;
-            add(tfFileName = new JTextField(), gc);
+            add(tfFileName = new JosmTextField(), gc);
 
             gc.gridx = 1;
             gc.gridy = 0;
Index: src/org/openstreetmap/josm/gui/preferences/imagery/AddTMSLayerPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/imagery/AddTMSLayerPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/imagery/AddTMSLayerPanel.java	(Arbeitskopie)
@@ -10,16 +10,16 @@
 
 import javax.swing.JLabel;
 import javax.swing.JTextArea;
-import javax.swing.JTextField;
 import javax.swing.text.View;
 
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class AddTMSLayerPanel extends AddImageryPanel {
 
-    private final JTextField tmsZoom = new JTextField();
+    private final JosmTextField tmsZoom = new JosmTextField();
     private final JTextArea tmsUrl = new JTextArea(3, 40);
     private final KeyAdapter keyAdapter = new KeyAdapter() {
         @Override
Index: src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java	(Arbeitskopie)
@@ -9,11 +9,11 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JSpinner;
-import javax.swing.JTextField;
 import javax.swing.SpinnerNumberModel;
 
 import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * {@code JPanel} giving access to TMS settings.
@@ -27,7 +27,7 @@
     private final JSpinner minZoomLvl;
     private final JSpinner maxZoomLvl;
     private final JCheckBox addToSlippyMapChosser = new JCheckBox();
-    private final JTextField tilecacheDir = new JTextField();
+    private final JosmTextField tilecacheDir = new JosmTextField();
 
     /**
      * Constructs a new {@code TMSSettingsPanel}.
Index: src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java	(Arbeitskopie)
@@ -9,7 +9,6 @@
 import javax.swing.AbstractButton;
 import javax.swing.JPanel;
 import javax.swing.JTextArea;
-import javax.swing.JTextField;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentEvent;
@@ -17,6 +16,7 @@
 import javax.swing.text.JTextComponent;
 
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * An abstract imagery panel used to add WMS/TMS imagery sources. See implementations.
@@ -27,7 +27,7 @@
 public abstract class AddImageryPanel extends JPanel {
 
     protected final JTextArea rawUrl = new JTextArea(3, 40);
-    protected final JTextField name = new JTextField();
+    protected final JosmTextField name = new JosmTextField();
     
     protected final Collection<ContentValidationListener> listeners = new ArrayList<ContentValidationListener>();
     
Index: src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java	(Arbeitskopie)
@@ -14,7 +14,6 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
-import javax.swing.JTextField;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
@@ -22,6 +21,7 @@
 import org.openstreetmap.josm.gui.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.plugins.PluginHandler;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * A panel for configuring whether JOSM shall update plugins at startup.
@@ -58,7 +58,7 @@
     private ButtonGroup bgTimeBasedUpdatePolicy;
     private Map<Policy, JRadioButton> rbVersionBasedUpatePolicy;
     private Map<Policy, JRadioButton> rbTimeBasedUpatePolicy;
-    private JTextField tfUpdateInterval;
+    private JosmTextField tfUpdateInterval;
     private JLabel lblUpdateInterval;
 
     protected JPanel buildVersionBasedUpdatePolicyPanel() {
@@ -95,7 +95,7 @@
     protected JPanel buildUpdateIntervalPanel() {
         JPanel pnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
         pnl.add(lblUpdateInterval = new JLabel(tr("Update interval (in days):")));
-        pnl.add(tfUpdateInterval = new JTextField(5));
+        pnl.add(tfUpdateInterval = new JosmTextField(5));
         SelectAllOnFocusGainedDecorator.decorate(tfUpdateInterval);
         return pnl;
     }
Index: src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/advanced/StringEditor.java	(Arbeitskopie)
@@ -7,18 +7,18 @@
 
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.data.Preferences.StringSetting;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
 import org.openstreetmap.josm.gui.preferences.advanced.AdvancedPreference.PrefEntry;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class StringEditor extends ExtendedDialog {
 
     PrefEntry entry;
-    JTextField tvalue;
+    JosmTextField tvalue;
 
     public StringEditor(final PreferenceTabbedPane gui, PrefEntry entry, StringSetting setting) {
         super(gui, tr("Change string setting"), new String[] {tr("OK"), tr("Cancel")});
@@ -36,7 +36,7 @@
         p.add(new JLabel(tr("Key: {0}", entry.getKey())), GBC.eol().insets(0,0,5,0));
 
         p.add(new JLabel(tr("Value: ")), GBC.std());
-        tvalue = new JTextField(orig, 50);
+        tvalue = new JosmTextField(orig, 50);
         p.add(tvalue, GBC.eop().insets(5,0,0,0).fill(GBC.HORIZONTAL));
 
         return p;
Index: src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/advanced/ListListEditor.java	(Arbeitskopie)
@@ -18,7 +18,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.JToolBar;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
@@ -32,6 +31,7 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class ListListEditor extends ExtendedDialog {
 
@@ -94,7 +94,7 @@
         table.putClientProperty("terminateEditOnFocusLost", true);
         table.setTableHeader(null);
 
-        DefaultCellEditor editor = new DefaultCellEditor(new JTextField());
+        DefaultCellEditor editor = new DefaultCellEditor(new JosmTextField());
         editor.setClickCountToStart(1);
         table.setDefaultEditor(table.getColumnClass(0), editor);
 
Index: src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/advanced/MapListEditor.java	(Arbeitskopie)
@@ -22,7 +22,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.JToolBar;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
@@ -36,6 +35,7 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class MapListEditor extends ExtendedDialog {
 
@@ -116,7 +116,7 @@
         table.putClientProperty("terminateEditOnFocusLost", true);
         table.getTableHeader().getColumnModel().getColumn(0).setHeaderValue(tr("Key"));
         table.getTableHeader().getColumnModel().getColumn(1).setHeaderValue(tr("Value"));
-        DefaultCellEditor editor = new DefaultCellEditor(new JTextField());
+        DefaultCellEditor editor = new DefaultCellEditor(new JosmTextField());
         editor.setClickCountToStart(1);
         table.setDefaultEditor(table.getColumnClass(0), editor);
 
Index: src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java	(Arbeitskopie)
@@ -13,7 +13,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.table.AbstractTableModel;
 
 import org.openstreetmap.josm.data.Preferences.ListSetting;
@@ -22,6 +21,7 @@
 import org.openstreetmap.josm.gui.preferences.advanced.AdvancedPreference.PrefEntry;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class ListEditor extends ExtendedDialog {
 
@@ -54,7 +54,7 @@
         table.putClientProperty("terminateEditOnFocusLost", true);
         table.setTableHeader(null);
 
-        DefaultCellEditor editor = new DefaultCellEditor(new JTextField());
+        DefaultCellEditor editor = new DefaultCellEditor(new JosmTextField());
         editor.setClickCountToStart(1);
         table.setDefaultEditor(table.getColumnClass(0), editor);
 
Index: src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java	(Arbeitskopie)
@@ -33,7 +33,6 @@
 import javax.swing.JRadioButton;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.filechooser.FileFilter;
@@ -58,6 +57,7 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class AdvancedPreference extends DefaultTabPreferenceSetting {
 
@@ -143,12 +143,12 @@
     private AllSettingsTableModel model;
     protected List<PrefEntry> data;
     protected List<PrefEntry> displayData;
-    protected JTextField txtFilter;
+    protected JosmTextField txtFilter;
 
     public void addGui(final PreferenceTabbedPane gui) {
         JPanel p = gui.createPreferenceTab(this);
 
-        txtFilter = new JTextField();
+        txtFilter = new JosmTextField();
         JLabel lbFilter = new JLabel(tr("Search: "));
         lbFilter.setLabelFor(txtFilter);
         p.add(lbFilter);
@@ -452,7 +452,7 @@
 
     private static class SettingCellEditor extends DefaultCellEditor {
         public SettingCellEditor() {
-            super(new JTextField());
+            super(new JosmTextField());
         }
 
         @Override
@@ -522,7 +522,7 @@
     private void addPreference(final PreferenceTabbedPane gui) {
         JPanel p = new JPanel(new GridBagLayout());
         p.add(new JLabel(tr("Key")), GBC.std().insets(0,0,5,0));
-        JTextField tkey = new JTextField("", 50);
+        JosmTextField tkey = new JosmTextField("", 50);
         p.add(tkey, GBC.eop().insets(5,0,0,0).fill(GBC.HORIZONTAL));
 
         p.add(new JLabel(tr("Select Setting Type:")), GBC.eol().insets(5,15,5,0));
Index: src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java	(Arbeitskopie)
@@ -16,7 +16,6 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
-import javax.swing.JTextField;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
@@ -29,6 +28,7 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.template_engine.ParseError;
 import org.openstreetmap.josm.tools.template_engine.TemplateParser;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class GPXSettingsPanel extends JPanel implements ValidationListener {
 
@@ -44,9 +44,9 @@
     private JRadioButton drawRawGpsLinesLocal = new JRadioButton(tr("Local files"));
     private JRadioButton drawRawGpsLinesNone = new JRadioButton(tr("None"));
     private ActionListener drawRawGpsLinesActionListener;
-    private JTextField drawRawGpsMaxLineLength = new JTextField(8);
-    private JTextField drawRawGpsMaxLineLengthLocal = new JTextField(8);
-    private JTextField drawLineWidth = new JTextField(2);
+    private JosmTextField drawRawGpsMaxLineLength = new JosmTextField(8);
+    private JosmTextField drawRawGpsMaxLineLengthLocal = new JosmTextField(8);
+    private JosmTextField drawLineWidth = new JosmTextField(2);
     private JCheckBox forceRawGpsLines = new JCheckBox(tr("Force lines if no segments imported"));
     private JCheckBox largeGpsPoints = new JCheckBox(tr("Draw large GPS points"));
     private JCheckBox hdopCircleGpsPoints = new JCheckBox(tr("Draw a circle from HDOP value"));
@@ -61,12 +61,12 @@
     private JCheckBox makeAutoMarkers = new JCheckBox(tr("Create markers when reading GPX"));
     private JCheckBox drawGpsArrows = new JCheckBox(tr("Draw Direction Arrows"));
     private JCheckBox drawGpsArrowsFast = new JCheckBox(tr("Fast drawing (looks uglier)"));
-    private JTextField drawGpsArrowsMinDist = new JTextField(8);
+    private JosmTextField drawGpsArrowsMinDist = new JosmTextField(8);
     private JCheckBox colorDynamic = new JCheckBox(tr("Dynamic color range based on data limits"));
     private JosmComboBox waypointLabel = new JosmComboBox(LABEL_PATTERN_DESC);
-    private JTextField waypointLabelPattern = new JTextField();
+    private JosmTextField waypointLabelPattern = new JosmTextField();
     private JosmComboBox audioWaypointLabel = new JosmComboBox(LABEL_PATTERN_DESC);
-    private JTextField audioWaypointLabelPattern = new JTextField();
+    private JosmTextField audioWaypointLabelPattern = new JosmTextField();
     private JCheckBox useGpsAntialiasing = new JCheckBox(tr("Smooth GPX graphics (antialiasing)"));
 
     private String layerName;
@@ -421,7 +421,7 @@
         savePreferences(null, false);
     }
 
-    private void updateWaypointLabelCombobox(JosmComboBox cb, JTextField tf, TemplateEntryProperty property) {
+    private void updateWaypointLabelCombobox(JosmComboBox cb, JosmTextField tf, TemplateEntryProperty property) {
         String labelPattern = property.getAsString();
         boolean found = false;
         for (int i=0; i<LABEL_PATTERN_TEMPLATE.length; i++) {
@@ -438,7 +438,7 @@
         }
     }
 
-    private void updateWaypointPattern(JosmComboBox cb, JTextField tf) {
+    private void updateWaypointPattern(JosmComboBox cb, JosmTextField tf) {
         if (cb.getSelectedIndex() == WAYPOINT_LABEL_CUSTOM) {
             tf.setEnabled(true);
         } else {
Index: src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java	(Arbeitskopie)
@@ -20,7 +20,6 @@
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
@@ -33,13 +32,14 @@
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class OsmApiUrlInputPanel extends JPanel {
     static public final String API_URL_PROP = OsmApiUrlInputPanel.class.getName() + ".apiUrl";
 
     private JLabel lblValid;
     private JLabel lblApiUrl;
-    private JTextField tfOsmServerUrl;
+    private JosmTextField tfOsmServerUrl;
     private ApiUrlValidator valOsmServerUrl;
     private SideButton btnTest;
     /** indicates whether to use the default OSM URL or not */
@@ -89,7 +89,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfOsmServerUrl = new JTextField(), gc);
+        add(tfOsmServerUrl = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfOsmServerUrl);
         valOsmServerUrl = new ApiUrlValidator(tfOsmServerUrl);
         valOsmServerUrl.validate();
Index: src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java	(Arbeitskopie)
@@ -21,7 +21,6 @@
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
@@ -33,6 +32,7 @@
 import org.openstreetmap.josm.gui.oauth.TestAccessTokenTask;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * The preferences panel for the OAuth preferences. This just a summary panel
@@ -213,8 +213,8 @@
      *
      */
     private class AlreadyAuthorisedPanel extends JPanel {
-        private JTextField tfAccessTokenKey;
-        private JTextField tfAccessTokenSecret;
+        private JosmTextField tfAccessTokenKey;
+        private JosmTextField tfAccessTokenSecret;
 
         protected void build() {
             setLayout(new GridBagLayout());
@@ -237,7 +237,7 @@
 
             gc.gridx = 1;
             gc.weightx = 1.0;
-            add(tfAccessTokenKey = new JTextField(), gc);
+            add(tfAccessTokenKey = new JosmTextField(), gc);
             tfAccessTokenKey.setEditable(false);
 
             // -- access token secret
@@ -249,7 +249,7 @@
 
             gc.gridx = 1;
             gc.weightx = 1.0;
-            add(tfAccessTokenSecret = new JTextField(), gc);
+            add(tfAccessTokenSecret = new JosmTextField(), gc);
             tfAccessTokenSecret.setEditable(false);
 
             // -- access token secret
Index: src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java	(Arbeitskopie)
@@ -14,7 +14,6 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JPasswordField;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.gui.widgets.JosmPasswordField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
@@ -22,6 +21,7 @@
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.io.OsmApi;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * The preferences panel for parameters necessary for the Basic Authentication
@@ -31,7 +31,7 @@
 public class BasicAuthenticationPreferencesPanel extends JPanel {
 
     /** the OSM user name */
-    private JTextField tfOsmUserName;
+    private JosmTextField tfOsmUserName;
     private UserNameValidator valUserName;
     /** the OSM password */
     private JPasswordField tfOsmPassword;
@@ -55,7 +55,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfOsmUserName = new JTextField(), gc);
+        add(tfOsmUserName = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfOsmUserName);
         valUserName = new UserNameValidator(tfOsmUserName);
         valUserName.validate();
Index: src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferencesPanel.java	(Arbeitskopie)
@@ -23,8 +23,8 @@
 import javax.swing.JPanel;
 import javax.swing.JPasswordField;
 import javax.swing.JRadioButton;
-import javax.swing.JTextField;
 
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.JMultilineLabel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -74,11 +74,11 @@
 
     private ButtonGroup bgProxyPolicy;
     private Map<ProxyPolicy, JRadioButton> rbProxyPolicy;
-    private JTextField tfProxyHttpHost;
-    private JTextField tfProxyHttpPort;
-    private JTextField tfProxySocksHost;
-    private JTextField tfProxySocksPort;
-    private JTextField tfProxyHttpUser;
+    private JosmTextField tfProxyHttpHost;
+    private JosmTextField tfProxyHttpPort;
+    private JosmTextField tfProxySocksHost;
+    private JosmTextField tfProxySocksPort;
+    private JosmTextField tfProxyHttpUser;
     private JPasswordField tfProxyHttpPassword;
 
     private JPanel pnlHttpProxyConfigurationPanel;
@@ -106,7 +106,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfProxyHttpHost = new JTextField(),gc);
+        pnl.add(tfProxyHttpHost = new JosmTextField(),gc);
 
         gc.gridy = 1;
         gc.gridx = 0;
@@ -116,7 +116,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfProxyHttpPort = new JTextField(5),gc);
+        pnl.add(tfProxyHttpPort = new JosmTextField(5),gc);
         tfProxyHttpPort.setMinimumSize(tfProxyHttpPort.getPreferredSize());
 
         gc.gridy = 2;
@@ -136,7 +136,7 @@
         gc.gridy = 3;
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfProxyHttpUser = new JTextField(20),gc);
+        pnl.add(tfProxyHttpUser = new JosmTextField(20),gc);
         tfProxyHttpUser.setMinimumSize(tfProxyHttpUser.getPreferredSize());
 
         gc.gridy = 4;
@@ -181,7 +181,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfProxySocksHost = new JTextField(20),gc);
+        pnl.add(tfProxySocksHost = new JosmTextField(20),gc);
 
         gc.gridy = 1;
         gc.gridx = 0;
@@ -191,7 +191,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfProxySocksPort = new JTextField(5), gc);
+        pnl.add(tfProxySocksPort = new JosmTextField(5), gc);
         tfProxySocksPort.setMinimumSize(tfProxySocksPort.getPreferredSize());
 
         // add an extra spacer, otherwise the layout is broken
Index: src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java	(Arbeitskopie)
@@ -28,7 +28,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.KeyStroke;
 import javax.swing.ListSelectionModel;
 import javax.swing.RowFilter;
@@ -47,6 +46,7 @@
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * This is the keyboard preferences content.
@@ -137,7 +137,7 @@
 
     JTable shortcutTable = new JTable();
 
-    private JTextField filterField = new JTextField();
+    private JosmTextField filterField = new JosmTextField();
 
     /** Creates new form prefJPanel */
     // Ain't those auto-generated comments helpful or what? <g>
Index: src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java	(Arbeitskopie)
@@ -18,7 +18,6 @@
 import javax.swing.JList;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
-import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.event.ListSelectionEvent;
@@ -27,6 +26,7 @@
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * Projection choice that lists all known projects by code.
@@ -41,7 +41,7 @@
 
     private class CodeSelectionPanel extends JPanel implements ListSelectionListener, DocumentListener {
 
-        public JTextField filter;
+        public JosmTextField filter;
         private ProjectionCodeListModel model;
         public JList selectionList;
         List<String> data;
@@ -107,7 +107,7 @@
         }
 
         private void build() {
-            filter = new JTextField(30);
+            filter = new JosmTextField(30);
             filter.setColumns(10);
             filter.getDocument().addDocumentListener(this);
 
Index: src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java	(Arbeitskopie)
@@ -20,7 +20,6 @@
 import javax.swing.JComponent;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 import javax.swing.plaf.basic.BasicComboBoxEditor;
 
 import org.openstreetmap.josm.Main;
@@ -36,6 +35,7 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class CustomProjectionChoice extends AbstractProjectionChoice implements SubPrefsOptions {
 
@@ -47,7 +47,7 @@
 
     private static class PreferencePanel extends JPanel {
 
-        public JTextField input;
+        public JosmTextField input;
         private HistoryComboBox cbInput;
 
         public PreferencePanel(String initialText, ActionListener listener) {
@@ -55,12 +55,12 @@
         }
 
         private void build(String initialText, final ActionListener listener) {
-            input = new JTextField(30);
+            input = new JosmTextField(30);
             cbInput = new HistoryComboBox();
             cbInput.setPrototypeDisplayValue(new AutoCompletionListItem("xxxx"));
             cbInput.setEditor(new BasicComboBoxEditor() {
                 @Override
-                protected JTextField createEditorComponent() {
+                protected JosmTextField createEditorComponent() {
                     return input;
                 }
             });
Index: src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- src/org/openstreetmap/josm/gui/MapStatus.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/MapStatus.java	(Arbeitskopie)
@@ -33,7 +33,6 @@
 import javax.swing.JPanel;
 import javax.swing.JProgressBar;
 import javax.swing.JScrollPane;
-import javax.swing.JTextField;
 import javax.swing.Popup;
 import javax.swing.PopupFactory;
 import javax.swing.UIManager;
@@ -49,6 +48,7 @@
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * A component that manages some status information display about the map.
@@ -150,7 +150,7 @@
 
     final ImageLabel lonText = new ImageLabel("lon", tr("The geographic longitude at the mouse pointer."), 11);
     final ImageLabel nameText = new ImageLabel("name", tr("The name of the object at the mouse pointer."), 20);
-    final JTextField helpText = new JTextField();
+    final JosmTextField helpText = new JosmTextField();
     final ImageLabel latText = new ImageLabel("lat", tr("The geographic latitude at the mouse pointer."), 11);
     final ImageLabel angleText = new ImageLabel("angle", tr("The angle between the previous and the current way segment."), 6);
     final ImageLabel headingText = new ImageLabel("heading", tr("The (compass) heading of the line segment being drawn."), 6);
Index: src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java
===================================================================
--- src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java	(Arbeitskopie)
@@ -1,9 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.widgets;
 
-import javax.swing.JTextField;
 import javax.swing.text.JTextComponent;
 
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -12,7 +12,7 @@
  * @param <T> The ID validator class
  * @since 5765
  */
-public abstract class AbstractIdTextField<T extends AbstractTextComponentValidator> extends JTextField {
+public abstract class AbstractIdTextField<T extends AbstractTextComponentValidator> extends JosmTextField {
 
     protected final T validator;
 
Index: src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java
===================================================================
--- src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java	(Arbeitskopie)
@@ -8,17 +8,84 @@
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
 import org.openstreetmap.josm.Main;
 
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+import javax.swing.event.*;
+import javax.swing.text.*;
+import javax.swing.undo.*;
+import static org.openstreetmap.josm.tools.I18n.tr;
+
 public class HistoryComboBox extends AutoCompletingComboBox {
     private ComboBoxHistory model;
+    private JPopupMenu contextMenu;
+    private UndoManager undoManager;
 
+
     public static final int DEFAULT_SEARCH_HISTORY_SIZE = 15;
 
     public HistoryComboBox() {
         int maxsize = Main.pref.getInteger("search.history-size", DEFAULT_SEARCH_HISTORY_SIZE);
         setModel(model = new ComboBoxHistory(maxsize));
         setEditable(true);
+        initContext();
     }
 
+    private void initContext(){
+	undoManager = new UndoManager();
+	contextMenu = new JPopupMenu();
+	UndoAction undoAction = new UndoAction();
+	addToContextMenu(tr("Paste"),      DefaultEditorKit.pasteAction);
+	contextMenu.addSeparator();
+	addToContextMenu(tr("Cut"),        DefaultEditorKit.cutAction);
+	addToContextMenu(tr("Copy"),       DefaultEditorKit.copyAction);
+	addToContextMenu(tr("Delete"),     DefaultEditorKit.deleteNextCharAction);
+	contextMenu.addSeparator();
+	addToContextMenu(tr("Select All"), DefaultEditorKit.selectAllAction);
+	contextMenu.addSeparator();
+	contextMenu.add(new JMenuItem(undoAction));
+	((JTextComponent)getEditor().getEditorComponent()).getDocument().addUndoableEditListener(undoAction);
+
+	addMouseListener(new MouseAdapter() {
+	    public void mousePressed(MouseEvent e) {
+		if (e.getButton() == MouseEvent.BUTTON3) {
+		    contextMenu.show(HistoryComboBox.this, e.getX(), e.getY());
+		}
+	    }
+	});
+    }
+
+    private void addToContextMenu(String label, String actionName) {
+	Action action = getActionMap().get(actionName);
+	if (action != null) {
+	    JMenuItem mi = new JMenuItem(action);
+	    mi.setText(label);
+	    contextMenu.add(mi);
+	}
+    }
+
+
+    class UndoAction extends AbstractAction implements UndoableEditListener {
+        public UndoAction() {
+            super(tr("Undo"));
+            setEnabled(false);
+        }
+          
+        public void undoableEditHappened(UndoableEditEvent e) {
+            undoManager.addEdit(e.getEdit());
+	    setEnabled(undoManager.canUndo());
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            try {
+                undoManager.undo();
+            } catch (CannotUndoException ex) {
+            }
+	    setEnabled(undoManager.canUndo());
+        }
+    }    
+    
     public String getText() {
         return ((JTextComponent)getEditor().getEditorComponent()).getText();
     }
Index: src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java
===================================================================
--- src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/widgets/DisableShortcutsOnFocusGainedTextField.java	(Arbeitskopie)
@@ -11,7 +11,6 @@
 import javax.swing.Action;
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
-import javax.swing.JTextField;
 import javax.swing.KeyStroke;
 import javax.swing.text.Document;
 
@@ -19,6 +18,7 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * A JTextField that disabled all JOSM shortcuts composed of a single key without modifier (except F1 to F12),
@@ -26,7 +26,7 @@
  * This allows to include text fields in toggle dialogs (needed for relation filter).
  * @since 5696
  */
-public class DisableShortcutsOnFocusGainedTextField extends JTextField implements FocusListener {
+public class DisableShortcutsOnFocusGainedTextField extends JosmTextField implements FocusListener {
 
     /**
      * Constructs a new <code>TextField</code>.  A default model is created,
Index: src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java
===================================================================
--- src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java	(Arbeitskopie)
@@ -13,9 +13,12 @@
 import javax.swing.ComboBoxModel;
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.JComboBox;
+import javax.swing.JPopupMenu;
 import javax.swing.JList;
 import javax.swing.plaf.basic.ComboPopup;
 
+
+
 /**
  * Class overriding each {@link JComboBox} in JOSM to control consistently the number of displayed items at once.<br/>
  * This is needed because of the default Java behaviour that may display the top-down list off the screen (see #7917).
@@ -23,7 +26,6 @@
  * @since 5429
  */
 public class JosmComboBox extends JComboBox {
-
     /**
      * The default prototype value used to compute the maximum number of elements to be displayed at once before 
      * displaying a scroll bar
@@ -105,8 +107,12 @@
     public JosmComboBox(Vector<?> items) {
         super(items);
         init(findPrototypeDisplayValue(items));
+
     }
     
+
+    
+    
     /**
      * Finds the prototype display value to use among the given possible candidates.
      * @param possibleValues The possible candidates that will be iterated.
Index: src/org/openstreetmap/josm/gui/widgets/AbstractTextComponentValidator.java
===================================================================
--- src/org/openstreetmap/josm/gui/widgets/AbstractTextComponentValidator.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/widgets/AbstractTextComponentValidator.java	(Arbeitskopie)
@@ -10,7 +10,6 @@
 import java.beans.PropertyChangeListener;
 
 import javax.swing.BorderFactory;
-import javax.swing.JTextField;
 import javax.swing.UIManager;
 import javax.swing.border.Border;
 import javax.swing.event.DocumentEvent;
@@ -19,6 +18,7 @@
 
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * This is an abstract class for a validator on a text component.
@@ -109,8 +109,8 @@
             tc.getDocument().addDocumentListener(this);
         }
         if (addActionListener) {
-            if (tc instanceof JTextField) {
-                JTextField tf = (JTextField)tc;
+            if (tc instanceof JosmTextField) {
+                JosmTextField tf = (JosmTextField)tc;
                 tf.addActionListener(this);
             }
         }
Index: src/org/openstreetmap/josm/gui/widgets/BoundingBoxSelectionPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/widgets/BoundingBoxSelectionPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/widgets/BoundingBoxSelectionPanel.java	(Arbeitskopie)
@@ -18,7 +18,6 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
-import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.JTextComponent;
@@ -31,6 +30,7 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  *
@@ -38,14 +38,14 @@
  */
 public class BoundingBoxSelectionPanel extends JPanel {
 
-    private JTextField[] tfLatLon = null;
-    private final JTextField tfOsmUrl = new JTextField();
+    private JosmTextField[] tfLatLon = null;
+    private final JosmTextField tfOsmUrl = new JosmTextField();
 
     protected void buildInputFields() {
-        tfLatLon = new JTextField[4];
+        tfLatLon = new JosmTextField[4];
         for(int i=0; i< 4; i++) {
-            tfLatLon[i] = new JTextField(11);
-            tfLatLon[i].setMinimumSize(new Dimension(100,new JTextField().getMinimumSize().height));
+            tfLatLon[i] = new JosmTextField(11);
+            tfLatLon[i].setMinimumSize(new Dimension(100,new JosmTextField().getMinimumSize().height));
             SelectAllOnFocusGainedDecorator.decorate(tfLatLon[i]);
         }
         LatitudeValidator.decorate(tfLatLon[0]);
Index: src/org/openstreetmap/josm/gui/widgets/JosmTextField.java
===================================================================
--- src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(Revision 0)
+++ src/org/openstreetmap/josm/gui/widgets/JosmTextField.java	(Revision 0)
@@ -0,0 +1,96 @@
+package org.openstreetmap.josm.gui.widgets;
+
+import java.awt.*;
+import java.awt.event.*;
+
+import javax.swing.*;
+import javax.swing.event.*;
+import javax.swing.text.*;
+import javax.swing.undo.*;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+public class JosmTextField extends JTextField {
+    private JPopupMenu contextMenu;
+    private UndoManager undoManager;
+
+    public JosmTextField(Document doc, String text, int columns){
+        super(doc, text, columns);
+        init();
+    }
+
+    public JosmTextField(String text, int columns){
+        super(text, columns);
+        init();
+    }
+
+    public JosmTextField(String text){
+        super(text);
+        init();
+    }
+
+    public JosmTextField(int columns){
+        super(columns);
+        init();
+    }
+    
+    public JosmTextField() {
+        super();
+        init();
+    }
+
+    private void init(){
+	undoManager = new UndoManager();
+	contextMenu = new JPopupMenu();
+	UndoAction undoAction = new UndoAction();
+	addToContextMenu(tr("Paste"),      DefaultEditorKit.pasteAction);
+	contextMenu.addSeparator();
+	addToContextMenu(tr("Cut"),        DefaultEditorKit.cutAction);
+	addToContextMenu(tr("Copy"),       DefaultEditorKit.copyAction);
+	addToContextMenu(tr("Delete"),     DefaultEditorKit.deleteNextCharAction);
+	contextMenu.addSeparator();
+	addToContextMenu(tr("Select All"), DefaultEditorKit.selectAllAction);
+	contextMenu.addSeparator();
+	contextMenu.add(new JMenuItem(undoAction));
+	getDocument().addUndoableEditListener(undoAction);
+
+	addMouseListener(new MouseAdapter() {
+	    public void mousePressed(MouseEvent e) {
+		if (e.getButton() == MouseEvent.BUTTON3) {
+		    contextMenu.show(JosmTextField.this, e.getX(), e.getY());
+		}
+	    }
+	});
+    }
+
+    private void addToContextMenu(String label, String actionName) {
+	Action action = getActionMap().get(actionName);
+	if (action != null) {
+	    JMenuItem mi = new JMenuItem(action);
+	    mi.setText(label);
+	    contextMenu.add(mi);
+	}
+    }
+
+
+    class UndoAction extends AbstractAction implements UndoableEditListener {
+        public UndoAction() {
+            super(tr("Undo"));
+            setEnabled(false);
+        }
+          
+        public void undoableEditHappened(UndoableEditEvent e) {
+            undoManager.addEdit(e.getEdit());
+	    setEnabled(undoManager.canUndo());
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            try {
+                undoManager.undo();
+            } catch (CannotUndoException ex) {
+            }
+	    setEnabled(undoManager.canUndo());
+        }
+    }    
+
+}
Index: src/org/openstreetmap/josm/gui/io/FilenameCellEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/io/FilenameCellEditor.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/io/FilenameCellEditor.java	(Arbeitskopie)
@@ -17,12 +17,12 @@
 import javax.swing.JButton;
 import javax.swing.JPanel;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.event.CellEditorListener;
 import javax.swing.event.ChangeEvent;
 import javax.swing.table.TableCellEditor;
 
 import org.openstreetmap.josm.actions.SaveActionBase;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * This is a {@link TableCellEditor} for filenames. It provides a text input field and
@@ -31,7 +31,7 @@
  *
  */
 class FilenameCellEditor extends JPanel implements TableCellEditor {
-    private JTextField tfFileName;
+    private JosmTextField tfFileName;
     private CopyOnWriteArrayList<CellEditorListener> listeners;
     private File value;
 
@@ -46,7 +46,7 @@
         gc.fill = GridBagConstraints.BOTH;
         gc.weightx = 1.0;
         gc.weighty = 1.0;
-        add(tfFileName = new JTextField(), gc);
+        add(tfFileName = new JosmTextField(), gc);
 
         gc.gridx = 1;
         gc.gridy = 0;
Index: src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java	(Arbeitskopie)
@@ -24,7 +24,6 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
-import javax.swing.JTextField;
 import javax.swing.UIManager;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
@@ -33,6 +32,7 @@
 import org.openstreetmap.josm.gui.JMultilineLabel;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * UploadStrategySelectionPanel is a panel for selecting an upload strategy.
@@ -55,7 +55,7 @@
     private Map<UploadStrategy, JRadioButton> rbStrategy;
     private Map<UploadStrategy, JLabel> lblNumRequests;
     private Map<UploadStrategy, JMultilineLabel> lblStrategies;
-    private JTextField tfChunkSize;
+    private JosmTextField tfChunkSize;
     private JPanel pnlMultiChangesetPolicyPanel;
     private JRadioButton rbFillOneChangeset;
     private JRadioButton rbUseMultipleChangesets;
@@ -135,7 +135,7 @@
         gc.weightx = 0.0;
         gc.weighty = 0.0;
         gc.gridwidth = 1;
-        pnl.add(tfChunkSize = new JTextField(4), gc);
+        pnl.add(tfChunkSize = new JosmTextField(4), gc);
         gc.gridx = 3;
         gc.gridy = 2;
         gc.weightx = 1.0;
@@ -382,8 +382,8 @@
     static class TextFieldFocusHandler implements FocusListener {
         public void focusGained(FocusEvent e) {
             Component c = e.getComponent();
-            if (c instanceof JTextField) {
-                JTextField tf = (JTextField)c;
+            if (c instanceof JosmTextField) {
+                JosmTextField tf = (JosmTextField)c;
                 tf.selectAll();
             }
         }
@@ -391,13 +391,13 @@
     }
 
     class ChunkSizeInputVerifier implements DocumentListener, PropertyChangeListener {
-        protected void setErrorFeedback(JTextField tf, String message) {
+        protected void setErrorFeedback(JosmTextField tf, String message) {
             tf.setBorder(BorderFactory.createLineBorder(Color.RED, 1));
             tf.setToolTipText(message);
             tf.setBackground(BG_COLOR_ERROR);
         }
 
-        protected void clearErrorFeedback(JTextField tf, String message) {
+        protected void clearErrorFeedback(JosmTextField tf, String message) {
             tf.setBorder(UIManager.getBorder("TextField.border"));
             tf.setToolTipText(message);
             tf.setBackground(UIManager.getColor("TextField.background"));
Index: src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java
===================================================================
--- src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/io/LayerNameAndFilePathTableCell.java	(Arbeitskopie)
@@ -21,7 +21,6 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.event.CellEditorListener;
 import javax.swing.event.ChangeEvent;
 import javax.swing.table.TableCellEditor;
@@ -29,8 +28,8 @@
 
 import org.openstreetmap.josm.actions.SaveActionBase;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
-
 class LayerNameAndFilePathTableCell extends JPanel implements TableCellRenderer, TableCellEditor {
     private final static Color colorError = new Color(255,197,197);
     private final static String separator = System.getProperty("file.separator");
@@ -38,7 +37,7 @@
 
     private final JLabel lblLayerName = new JLabel();
     private final JLabel lblFilename = new JLabel("");
-    private final JTextField tfFilename = new JTextField();
+    private final JosmTextField tfFilename = new JosmTextField();
     private final JButton btnFileChooser = new JButton(new LaunchFileChooserAction());
 
     private final static GBC defaultCellStyle = GBC.eol().fill(GBC.HORIZONTAL).insets(2, 0, 2, 0);
Index: src/org/openstreetmap/josm/gui/oauth/AdvancedOAuthPropertiesPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/oauth/AdvancedOAuthPropertiesPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/oauth/AdvancedOAuthPropertiesPanel.java	(Arbeitskopie)
@@ -14,7 +14,6 @@
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.oauth.OAuthParameters;
@@ -25,6 +24,7 @@
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * Panel allowing the user to setup advanced OAuth parameters:
@@ -40,11 +40,11 @@
 public class AdvancedOAuthPropertiesPanel extends VerticallyScrollablePanel {
 
     private JCheckBox cbUseDefaults;
-    private JTextField tfConsumerKey;
-    private JTextField tfConsumerSecret;
-    private JTextField tfRequestTokenURL;
-    private JTextField tfAccessTokenURL;
-    private JTextField tfAuthoriseURL;
+    private JosmTextField tfConsumerKey;
+    private JosmTextField tfConsumerSecret;
+    private JosmTextField tfRequestTokenURL;
+    private JosmTextField tfAccessTokenURL;
+    private JosmTextField tfAuthoriseURL;
     private UseDefaultItemListener ilUseDefault;
     private String apiUrl;
 
@@ -69,7 +69,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfConsumerKey = new JTextField(), gc);
+        add(tfConsumerKey = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfConsumerKey);
 
         // -- consumer secret
@@ -80,7 +80,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfConsumerSecret = new JTextField(), gc);
+        add(tfConsumerSecret = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfConsumerSecret);
 
         // -- request token URL
@@ -91,7 +91,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfRequestTokenURL = new JTextField(), gc);
+        add(tfRequestTokenURL = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfRequestTokenURL);
 
         // -- access token URL
@@ -102,7 +102,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfAccessTokenURL = new JTextField(), gc);
+        add(tfAccessTokenURL = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfAccessTokenURL);
 
 
@@ -114,7 +114,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfAuthoriseURL = new JTextField(), gc);
+        add(tfAuthoriseURL = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfAuthoriseURL);
 
         cbUseDefaults.addItemListener(ilUseDefault = new UseDefaultItemListener());
@@ -176,7 +176,7 @@
 
     protected void setChildComponentsEnabled(boolean enabled){
         for (Component c: getComponents()) {
-            if (c instanceof JTextField || c instanceof JLabel) {
+            if (c instanceof JosmTextField || c instanceof JLabel) {
                 c.setEnabled(enabled);
             }
         }
Index: src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
===================================================================
--- src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java	(Arbeitskopie)
@@ -22,7 +22,6 @@
 import javax.swing.JPanel;
 import javax.swing.JPasswordField;
 import javax.swing.JTabbedPane;
-import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.JTextComponent;
@@ -42,6 +41,7 @@
 import org.openstreetmap.josm.gui.widgets.JosmPasswordField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.io.auth.CredentialsAgent;
@@ -58,7 +58,7 @@
  */
 public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
 
-    private JTextField tfUserName;
+    private JosmTextField tfUserName;
     private JPasswordField tfPassword;
     private UserNameValidator valUserName;
     private PasswordValidator valPassword;
@@ -115,7 +115,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfUserName = new JTextField(), gc);
+        pnl.add(tfUserName = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfUserName);
         valUserName = new UserNameValidator(tfUserName);
         valUserName.validate();
Index: src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
===================================================================
--- src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java	(Arbeitskopie)
@@ -19,7 +19,6 @@
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
@@ -30,6 +29,7 @@
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.OpenBrowser;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * This is the UI for running a semic-automic authorisation procedure.
@@ -206,7 +206,7 @@
      */
     private class RetrieveAccessTokenPanel extends JPanel {
 
-        private JTextField tfAuthoriseUrl;
+        private JosmTextField tfAuthoriseUrl;
 
         protected JPanel buildTitlePanel() {
             JPanel pnl = new JPanel(new BorderLayout());
@@ -245,7 +245,7 @@
 
             gc.gridx = 1;
             gc.weightx = 1.0;
-            pnl.add(tfAuthoriseUrl = new JTextField(), gc);
+            pnl.add(tfAuthoriseUrl = new JosmTextField(), gc);
             tfAuthoriseUrl.setEditable(false);
 
             return pnl;
Index: src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java
===================================================================
--- src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/oauth/ManualAuthorizationUI.java	(Arbeitskopie)
@@ -18,7 +18,6 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
-import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.JTextComponent;
@@ -31,6 +30,7 @@
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * This is an UI which supports a JOSM user to get an OAuth Access Token in a fully
@@ -40,9 +40,9 @@
  */
 public class ManualAuthorizationUI extends AbstractAuthorizationUI{
 
-    private JTextField tfAccessTokenKey;
+    private JosmTextField tfAccessTokenKey;
     private AccessTokenKeyValidator valAccessTokenKey;
-    private JTextField tfAccessTokenSecret;
+    private JosmTextField tfAccessTokenSecret;
     private AccessTokenSecretValidator valAccessTokenSecret;
     private JCheckBox cbSaveToPreferences;
     private HtmlPanel pnlMessage;
@@ -75,7 +75,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfAccessTokenKey = new JTextField(), gc);
+        pnl.add(tfAccessTokenKey = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfAccessTokenKey);
         valAccessTokenKey = new AccessTokenKeyValidator(tfAccessTokenKey);
         valAccessTokenKey.validate();
@@ -89,7 +89,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfAccessTokenSecret = new JTextField(), gc);
+        pnl.add(tfAccessTokenSecret = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfAccessTokenSecret);
         valAccessTokenSecret = new AccessTokenSecretValidator(tfAccessTokenSecret);
         valAccessTokenSecret.validate();
Index: src/org/openstreetmap/josm/gui/oauth/AccessTokenInfoPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/oauth/AccessTokenInfoPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/oauth/AccessTokenInfoPanel.java	(Arbeitskopie)
@@ -10,10 +10,10 @@
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * Displays the key and the secret of an OAuth Access Token.
@@ -21,8 +21,8 @@
  */
 public class AccessTokenInfoPanel extends JPanel {
 
-    private JTextField tfAccessTokenKey;
-    private JTextField tfAccessTokenSecret;
+    private JosmTextField tfAccessTokenKey;
+    private JosmTextField tfAccessTokenSecret;
     private JCheckBox cbSaveAccessTokenInPreferences;
 
     protected void build() {
@@ -38,7 +38,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfAccessTokenKey = new JTextField(), gc);
+        add(tfAccessTokenKey = new JosmTextField(), gc);
         tfAccessTokenKey.setEditable(false);
 
         // the access token secret
@@ -50,7 +50,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        add(tfAccessTokenSecret = new JTextField(), gc);
+        add(tfAccessTokenSecret = new JosmTextField(), gc);
         tfAccessTokenSecret.setEditable(false);
 
         // the checkbox
Index: src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/oauth/FullyAutomaticPropertiesPanel.java	(Arbeitskopie)
@@ -12,16 +12,16 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JPasswordField;
-import javax.swing.JTextField;
 import javax.swing.text.JTextComponent;
 
 import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
 import org.openstreetmap.josm.gui.widgets.JosmPasswordField;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class FullyAutomaticPropertiesPanel extends JPanel {
 
-    private JTextField tfUserName;
+    private JosmTextField tfUserName;
     private JPasswordField tfPassword;
     private UserNameValidator valUserName;
 
@@ -42,7 +42,7 @@
 
         gc.gridx = 1;
         gc.weightx = 1.0;
-        pnl.add(tfUserName = new JTextField(), gc);
+        pnl.add(tfUserName = new JosmTextField(), gc);
         SelectAllOnFocusGainedDecorator.decorate(tfUserName);
         valUserName = new UserNameValidator(tfUserName);
         valUserName.validate();
Index: src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
===================================================================
--- src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java	(Arbeitskopie)
@@ -32,7 +32,6 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JSpinner;
-import javax.swing.JTextField;
 import javax.swing.KeyStroke;
 import javax.swing.SpinnerNumberModel;
 import javax.swing.event.ChangeEvent;
@@ -49,6 +48,7 @@
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.SelectAllOnFocusGainedDecorator;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * TileSelectionBBoxChooser allows to select a bounding box (i.e. for downloading) based
@@ -209,10 +209,10 @@
     static private class TileGridInputPanel extends JPanel implements PropertyChangeListener{
         static public final String TILE_BOUNDS_PROP = TileGridInputPanel.class.getName() + ".tileBounds";
 
-        private JTextField tfMaxY;
-        private JTextField tfMinY;
-        private JTextField tfMaxX;
-        private JTextField tfMinX;
+        private JosmTextField tfMaxY;
+        private JosmTextField tfMinY;
+        private JosmTextField tfMaxX;
+        private JosmTextField tfMinX;
         private TileCoordinateValidator valMaxY;
         private TileCoordinateValidator valMinY;
         private TileCoordinateValidator valMaxX;
@@ -266,7 +266,7 @@
 
             gc.gridx = 1;
             gc.weightx = 0.5;
-            pnl.add(tfMinX = new JTextField(), gc);
+            pnl.add(tfMinX = new JosmTextField(), gc);
             valMinX = new TileCoordinateValidator(tfMinX);
             SelectAllOnFocusGainedDecorator.decorate(tfMinX);
             tfMinX.addActionListener(tileBoundsBuilder);
@@ -274,7 +274,7 @@
 
             gc.gridx = 2;
             gc.weightx = 0.5;
-            pnl.add(tfMaxX = new JTextField(), gc);
+            pnl.add(tfMaxX = new JosmTextField(), gc);
             valMaxX = new TileCoordinateValidator(tfMaxX);
             SelectAllOnFocusGainedDecorator.decorate(tfMaxX);
             tfMaxX.addActionListener(tileBoundsBuilder);
@@ -287,7 +287,7 @@
 
             gc.gridx = 1;
             gc.weightx = 0.5;
-            pnl.add(tfMinY = new JTextField(), gc);
+            pnl.add(tfMinY = new JosmTextField(), gc);
             valMinY = new TileCoordinateValidator(tfMinY);
             SelectAllOnFocusGainedDecorator.decorate(tfMinY);
             tfMinY.addActionListener(tileBoundsBuilder);
@@ -295,7 +295,7 @@
 
             gc.gridx = 2;
             gc.weightx = 0.5;
-            pnl.add(tfMaxY = new JTextField(), gc);
+            pnl.add(tfMaxY = new JosmTextField(), gc);
             valMaxY = new TileCoordinateValidator(tfMaxY);
             SelectAllOnFocusGainedDecorator.decorate(tfMaxY);
             tfMaxY.addActionListener(tileBoundsBuilder);
@@ -427,7 +427,7 @@
 
         static public final String TILE_BOUNDS_PROP = TileAddressInputPanel.class.getName() + ".tileBounds";
 
-        private JTextField tfTileAddress;
+        private JosmTextField tfTileAddress;
         private TileAddressValidator valTileAddress;
 
         protected JPanel buildTextPanel() {
@@ -451,7 +451,7 @@
 
             gc.weightx = 1.0;
             gc.gridx = 1;
-            pnl.add(tfTileAddress = new JTextField(), gc);
+            pnl.add(tfTileAddress = new JosmTextField(), gc);
             valTileAddress = new TileAddressValidator(tfTileAddress);
             SelectAllOnFocusGainedDecorator.decorate(tfTileAddress);
 
Index: src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellEditor.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellEditor.java	(Arbeitskopie)
@@ -7,21 +7,22 @@
 
 import javax.swing.AbstractCellEditor;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.table.TableCellEditor;
 
 import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
+
 /**
  * {@link TableCellEditor} for the role column in a table for {@link RelationMember}s.
  *
  */
 public class RelationMemberTableCellEditor extends AbstractCellEditor implements TableCellEditor{
 
-    private final JTextField editor;
+    private final JosmTextField editor;
 
     public RelationMemberTableCellEditor() {
-        editor = new JTextField();
+        editor = new JosmTextField();
         editor.addFocusListener(
                 new FocusAdapter() {
                     @Override
Index: src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java
===================================================================
--- src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java	(Arbeitskopie)
@@ -23,7 +23,6 @@
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.JTextArea;
-import javax.swing.JTextField;
 import javax.swing.UIManager;
 import javax.swing.border.Border;
 import javax.swing.event.DocumentEvent;
@@ -37,6 +36,7 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * Bounding box selector.
@@ -48,7 +48,7 @@
  */
 public class BoundingBoxSelection implements DownloadSelection {
 
-    private JTextField[] latlon = null;
+    private JosmTextField[] latlon = null;
     private final JTextArea tfOsmUrl = new JTextArea();
     private final JTextArea showUrl = new JTextArea();
     private DownloadDialog parent;
@@ -62,10 +62,10 @@
     }
 
     protected void buildDownloadAreaInputFields() {
-        latlon = new JTextField[4];
+        latlon = new JosmTextField[4];
         for(int i=0; i< 4; i++) {
-            latlon[i] = new JTextField(11);
-            latlon[i].setMinimumSize(new Dimension(100,new JTextField().getMinimumSize().height));
+            latlon[i] = new JosmTextField(11);
+            latlon[i].setMinimumSize(new Dimension(100,new JosmTextField().getMinimumSize().height));
             latlon[i].addFocusListener(new SelectAllOnFocusHandler(latlon[i]));
         }
         LatValueChecker latChecker = new LatValueChecker(latlon[0]);
@@ -190,7 +190,7 @@
         latlon[1].setText(area.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES));
         latlon[2].setText(area.getMax().latToString(CoordinateFormat.DECIMAL_DEGREES));
         latlon[3].setText(area.getMax().lonToString(CoordinateFormat.DECIMAL_DEGREES));
-        for (JTextField tf: latlon) {
+        for (JosmTextField tf: latlon) {
             resetErrorMessage(tf);
         }
     }
@@ -202,20 +202,20 @@
 
     private Border errorBorder = BorderFactory.createLineBorder(Color.RED, 1);
 
-    protected void setErrorMessage(JTextField tf, String msg) {
+    protected void setErrorMessage(JosmTextField tf, String msg) {
         tf.setBorder(errorBorder);
         tf.setToolTipText(msg);
     }
 
-    protected void resetErrorMessage(JTextField tf) {
+    protected void resetErrorMessage(JosmTextField tf) {
         tf.setBorder(UIManager.getBorder("TextField.border"));
         tf.setToolTipText("");
     }
 
     class LatValueChecker extends FocusAdapter implements ActionListener{
-        private JTextField tfLatValue;
+        private JosmTextField tfLatValue;
 
-        public LatValueChecker(JTextField tfLatValue) {
+        public LatValueChecker(JosmTextField tfLatValue) {
             this.tfLatValue = tfLatValue;
         }
 
@@ -245,9 +245,9 @@
     }
 
     class LonValueChecker extends FocusAdapter implements ActionListener {
-        private JTextField tfLonValue;
+        private JosmTextField tfLonValue;
 
-        public LonValueChecker(JTextField tfLonValue) {
+        public LonValueChecker(JosmTextField tfLonValue) {
             this.tfLonValue = tfLonValue;
         }
 
Index: src/org/openstreetmap/josm/gui/download/PlaceSelection.java
===================================================================
--- src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(Arbeitskopie)
@@ -60,6 +60,7 @@
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class PlaceSelection implements DownloadSelection {
     private static final String HISTORY_KEY = "download.places.history";
@@ -72,7 +73,8 @@
     private DownloadDialog parent;
     private final static Server[] servers = new Server[]{
         new Server("Nominatim","http://nominatim.openstreetmap.org/search?format=xml&q=",tr("Class Type"),tr("Bounds")),
-        //new Server("Namefinder","http://gazetteer.openstreetmap.org/namefinder/search.xml?find=",tr("Near"),trc("placeselection", "Zoom"))
+        new Server("MapQuest","http://open.mapquestapi.com/nominatim/v1/search.php?format=xml&limit=50&q=",tr("Class Type"),tr("Bounds")),
+        //new Server("Namefinder","http://gazetteer.openstreetmap.org/namefinder/search.xml?find=",tr("Near"),tr("placeselection", "Zoom")),
     };
     private final JosmComboBox server = new JosmComboBox(servers);
 
Index: src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java	(Arbeitskopie)
@@ -21,7 +21,6 @@
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 import javax.swing.KeyStroke;
 import javax.swing.border.EtchedBorder;
 import javax.swing.plaf.basic.BasicComboBoxEditor;
@@ -35,6 +34,7 @@
 import org.openstreetmap.josm.gui.widgets.OsmIdTextField;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitiveTypesComboBox;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * Dialog prompt to user to let him choose OSM primitives to download by specifying their type and IDs
@@ -81,7 +81,7 @@
         
         cbId.setEditor(new BasicComboBoxEditor() {
             @Override
-            protected JTextField createEditorComponent() {
+            protected JosmTextField createEditorComponent() {
                 return tfId;
             }
         });
Index: src/org/openstreetmap/josm/gui/MainApplet.java
===================================================================
--- src/org/openstreetmap/josm/gui/MainApplet.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/MainApplet.java	(Arbeitskopie)
@@ -22,7 +22,6 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JPasswordField;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -32,6 +31,7 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class MainApplet extends JApplet {
 
@@ -113,7 +113,7 @@
                 JPanel p = new JPanel(new GridBagLayout());
                 p.add(new JLabel(tr(e.realm)), GBC.eol().fill(GBC.HORIZONTAL));
                 p.add(new JLabel(tr("Username")), GBC.std().insets(0,0,20,0));
-                JTextField user = new JTextField(username == null ? "" : username);
+                JosmTextField user = new JosmTextField(username == null ? "" : username);
                 p.add(user, GBC.eol().fill(GBC.HORIZONTAL));
                 p.add(new JLabel(tr("Password")), GBC.std().insets(0,0,20,0));
                 JPasswordField pass = new JosmPasswordField(password == null ? "" : password);
Index: src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(Arbeitskopie)
@@ -52,7 +52,6 @@
 import javax.swing.JScrollPane;
 import javax.swing.JSeparator;
 import javax.swing.JSlider;
-import javax.swing.JTextField;
 import javax.swing.ListSelectionModel;
 import javax.swing.SwingConstants;
 import javax.swing.event.ChangeEvent;
@@ -80,6 +79,7 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.PrimaryDateParser;
 import org.xml.sax.SAXException;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /** This class displays the window to select the GPX file and the offset (timezone + delta).
  * Then it correlates the images of the layer with that GPX file.
@@ -118,8 +118,8 @@
     Vector<GpxDataWrapper> gpxLst = new Vector<GpxDataWrapper>();
     JPanel outerPanel;
     JosmComboBox cbGpx;
-    JTextField tfTimezone;
-    JTextField tfOffset;
+    JosmTextField tfTimezone;
+    JosmTextField tfOffset;
     JCheckBox cbExifImg;
     JCheckBox cbTaggedImg;
     JCheckBox cbShowThumbs;
@@ -223,7 +223,7 @@
     private class SetOffsetActionListener implements ActionListener {
         JPanel panel;
         JLabel lbExifTime;
-        JTextField tfGpsTime;
+        JosmTextField tfGpsTime;
         JosmComboBox cbTimezones;
         ImageDisplay imgDisp;
         JList imgList;
@@ -268,7 +268,7 @@
             gc.anchor = GridBagConstraints.WEST;
             panelTf.add(new JLabel(tr("Gps time (read from the above photo): ")), gc);
 
-            tfGpsTime = new JTextField(12);
+            tfGpsTime = new JosmTextField(12);
             tfGpsTime.setEnabled(false);
             tfGpsTime.setMinimumSize(new Dimension(155, tfGpsTime.getMinimumSize().height));
             gc.gridx = 1;
@@ -494,7 +494,7 @@
             timezone = 0;
         }
 
-        tfTimezone = new JTextField(10);
+        tfTimezone = new JosmTextField(10);
         tfTimezone.setText(formatTimezone(timezone));
 
         try {
@@ -504,7 +504,7 @@
         }
         delta = delta / 1000;  // milliseconds -> seconds
 
-        tfOffset = new JTextField(10);
+        tfOffset = new JosmTextField(10);
         tfOffset.setText(Long.toString(delta));
 
         JButton buttonViewGpsPhoto = new JButton(tr("<html>Use photo of an accurate clock,<br>"
Index: src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/tagging/TaggingPresetSearchDialog.java	(Arbeitskopie)
@@ -30,7 +30,6 @@
 import javax.swing.JList;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
-import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 
@@ -49,7 +48,9 @@
 import org.openstreetmap.josm.gui.tagging.TaggingPreset.PresetType;
 import org.openstreetmap.josm.gui.tagging.TaggingPreset.Role;
 import org.openstreetmap.josm.gui.tagging.TaggingPreset.Roles;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
+
 public class TaggingPresetSearchDialog extends ExtendedDialog implements SelectionChangedListener {
 
     private static final int CLASSIFICATION_IN_FAVORITES = 300;
@@ -191,7 +192,7 @@
         return instance;
     }
 
-    private JTextField edSearchText;
+    private JosmTextField edSearchText;
     private JList lsResult;
     private JCheckBox ckOnlyApplicable;
     private JCheckBox ckSearchInTags;
@@ -238,7 +239,7 @@
         JPanel content = new JPanel();
         content.setLayout(new BorderLayout());
 
-        edSearchText = new JTextField();
+        edSearchText = new JosmTextField();
         edSearchText.getDocument().addDocumentListener(new DocumentListener() {
 
             @Override
Index: src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java	(Arbeitskopie)
@@ -10,7 +10,6 @@
 
 import javax.swing.ComboBoxEditor;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.event.CellEditorListener;
 import javax.swing.table.TableCellEditor;
 import javax.swing.text.AttributeSet;
@@ -21,7 +20,9 @@
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.util.TableCellEditorSupport;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
+
 /**
  * AutoCompletingTextField is an text field with autocompletion behaviour. It
  * can be used as table cell editor in {@link JTable}s.
@@ -31,7 +32,7 @@
  *
  *
  */
-public class AutoCompletingTextField extends JTextField implements ComboBoxEditor, TableCellEditor {
+public class AutoCompletingTextField extends JosmTextField implements ComboBoxEditor, TableCellEditor {
 
     private Integer maxChars;
     
Index: src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(Arbeitskopie)
@@ -45,7 +45,6 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
-import javax.swing.JTextField;
 import javax.swing.JToggleButton;
 import javax.swing.ListCellRenderer;
 import javax.swing.ListModel;
@@ -91,7 +90,9 @@
 import org.openstreetmap.josm.tools.template_engine.TemplateEntry;
 import org.openstreetmap.josm.tools.template_engine.TemplateParser;
 import org.xml.sax.SAXException;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
+
 /**
  * This class read encapsulate one tagging preset. A class method can
  * read in all predefined presets, either shipped with JOSM or that are
@@ -521,8 +522,8 @@
         private static String getValue(Component comp) {
             if (comp instanceof JosmComboBox) {
                 return ((JosmComboBox) comp).getEditor().getItem().toString();
-            } else if (comp instanceof JTextField) {
-                return ((JTextField) comp).getText();
+            } else if (comp instanceof JosmTextField) {
+                return ((JosmTextField) comp).getText();
             } else if (comp instanceof JPanel) {
                 return getValue(((JPanel)comp).getComponent(0));
             } else {
Index: src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java	(Arbeitskopie)
@@ -24,7 +24,6 @@
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
 import javax.swing.JScrollPane;
-import javax.swing.JTextField;
 import javax.swing.text.JTextComponent;
 
 import org.openstreetmap.josm.Main;
@@ -38,7 +37,9 @@
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
 import org.openstreetmap.josm.io.ChangesetQuery;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
+
 /**
  * This panel allows to specify a changeset query
  *
@@ -374,9 +375,9 @@
         private JRadioButton rbRestrictToMyself;
         private JRadioButton rbRestrictToUid;
         private JRadioButton rbRestrictToUserName;
-        private JTextField tfUid;
+        private JosmTextField tfUid;
         private UidInputFieldValidator valUid;
-        private JTextField tfUserName;
+        private JosmTextField tfUserName;
         private UserNameInputValidator valUserName;
         private JMultilineLabel lblRestrictedToMyself;
 
@@ -389,7 +390,7 @@
             pnl.add(new JLabel(tr("User ID:")), gc);
 
             gc.gridx = 1;
-            pnl.add(tfUid = new JTextField(10),gc);
+            pnl.add(tfUid = new JosmTextField(10),gc);
             SelectAllOnFocusGainedDecorator.decorate(tfUid);
             valUid = UidInputFieldValidator.decorate(tfUid);
 
@@ -409,7 +410,7 @@
             pnl.add(new JLabel(tr("User name:")), gc);
 
             gc.gridx = 1;
-            pnl.add(tfUserName = new JTextField(10),gc);
+            pnl.add(tfUserName = new JosmTextField(10),gc);
             SelectAllOnFocusGainedDecorator.decorate(tfUserName);
             valUserName = UserNameInputValidator.decorate(tfUserName);
 
@@ -634,17 +635,17 @@
 
         private JRadioButton rbClosedAfter;
         private JRadioButton rbClosedAfterAndCreatedBefore;
-        private JTextField tfClosedAfterDate1;
+        private JosmTextField tfClosedAfterDate1;
         private DateValidator valClosedAfterDate1;
-        private JTextField tfClosedAfterTime1;
+        private JosmTextField tfClosedAfterTime1;
         private TimeValidator valClosedAfterTime1;
-        private JTextField tfClosedAfterDate2;
+        private JosmTextField tfClosedAfterDate2;
         private DateValidator valClosedAfterDate2;
-        private JTextField tfClosedAfterTime2;
+        private JosmTextField tfClosedAfterTime2;
         private TimeValidator valClosedAfterTime2;
-        private JTextField tfCreatedBeforeDate;
+        private JosmTextField tfCreatedBeforeDate;
         private DateValidator valCreatedBeforeDate;
-        private JTextField tfCreatedBeforeTime;
+        private JosmTextField tfCreatedBeforeTime;
         private TimeValidator valCreatedBeforeTime;
 
         protected JPanel buildClosedAfterInputPanel() {
@@ -657,7 +658,7 @@
 
             gc.gridx = 1;
             gc.weightx = 0.7;
-            pnl.add(tfClosedAfterDate1 = new JTextField(),gc);
+            pnl.add(tfClosedAfterDate1 = new JosmTextField(),gc);
             SelectAllOnFocusGainedDecorator.decorate(tfClosedAfterDate1);
             valClosedAfterDate1 = DateValidator.decorate(tfClosedAfterDate1);
             tfClosedAfterDate1.setToolTipText(valClosedAfterDate1.getStandardTooltipTextAsHtml());
@@ -668,7 +669,7 @@
 
             gc.gridx = 3;
             gc.weightx = 0.3;
-            pnl.add(tfClosedAfterTime1 = new JTextField(),gc);
+            pnl.add(tfClosedAfterTime1 = new JosmTextField(),gc);
             SelectAllOnFocusGainedDecorator.decorate(tfClosedAfterTime1);
             valClosedAfterTime1 = TimeValidator.decorate(tfClosedAfterTime1);
             tfClosedAfterTime1.setToolTipText(valClosedAfterTime1.getStandardTooltipTextAsHtml());
@@ -691,7 +692,7 @@
 
             gc.gridx = 2;
             gc.weightx = 0.7;
-            pnl.add(tfClosedAfterDate2 = new JTextField(),gc);
+            pnl.add(tfClosedAfterDate2 = new JosmTextField(),gc);
             SelectAllOnFocusGainedDecorator.decorate(tfClosedAfterDate2);
             valClosedAfterDate2 = DateValidator.decorate(tfClosedAfterDate2);
             tfClosedAfterDate2.setToolTipText(valClosedAfterDate2.getStandardTooltipTextAsHtml());
@@ -701,7 +702,7 @@
 
             gc.gridx = 4;
             gc.weightx = 0.3;
-            pnl.add(tfClosedAfterTime2 = new JTextField(),gc);
+            pnl.add(tfClosedAfterTime2 = new JosmTextField(),gc);
             SelectAllOnFocusGainedDecorator.decorate(tfClosedAfterTime2);
             valClosedAfterTime2 = TimeValidator.decorate(tfClosedAfterTime2);
             tfClosedAfterTime2.setToolTipText(valClosedAfterTime2.getStandardTooltipTextAsHtml());
@@ -721,7 +722,7 @@
 
             gc.gridx = 2;
             gc.weightx = 0.7;
-            pnl.add(tfCreatedBeforeDate = new JTextField(),gc);
+            pnl.add(tfCreatedBeforeDate = new JosmTextField(),gc);
             SelectAllOnFocusGainedDecorator.decorate(tfCreatedBeforeDate);
             valCreatedBeforeDate = DateValidator.decorate(tfCreatedBeforeDate);
             tfCreatedBeforeDate.setToolTipText(valCreatedBeforeDate.getStandardTooltipTextAsHtml());
@@ -732,7 +733,7 @@
 
             gc.gridx = 4;
             gc.weightx = 0.3;
-            pnl.add(tfCreatedBeforeTime = new JTextField(),gc);
+            pnl.add(tfCreatedBeforeTime = new JosmTextField(),gc);
             SelectAllOnFocusGainedDecorator.decorate(tfCreatedBeforeTime);
             valCreatedBeforeTime = TimeValidator.decorate(tfCreatedBeforeTime);
             tfCreatedBeforeTime.setToolTipText(valCreatedBeforeDate.getStandardTooltipTextAsHtml());
Index: src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java	(Arbeitskopie)
@@ -15,7 +15,6 @@
 import javax.swing.BorderFactory;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.event.HyperlinkEvent;
@@ -26,11 +25,12 @@
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.ChangesetQuery.ChangesetQueryUrlException;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 
 public class UrlBasedQueryPanel extends JPanel {
 
-    private JTextField tfUrl;
+    private JosmTextField tfUrl;
     private JLabel lblValid;
 
     protected JPanel buildURLPanel() {
@@ -44,7 +44,7 @@
         gc.gridx = 1;
         gc.weightx = 1.0;
         gc.fill = GridBagConstraints.HORIZONTAL;
-        pnl.add(tfUrl = new JTextField(), gc);
+        pnl.add(tfUrl = new JosmTextField(), gc);
         tfUrl.getDocument().addDocumentListener(new ChangetQueryUrlValidator());
         tfUrl.addFocusListener(
                 new FocusAdapter() {
Index: src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java	(Arbeitskopie)
@@ -26,7 +26,6 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JTextArea;
-import javax.swing.JTextField;
 import javax.swing.JToolBar;
 
 import org.openstreetmap.josm.Main;
@@ -40,7 +39,9 @@
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
+
 /**
  * This panel displays the properties of the currently selected changeset in the
  * {@link ChangesetCacheManager}.
@@ -48,12 +49,12 @@
  */
 public class ChangesetDetailPanel extends JPanel implements PropertyChangeListener{
 
-    private JTextField tfID;
+    private JosmTextField tfID;
     private JTextArea taComment;
-    private JTextField tfOpen;
-    private JTextField tfUser;
-    private JTextField tfCreatedOn;
-    private JTextField tfClosedOn;
+    private JosmTextField tfOpen;
+    private JosmTextField tfUser;
+    private JosmTextField tfCreatedOn;
+    private JosmTextField tfClosedOn;
     private DonwloadChangesetContentAction actDownloadChangesetContent;
     private UpdateChangesetAction actUpdateChangesets;
     private RemoveFromCacheAction actRemoveFromCache;
@@ -117,7 +118,7 @@
         gc.fill = GridBagConstraints.HORIZONTAL;
         gc.weightx = 0.0;
         gc.gridx = 1;
-        pnl.add(tfID = new JTextField(10), gc);
+        pnl.add(tfID = new JosmTextField(10), gc);
         tfID.setEditable(false);
 
         //-- comment
@@ -144,7 +145,7 @@
 
         gc.fill = GridBagConstraints.HORIZONTAL;
         gc.gridx = 1;
-        pnl.add(tfOpen= new JTextField(10), gc);
+        pnl.add(tfOpen= new JosmTextField(10), gc);
         tfOpen.setEditable(false);
 
         //-- Created by:
@@ -157,7 +158,7 @@
         gc.fill = GridBagConstraints.HORIZONTAL;
         gc.weightx = 1.0;
         gc.gridx = 1;
-        pnl.add(tfUser= new JTextField(""), gc);
+        pnl.add(tfUser= new JosmTextField(""), gc);
         tfUser.setEditable(false);
 
         //-- Created On:
@@ -169,7 +170,7 @@
 
         gc.fill = GridBagConstraints.HORIZONTAL;
         gc.gridx = 1;
-        pnl.add(tfCreatedOn= new JTextField(20), gc);
+        pnl.add(tfCreatedOn= new JosmTextField(20), gc);
         tfCreatedOn.setEditable(false);
 
         //-- Closed On:
@@ -181,7 +182,7 @@
 
         gc.fill = GridBagConstraints.HORIZONTAL;
         gc.gridx = 1;
-        pnl.add(tfClosedOn= new JTextField(20), gc);
+        pnl.add(tfClosedOn= new JosmTextField(20), gc);
         tfClosedOn.setEditable(false);
 
         return pnl;
Index: src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(Arbeitskopie)
@@ -34,7 +34,6 @@
 import javax.swing.JPopupMenu;
 import javax.swing.JSlider;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.JViewport;
 import javax.swing.KeyStroke;
 import javax.swing.ListSelectionModel;
@@ -71,6 +70,7 @@
 import org.openstreetmap.josm.tools.MultikeyShortcutAction;
 import org.openstreetmap.josm.tools.MultikeyShortcutAction.MultikeyInfo;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * This is a toggle dialog which displays the list of layers. Actions allow to
@@ -193,7 +193,7 @@
         layerList.getColumnModel().getColumn(1).setPreferredWidth(16);
         layerList.getColumnModel().getColumn(1).setResizable(false);
         layerList.getColumnModel().getColumn(2).setCellRenderer(new LayerNameCellRenderer());
-        layerList.getColumnModel().getColumn(2).setCellEditor(new LayerNameCellEditor(new JTextField()));
+        layerList.getColumnModel().getColumn(2).setCellEditor(new LayerNameCellEditor(new JosmTextField()));
         for (KeyStroke ks : new KeyStroke[] {
                 KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK),
                 KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK),
@@ -1008,13 +1008,13 @@
     }
 
     private static class LayerNameCellEditor extends DefaultCellEditor {
-        public LayerNameCellEditor(JTextField tf) {
+        public LayerNameCellEditor(JosmTextField tf) {
             super(tf);
         }
 
         @Override
         public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
-            JTextField tf = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
+            JosmTextField tf = (JosmTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
             tf.setText(value == null ? "" : ((Layer) value).getName());
             return tf;
         }
Index: src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(Arbeitskopie)
@@ -26,7 +26,6 @@
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.JScrollPane;
-import javax.swing.JTextField;
 import javax.swing.KeyStroke;
 import javax.swing.ListSelectionModel;
 import javax.swing.SwingUtilities;
@@ -75,6 +74,7 @@
 import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * A dialog showing all known relations, with buttons to add, edit, and
@@ -95,7 +95,7 @@
     private final JPopupMenu popupMenu = new JPopupMenu();
     private final PopupMenuHandler popupMenuHandler = new PopupMenuHandler(popupMenu);
 
-    private final JTextField filter;
+    private final JosmTextField filter;
     
     // Actions
     /** the edit action */
@@ -259,8 +259,8 @@
         }
     }
 
-    private JTextField  setupFilter() {
-        final JTextField f = new DisableShortcutsOnFocusGainedTextField();
+    private JosmTextField  setupFilter() {
+        final JosmTextField f = new DisableShortcutsOnFocusGainedTextField();
         f.setToolTipText(tr("Relation list filter"));
         f.getDocument().addDocumentListener(new DocumentListener() {
 
Index: src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(Revision 5879)
+++ src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java	(Arbeitskopie)
@@ -25,13 +25,14 @@
 import javax.swing.JPanel;
 import javax.swing.JSeparator;
 import javax.swing.JTabbedPane;
-import javax.swing.JTextField;
 import javax.swing.UIManager;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
+
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.CoordinateFormat;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -46,7 +47,7 @@
     private static final Color BG_COLOR_ERROR = new Color(255,224,224);
 
     public JTabbedPane tabs;
-    private JTextField tfLatLon, tfEastNorth;
+    private JosmTextField tfLatLon, tfEastNorth;
     private LatLon latLonCoordinates;
     private EastNorth eastNorthCoordinates;
 
@@ -76,7 +77,7 @@
         pnl.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
 
         pnl.add(new JLabel(tr("Coordinates:")), GBC.std().insets(0,10,5,0));
-        tfLatLon = new JTextField(24);
+        tfLatLon = new JosmTextField(24);
         pnl.add(tfLatLon, GBC.eol().insets(0,10,0,0).fill(GBC.HORIZONTAL).weight(1.0, 0.0));
 
         pnl.add(new JSeparator(), GBC.eol().fill(GBC.HORIZONTAL).insets(0,5,0,5));
@@ -128,7 +129,7 @@
         pnl.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
 
         pnl.add(new JLabel(tr("Projected coordinates:")), GBC.std().insets(0,10,5,0));
-        tfEastNorth = new JTextField(24);
+        tfEastNorth = new JosmTextField(24);
 
         pnl.add(tfEastNorth, GBC.eol().insets(0,10,0,0).fill(GBC.HORIZONTAL).weight(1.0, 0.0));
 
@@ -207,13 +208,13 @@
         return eastNorthCoordinates;
     }
 
-    protected void setErrorFeedback(JTextField tf, String message) {
+    protected void setErrorFeedback(JosmTextField tf, String message) {
         tf.setBorder(BorderFactory.createLineBorder(Color.RED, 1));
         tf.setToolTipText(message);
         tf.setBackground(BG_COLOR_ERROR);
     }
 
-    protected void clearErrorFeedback(JTextField tf, String message) {
+    protected void clearErrorFeedback(JosmTextField tf, String message) {
         tf.setBorder(UIManager.getBorder("TextField.border"));
         tf.setToolTipText(message);
         tf.setBackground(UIManager.getColor("TextField.background"));
@@ -328,8 +329,8 @@
     static class TextFieldFocusHandler implements FocusListener {
         public void focusGained(FocusEvent e) {
             Component c = e.getComponent();
-            if (c instanceof JTextField) {
-                JTextField tf = (JTextField)c;
+            if (c instanceof JosmTextField) {
+                JosmTextField tf = (JosmTextField)c;
                 tf.selectAll();
             }
         }
Index: src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- src/org/openstreetmap/josm/io/GpxExporter.java	(Revision 5879)
+++ src/org/openstreetmap/josm/io/GpxExporter.java	(Arbeitskopie)
@@ -22,7 +22,6 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
-import javax.swing.JTextField;
 import javax.swing.ListSelectionModel;
 
 import org.openstreetmap.josm.Main;
@@ -33,6 +32,7 @@
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Utils;
@@ -90,21 +90,21 @@
         p.add(author, GBC.eol());
         JLabel nameLabel = new JLabel(tr("Real name"));
         p.add(nameLabel, GBC.std().insets(10, 0, 5, 0));
-        JTextField authorName = new JTextField();
+        JosmTextField authorName = new JosmTextField();
         p.add(authorName, GBC.eol().fill(GBC.HORIZONTAL));
         JLabel emailLabel = new JLabel(tr("E-Mail"));
         p.add(emailLabel, GBC.std().insets(10, 0, 5, 0));
-        JTextField email = new JTextField();
+        JosmTextField email = new JosmTextField();
         p.add(email, GBC.eol().fill(GBC.HORIZONTAL));
         JLabel copyrightLabel = new JLabel(tr("Copyright (URL)"));
         p.add(copyrightLabel, GBC.std().insets(10, 0, 5, 0));
-        JTextField copyright = new JTextField();
+        JosmTextField copyright = new JosmTextField();
         p.add(copyright, GBC.std().fill(GBC.HORIZONTAL));
         JButton predefined = new JButton(tr("Predefined"));
         p.add(predefined, GBC.eol().insets(5, 0, 0, 0));
         JLabel copyrightYearLabel = new JLabel(tr("Copyright year"));
         p.add(copyrightYearLabel, GBC.std().insets(10, 0, 5, 5));
-        JTextField copyrightYear = new JTextField("");
+        JosmTextField copyrightYear = new JosmTextField("");
         p.add(copyrightYear, GBC.eol().fill(GBC.HORIZONTAL));
         JLabel warning = new JLabel("<html><font size='-2'>&nbsp;</html");
         p.add(warning, GBC.eol().fill(GBC.HORIZONTAL).insets(15, 0, 0, 0));
@@ -112,7 +112,7 @@
                 copyrightLabel, copyrightYearLabel, warning);
 
         p.add(new JLabel(tr("Keywords")), GBC.eol());
-        JTextField keywords = new JTextField();
+        JosmTextField keywords = new JosmTextField();
         keywords.setText((String) gpxData.attr.get(META_KEYWORDS));
         p.add(keywords, GBC.eop().fill(GBC.HORIZONTAL));
 
@@ -183,8 +183,8 @@
         }
     }
 
-    private static void enableCopyright(final GpxData data, final JTextField copyright, final JButton predefined,
-            final JTextField copyrightYear, final JLabel copyrightLabel, final JLabel copyrightYearLabel,
+    private static void enableCopyright(final GpxData data, final JosmTextField copyright, final JButton predefined,
+            final JosmTextField copyrightYear, final JLabel copyrightLabel, final JLabel copyrightYearLabel,
             final JLabel warning, boolean enable) {
         copyright.setEnabled(enable);
         predefined.setEnabled(enable);
@@ -226,11 +226,11 @@
     private static void addDependencies(
             final GpxData data,
             final JCheckBox author,
-            final JTextField authorName,
-            final JTextField email,
-            final JTextField copyright,
+            final JosmTextField authorName,
+            final JosmTextField email,
+            final JosmTextField copyright,
             final JButton predefined,
-            final JTextField copyrightYear,
+            final JosmTextField copyrightYear,
             final JLabel nameLabel,
             final JLabel emailLabel,
             final JLabel copyrightLabel,
Index: src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java
===================================================================
--- src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java	(Revision 5879)
+++ src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java	(Arbeitskopie)
@@ -31,7 +31,6 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
-import javax.swing.JTextField;
 import javax.swing.SwingConstants;
 
 import org.w3c.dom.Element;
@@ -40,6 +39,7 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.io.OsmWriter;
 import org.openstreetmap.josm.io.OsmWriterFactory;
 import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
@@ -108,7 +108,7 @@
         final LayerSaveAction saveAction = new LayerSaveAction();
         final JButton save = new JButton(saveAction);
         if (file != null) {
-            JTextField tf = new JTextField();
+            JosmTextField tf = new JosmTextField();
             tf.setText(file.getPath());
             tf.setEditable(false);
             cardLink.add(tf, GBC.std());
Index: src/org/openstreetmap/josm/io/session/GpxTracksSessionExporter.java
===================================================================
--- src/org/openstreetmap/josm/io/session/GpxTracksSessionExporter.java	(Revision 5879)
+++ src/org/openstreetmap/josm/io/session/GpxTracksSessionExporter.java	(Arbeitskopie)
@@ -29,12 +29,12 @@
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
-import javax.swing.JTextField;
 import javax.swing.SwingConstants;
 
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.io.GpxWriter;
 import org.openstreetmap.josm.io.session.SessionWriter.ExportSupport;
 import org.openstreetmap.josm.tools.GBC;
@@ -78,7 +78,7 @@
         JPanel cardLink = new JPanel(new GridBagLayout());
         final File file = layer.getAssociatedFile();
         if (file != null) {
-            JTextField tf = new JTextField();
+            JosmTextField tf = new JosmTextField();
             tf.setText(file.getPath());
             tf.setEditable(false);
             cardLink.add(tf, GBC.std());
Index: src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(Revision 5879)
+++ src/org/openstreetmap/josm/actions/ImageryAdjustAction.java	(Arbeitskopie)
@@ -19,7 +19,6 @@
 
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
@@ -30,6 +29,7 @@
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 
 public class ImageryAdjustAction extends MapMode implements MouseListener, MouseMotionListener, AWTEventListener{
@@ -148,8 +148,8 @@
     }
 
     class ImageryOffsetDialog extends ExtendedDialog implements FocusListener {
-        public final JTextField tOffset = new JTextField();
-        JTextField tBookmarkName = new JTextField();
+        public final JosmTextField tOffset = new JosmTextField();
+        JosmTextField tBookmarkName = new JosmTextField();
         private boolean ignoreListener;
         public ImageryOffsetDialog() {
             super(Main.parent,
Index: src/org/openstreetmap/josm/actions/JumpToAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/JumpToAction.java	(Revision 5879)
+++ src/org/openstreetmap/josm/actions/JumpToAction.java	(Arbeitskopie)
@@ -13,7 +13,6 @@
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
-import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 
@@ -24,6 +23,7 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class JumpToAction extends JosmAction implements MouseListener {
     public JumpToAction() {
@@ -33,10 +33,10 @@
         Main.toolbar.register(this);
     }
 
-    private JTextField url = new JTextField();
-    private JTextField lat = new JTextField();
-    private JTextField lon = new JTextField();
-    private JTextField zm = new JTextField();
+    private JosmTextField url = new JosmTextField();
+    private JosmTextField lat = new JosmTextField();
+    private JosmTextField lon = new JosmTextField();
+    private JosmTextField zm = new JosmTextField();
 
     private double zoomFactor = 0;
     public void showJumpToDialog() {
Index: src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/search/SearchAction.java	(Revision 5879)
+++ src/org/openstreetmap/josm/actions/search/SearchAction.java	(Arbeitskopie)
@@ -29,7 +29,6 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
-import javax.swing.JTextField;
 import javax.swing.text.BadLocationException;
 
 import org.openstreetmap.josm.Main;
@@ -50,7 +49,9 @@
 import org.openstreetmap.josm.tools.Property;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
+
 public class SearchAction extends JosmAction implements ParameterizedAction {
 
     public static final int DEFAULT_SEARCH_HISTORY_SIZE = 15;
@@ -194,7 +195,7 @@
                     @Override
                     public void mouseClicked(MouseEvent e) {
                         try {
-                            JTextField tf = (JTextField) hcb.getEditor().getEditorComponent();
+                            JosmTextField tf = (JosmTextField) hcb.getEditor().getEditorComponent();
                             tf.getDocument().insertString(tf.getCaretPosition(), " " + insertText, null);
                         } catch (BadLocationException ex) {
                             throw new RuntimeException(ex.getMessage(), ex);
Index: src/org/openstreetmap/josm/actions/RenameLayerAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/RenameLayerAction.java	(Revision 5879)
+++ src/org/openstreetmap/josm/actions/RenameLayerAction.java	(Arbeitskopie)
@@ -13,11 +13,11 @@
 import javax.swing.JCheckBox;
 import javax.swing.JDialog;
 import javax.swing.JOptionPane;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 /**
  * Action to rename an specific layer. Provides the option to rename the
@@ -43,7 +43,7 @@
 
     public void actionPerformed(ActionEvent e) {
         Box panel = Box.createVerticalBox();
-        final JTextField name = new JTextField(layer.getName());
+        final JosmTextField name = new JosmTextField(layer.getName());
         panel.add(name);
         JCheckBox filerename = new JCheckBox(tr("Also rename the file"));
         if (Main.applet) {
Index: src/org/openstreetmap/josm/actions/Map_Rectifier_WMSmenuAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/Map_Rectifier_WMSmenuAction.java	(Revision 5879)
+++ src/org/openstreetmap/josm/actions/Map_Rectifier_WMSmenuAction.java	(Arbeitskopie)
@@ -16,7 +16,6 @@
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
-import javax.swing.JTextField;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
@@ -26,6 +25,7 @@
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.UrlLabel;
 import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.widgets.JosmTextField;
 
 public class Map_Rectifier_WMSmenuAction extends JosmAction {
     /**
@@ -110,7 +110,7 @@
         JPanel panel = new JPanel(new GridBagLayout());
         panel.add(new JLabel(tr("Supported Rectifier Services:")), GBC.eol());
 
-        JTextField tfWmsUrl = new JTextField(30);
+        JosmTextField tfWmsUrl = new JosmTextField(30);
 
         String clip = Utils.getClipboardContent();
         clip = clip == null ? "" : clip.trim();
