Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/LaunchAction.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/LaunchAction.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/LaunchAction.java	(revision 15319)
@@ -27,94 +27,89 @@
 @SuppressWarnings("serial")
 public class LaunchAction extends JosmAction implements SelectionChangedListener {
-	 
+
 	protected void registerAsMenuItem() {
-        JMenuBar menu = Main.main.menu;
-        JMenu edit = null;
-        JMenuItem item = new JMenuItem(this);
+		JMenuBar menu = Main.main.menu;
+		JMenu edit = null;
+		JMenuItem item = new JMenuItem(this);
 
-        for (int i = 0; i < menu.getMenuCount(); ++i) {
-            if (menu.getMenu(i) != null
-                    && tr("Edit").equals(menu.getMenu(i).getText())) {
-                edit = menu.getMenu(i);
-                break;
-            }
-        }
+		for (int i = 0; i < menu.getMenuCount(); ++i) {
+			if (menu.getMenu(i) != null
+					&& tr("Edit").equals(menu.getMenu(i).getText())) {
+				edit = menu.getMenu(i);
+				break;
+			}
+		}
 
-        if (edit != null) {
-        	edit.insertSeparator(edit.getItemCount());
-        	JMenuItem mitem = edit.insert(this, edit.getItemCount());
-        	mitem.setAccelerator(KeyStroke.getKeyStroke('T'));
-        } else if (menu.getMenuCount() > 0) {
-            edit = menu.getMenu(0);
-            JMenuItem mitem = edit.insert(this, 0);
-        	mitem.setAccelerator(KeyStroke.getKeyStroke('T'));
+		if (edit != null) {
+			edit.insertSeparator(edit.getItemCount());
+			JMenuItem mitem = edit.insert(this, edit.getItemCount());
+			mitem.setAccelerator(KeyStroke.getKeyStroke('T'));
+		} else if (menu.getMenuCount() > 0) {
+			edit = menu.getMenu(0);
+			JMenuItem mitem = edit.insert(this, 0);
+			mitem.setAccelerator(KeyStroke.getKeyStroke('T'));
 
-        }
+		}
 
-        item.setVisible(true);
+		item.setVisible(true);
 	}
-	
-
 
 	public LaunchAction()  {
 		super(
-			tr("Edit tags"),
-			null, //TODO: set "tag-editor" and add /images/tag-editor.png to distrib
-			tr("Launches the tag editor dialog"),
-			Shortcut.registerShortcut(
-					"edit:launchtageditor", 
-					tr("Launches the tag editor dialog"),
-					KeyEvent.VK_T,
-					Shortcut.GROUP_EDIT),						
-			false // don't register, plugin will add the action to the menu
+				tr("Edit tags"),
+				null, //TODO: set "tag-editor" and add /images/tag-editor.png to distrib
+				tr("Launches the tag editor dialog"),
+				Shortcut.registerShortcut(
+						"edit:launchtageditor",
+						tr("Launches the tag editor dialog"),
+						KeyEvent.VK_T,
+						Shortcut.GROUP_EDIT),
+						false // don't register, plugin will add the action to the menu
 		);
-		
-		
+
+
 		// register as dataset selection listener
 		//
 		DataSet.selListeners.add(this);
-		
+
 		// insert a menu item
 		//
 		registerAsMenuItem();
-		
+
 		// initially not enabled; becomes enabled when the selection becomes non-empty
 		//
 		setEnabled(false);
-		
+
 	}
-	
+
 	/**
-	 *  
+	 * 
 	 * @return  the top window of the JOSM GUI; can be null
 	 */
 	protected Window getTopWindow() {
-		if (Main.contentPane == null) {
+		if (Main.contentPane == null)
 			return null;
-		}
 		Component c = Main.contentPane;
 		while(c.getParent() != null) {
 			c = c.getParent();
 		}
-		if (c instanceof Window) {
+		if (c instanceof Window)
 			return (Window)c;
-		} else {
+		else
 			return null;
-		}
 	}
-	
+
 	/**
-	 * tries to center the tag editor dialog on the top window or, alternatively, 
+	 * tries to center the tag editor dialog on the top window or, alternatively,
 	 * on the screen
 	 * 
-	 * @param dialog the dialog to be placed on the screen 
+	 * @param dialog the dialog to be placed on the screen
 	 */
 	protected void placeDialogOnScreen(TagEditorDialog dialog) {
 		Window w = getTopWindow();
-		if (w == null) {
-			// don't center 
+		if (w == null)
+			// don't center
 			return;
-		}
-		
+
 		GraphicsConfiguration gc = w.getGraphicsConfiguration();
 		Rectangle screenBounds = null;
@@ -135,36 +130,29 @@
 
 		dialog.setLocation(p);
-		
+
 	}
-	
+
 	/**
-	 * launch the editor 
+	 * launch the editor
 	 */
 	protected void launchEditor() {
-		if (!isEnabled()) {
+		if (!isEnabled())
 			return;
-		}
 		TagEditorDialog dialog = TagEditorDialog.getInstance();
 		placeDialogOnScreen(dialog);
-		dialog.startEditSession();		
-		dialog.setVisible(true);		
+		dialog.startEditSession();
+		dialog.setVisible(true);
 	}
-	
-	
-	
-	
-	@Override
+
 	public void actionPerformed(ActionEvent e) {
 		launchEditor();
 	}
 
-	
-	@Override
 	public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
 		setEnabled(newSelection != null && newSelection.size() >0);
 	}
 
-	
-	
+
+
 
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/TagEditorDialog.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/TagEditorDialog.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/TagEditorDialog.java	(revision 15319)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.tageditor;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.BorderLayout;
@@ -42,6 +44,4 @@
 import org.openstreetmap.josm.plugins.tageditor.tagspec.ui.TabularTagSelector;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
-
 /**
  * The dialog for editing name/value-pairs (aka <em>tags</em>) associated with {@link OsmPrimitive}s.
@@ -51,14 +51,14 @@
 @SuppressWarnings("serial")
 public class TagEditorDialog extends JDialog {
-	
+
 	static private Logger logger = Logger.getLogger(TagEditorDialog.class.getName());
-	
+
 	/** the unique instance */
 	static protected  TagEditorDialog instance = null;
-	
-	/**
-	 * Access to the singleton instance 
+
+	/**
+	 * Access to the singleton instance
 	 * 
-	 * @return the singleton instance of the dialog 
+	 * @return the singleton instance of the dialog
 	 */
 	static public TagEditorDialog getInstance() {
@@ -68,13 +68,13 @@
 		return instance;
 	}
-	
-	
-	/**
-	 * default preferred size 
+
+
+	/**
+	 * default preferred size
 	 */
 	static public final Dimension PREFERRED_SIZE = new Dimension(700, 500);
-	
-	
-	/** the properties table */ 
+
+
+	/** the properties table */
 	private TagEditor tagEditor = null;
 	private TagEditorModel model = null;
@@ -82,11 +82,11 @@
 	/**  the auto completion list viewer */
 	private AutoCompletionListViewer aclViewer = null;
-	
+
 	/** the cache of auto completion values used by the tag editor */
 	private AutoCompletionCache acCache = null;
-	
+
 	/** widgets */
 	private JButton btnOK = null;
-	private JButton btnCancel = null; 
+	private JButton btnCancel = null;
 	private JButton btnAdd = null;
 	private JButton btnDelete = null;
@@ -94,9 +94,9 @@
 	private CancelAction cancelAction = null;
 
-	
+
 	public OKAction getOKAction() {
 		return okAction;
 	}
-	
+
 	/**
 	 * @return the tag editor model
@@ -106,20 +106,20 @@
 	}
 
-	
-	
+
+
 	protected JPanel buildButtonRow() {
 		// create the rows of action buttons at the bottom
-		// of the dialog 
+		// of the dialog
 		//
 		JPanel pnl = new JPanel();
 		pnl.setLayout(new FlowLayout(FlowLayout.RIGHT));
-		
-		// the ok button 
+
+		// the ok button
 		//
 		okAction = new OKAction();
 		btnOK = new JButton(okAction);
 		getModel().addPropertyChangeListener(okAction);
-		
-		// the cancel button 
+
+		// the cancel button
 		//
 		cancelAction = new CancelAction();
@@ -127,26 +127,26 @@
 		pnl.add(btnOK);
 		pnl.add(btnCancel);
-		
+
 		JPanel pnl1 = new JPanel();
 		pnl.setLayout(new FlowLayout(FlowLayout.LEFT));
-		
+
 		// the add button
 		//
 		btnAdd = new JButton(tagEditor.getAddAction());
 		btnDelete = new JButton(tagEditor.getDeleteAction());
-	
+
 		pnl1.add(btnAdd);
 		pnl1.add(btnDelete);
-		
+
 		JPanel pnl2 = new JPanel();
 		pnl2.setLayout(new BorderLayout());
 		pnl2.add(pnl1, BorderLayout.WEST);
 		pnl2.add(pnl, BorderLayout.EAST);
-		
-		return pnl2;		
-	}
-	
-	/**
-	 * build the GUI 
+
+		return pnl2;
+	}
+
+	/**
+	 * build the GUI
 	 */
 	protected void build() {
@@ -158,6 +158,6 @@
 		setSize(PREFERRED_SIZE);
 		setTitle(tr("JOSM Tag Editor Plugin"));
-		
-		
+
+
 		// create tag editor and inject an instance of the tag
 		// editor model
@@ -165,8 +165,8 @@
 		tagEditor = new TagEditor();
 		tagEditor.setTagEditorModel(model);
-		
+
 
 		// create the auto completion list viewer and connect it
-		// to the tag editor 
+		// to the tag editor
 		//
 		AutoCompletionList autoCompletionList = new AutoCompletionList();
@@ -174,6 +174,6 @@
 		tagEditor.setAutoCompletionList(autoCompletionList);
 		tagEditor.setAutoCompletionCache(acCache);
-		aclViewer.addAutoCompletionListListener(tagEditor);		
-		
+		aclViewer.addAutoCompletionListListener(tagEditor);
+
 		JPanel pnlTagGrid = new JPanel();
 		pnlTagGrid.setLayout(new BorderLayout());
@@ -181,6 +181,6 @@
 		pnlTagGrid.add(aclViewer, BorderLayout.EAST);
 		pnlTagGrid.setBorder(BorderFactory.createEmptyBorder(5, 0,0,0));
-		
-		
+
+
 		// create the preset selector
 		//
@@ -188,14 +188,13 @@
 		presetSelector.addPresetSelectorListener(
 				new IPresetSelectorListener() {
-					@Override
 					public void itemSelected(Item item) {
 						tagEditor.stopEditing();
 						model.applyPreset(item);
 						tagEditor.requestFocusInTopLeftCell();
-					}					
+					}
 				}
 		);
-		
-		
+
+
 		JPanel pnlPresetSelector = new JPanel();
 		pnlPresetSelector.setLayout(new BorderLayout());
@@ -219,30 +218,30 @@
 		pnlTagSelector.add(tagSelector,BorderLayout.CENTER);
 		pnlTagSelector.setBorder(BorderFactory.createEmptyBorder(0,0,5,0	));
-		
-		
-		
-		
-		// create the tabbed pane 
+
+
+
+
+		// create the tabbed pane
 		//
 		JTabbedPane tabbedPane = new JTabbedPane();
 		tabbedPane.add(pnlPresetSelector, tr("Presets"));
 		tabbedPane.add(pnlTagSelector, tr("Tags"));
-		
+
 		// create split pane
 		//
 		JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
-		                           tabbedPane, pnlTagGrid);
+				tabbedPane, pnlTagGrid);
 		splitPane.setOneTouchExpandable(true);
 		splitPane.setDividerLocation(200);
-	
+
 		Dimension minimumSize = new Dimension(100, 50);
 		presetSelector.setMinimumSize(minimumSize);
 		pnlTagGrid.setMinimumSize(minimumSize);
-		
+
 		getContentPane().add(splitPane,BorderLayout.CENTER);
-				
+
 		getContentPane().add(buildButtonRow(), BorderLayout.SOUTH);
 
-		
+
 		addWindowListener(
 				new WindowAdapter() {
@@ -253,15 +252,15 @@
 								getModel().ensureOneTag();
 								tagEditor.clearSelection();
-								tagEditor.requestFocusInTopLeftCell();								
-							}							
+								tagEditor.requestFocusInTopLeftCell();
+							}
 						});
 					}
 				}
 		);
-		
-		
+
+
 		// makes sure that 'Ctrl-Enter' in the properties table
 		// and in the aclViewer is handled by okAction
-		//		
+		//
 		getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put((KeyStroke)cancelAction.getValue(Action.ACCELERATOR_KEY), okAction.getValue(AbstractAction.NAME));
 		getRootPane().getActionMap().put(cancelAction.getValue(Action.NAME), cancelAction);
@@ -270,9 +269,9 @@
 		getRootPane().getActionMap().put(okAction.getValue(Action.NAME), okAction);
 
-		
-		// make sure the OK action is also enabled in sub components. I registered 
+
+		// make sure the OK action is also enabled in sub components. I registered
 		// the action in the input and action maps of the dialogs root pane and I expected
 		// it to get triggered regardless of what subcomponent had focus, but it didn't.
-		// 
+		//
 		aclViewer.installKeyAction(okAction);
 		aclViewer.installKeyAction(cancelAction);
@@ -280,7 +279,7 @@
 		presetSelector.installKeyAction(cancelAction);
 	}
-	
-	
-	
+
+
+
 	/**
 	 * constructor
@@ -289,8 +288,8 @@
 		acCache = new AutoCompletionCache();
 		model = new TagEditorModel();
-		build();	
-	}
-	
-	
+		build();
+	}
+
+
 	@Override
 	public Dimension getPreferredSize() {
@@ -298,45 +297,43 @@
 	}
 
-	
-	
+
+
 	/**
 	 * start an editing session. This method should be called before the dialog
-	 * is shown on the screen, i.e. before {@link Dialog#setVisible(boolean)} is 
-	 * called. 
-	 */
-	public void startEditSession() {		
+	 * is shown on the screen, i.e. before {@link Dialog#setVisible(boolean)} is
+	 * called.
+	 */
+	public void startEditSession() {
 		model.clearAppliedPresets();
-		model.initFromJOSMSelection();		
+		model.initFromJOSMSelection();
 		acCache.initFromJOSMDataset();
 		getModel().ensureOneTag();
 	}
 
-	
-	
+
+
 	@SuppressWarnings("serial")
 	class CancelAction extends AbstractAction {
-		
+
 		public CancelAction() {
 			putValue(Action.NAME, tr("Cancel"));
 			putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0));
 		}
-		
-		@Override
+
 		public void actionPerformed(ActionEvent arg0) {
 			setVisible(false);
-		}		
-	}
-	
-
-	
+		}
+	}
+
+
+
 	@SuppressWarnings("serial")
 	class OKAction extends AbstractAction implements PropertyChangeListener {
- 
+
 		public OKAction() {
 			putValue(Action.NAME, tr("OK"));
 			putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl ENTER"));
 		}
-		
-		@Override
+
 		public void actionPerformed(ActionEvent e) {
 			run();
@@ -347,21 +344,18 @@
 			setVisible(false);
 			model.updateJOSMSelection();
-			
-			Collection<OsmPrimitive> sel = Main.ds.getSelected();			
+
+			Collection<OsmPrimitive> sel = Main.ds.getSelected();
 			DataSet.fireSelectionChanged(sel);
 			Main.parent.repaint(); // repaint all - drawing could have been changed
 		}
-		
-		@Override
+
 		public void propertyChange(PropertyChangeEvent evt) {
-			if (! evt.getPropertyName().equals(TagEditorModel.PROP_DIRTY)) {
+			if (! evt.getPropertyName().equals(TagEditorModel.PROP_DIRTY))
 				return;
-			}
-			if (! evt.getNewValue().getClass().equals(Boolean.class)) {
+			if (! evt.getNewValue().getClass().equals(Boolean.class))
 				return;
-			}
 			boolean dirty = (Boolean)evt.getNewValue();
 			setEnabled(dirty);
-		}		
+		}
 	}
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionList.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionList.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionList.java	(revision 15319)
@@ -11,11 +11,11 @@
  * AutoCompletionList manages a list of {@see AutoCompletionListItem}s.
  * 
- * The list is sorted, items with higher priority first, then according to lexicographic order 
- * on the value of the {@see AutoCompletionListItem}. 
+ * The list is sorted, items with higher priority first, then according to lexicographic order
+ * on the value of the {@see AutoCompletionListItem}.
  * 
  * AutoCompletionList maintains two views on the list of {@see AutoCompletionListItem}s.
  * <ol>
  *   <li>the bare, unfiltered view which includes all items</li>
- *   <li>a filtered view, which includes only items which match a current filter expression</li>   
+ *   <li>a filtered view, which includes only items which match a current filter expression</li>
  * </ol>
  * 
@@ -28,12 +28,12 @@
 
 	/** the bare list of AutoCompletionItems */
-	private ArrayList<AutoCompletionListItem> list = null;	
-	/**  the filtered list of AutoCompletionItems */ 
-	private ArrayList<AutoCompletionListItem> filtered = null;	
-	/** the filter expression */ 
-	private String filter = null; 
-
-	/**
-	 * constructor 
+	private ArrayList<AutoCompletionListItem> list = null;
+	/**  the filtered list of AutoCompletionItems */
+	private ArrayList<AutoCompletionListItem> filtered = null;
+	/** the filter expression */
+	private String filter = null;
+
+	/**
+	 * constructor
 	 */
 	public AutoCompletionList() {
@@ -41,10 +41,10 @@
 		filtered = new ArrayList<AutoCompletionListItem>();
 	}
-	
-	
+
+
 	/**
 	 * applies a filter expression to the list of {@see AutoCompletionListItem}s.
 	 * 
-	 * The matching criterion is a case insensitive substring match. 
+	 * The matching criterion is a case insensitive substring match.
 	 * 
 	 * @param filter  the filter expression; must not be null
@@ -53,13 +53,12 @@
 	 */
 	public void applyFilter(String filter) {
-		if (filter == null) {
+		if (filter == null)
 			throw new IllegalArgumentException("argument 'filter' must not be null");
-		}
 		this.filter = filter;
 		filter();
 	}
-	
-	/**
-	 * clears the current filter 
+
+	/**
+	 * clears the current filter
 	 * 
 	 */
@@ -68,40 +67,38 @@
 		filter();
 	}
-	
-	/**
-	 * @return the current filter expression; null, if no filter expression is set 
+
+	/**
+	 * @return the current filter expression; null, if no filter expression is set
 	 */
 	public String getFilter() {
-		return filter; 
-	}
-	
-	
-	/** 
+		return filter;
+	}
+
+
+	/**
 	 * adds an AutoCompletionListItem to the list. Only adds the item if it
-	 * is not null and if not in the list yet. 
-	 *  
-	 * @param item the item 
+	 * is not null and if not in the list yet.
+	 * 
+	 * @param item the item
 	 */
 	public void add(AutoCompletionListItem item) {
-		if (item == null) {
-			return; 
-		}
+		if (item == null)
+			return;
 		appendOrUpdatePriority(item);
 		sort();
 		filter();
 	}
-	
-	
+
+
 	/**
 	 * adds another AutoCompletionList to this list. An item is only
-	 * added it is not null and if it does not exist in the list yet. 
+	 * added it is not null and if it does not exist in the list yet.
 	 * 
 	 * @param other another auto completion list; must not be null
-	 * @exception IllegalArgumentException thrown, if other is null 
+	 * @exception IllegalArgumentException thrown, if other is null
 	 */
 	public void add(AutoCompletionList other) {
-		if (other == null) {
+		if (other == null)
 			throw new IllegalArgumentException("argument 'other' must not be null");
-		}
 		for (AutoCompletionListItem item : other.list) {
 			appendOrUpdatePriority(item);
@@ -110,17 +107,16 @@
 		filter();
 	}
-	
-	
+
+
 	/**
 	 * adds a list of AutoCompletionListItem to this list. Only items which
-	 * are not null and which do not exist yet in the list are added. 
+	 * are not null and which do not exist yet in the list are added.
 	 * 
 	 * @param other a list of AutoCompletionListItem; must not be null
-	 * @exception IllegalArgumentException thrown, if other is null 
+	 * @exception IllegalArgumentException thrown, if other is null
 	 */
 	public void add(List<AutoCompletionListItem> other) {
-		if (other == null)	{
+		if (other == null)
 			throw new IllegalArgumentException("argument 'other' must not be null");
-		}
 		for (AutoCompletionListItem toadd : other) {
 			appendOrUpdatePriority(toadd);
@@ -144,83 +140,77 @@
 		}
 	}
-	
-	/**
-	 * checks whether a specific item is already in the list. Matches for the 
-	 * the value <strong>and</strong> the priority of the item 
+
+	/**
+	 * checks whether a specific item is already in the list. Matches for the
+	 * the value <strong>and</strong> the priority of the item
 	 * 
 	 * @param item the item to check
-	 * @return true, if item is in the list; false, otherwise 
+	 * @return true, if item is in the list; false, otherwise
 	 */
 	public boolean contains(AutoCompletionListItem item) {
-		if (item == null) {
-			return false; 
-		}
+		if (item == null)
+			return false;
 		return list.contains(item);
 	}
-	
+
 	/**
 	 * checks whether an item with the given value is already in the list. Ignores
 	 * priority of the items.
 	 * 
-	 * @param value the value of an auto completion item 
-	 * @return true, if value is in the list; false, otherwise  
+	 * @param value the value of an auto completion item
+	 * @return true, if value is in the list; false, otherwise
 	 */
 	public boolean contains(String value) {
-		if (value == null) {
-			return false; 
-		}
+		if (value == null)
+			return false;
 		for (AutoCompletionListItem item: list) {
-			if (item.getValue().equals(value)) {
-				return true; 
-			}
-		}
-		return false; 
-	}
-	
-	/**
-	 * 
-	 * @param value a specific value 
+			if (item.getValue().equals(value))
+				return true;
+		}
+		return false;
+	}
+
+	/**
+	 * 
+	 * @param value a specific value
 	 * @return  the auto completion item for this value; null, if there is no
-	 *   such auto completion item 
+	 *   such auto completion item
 	 */
 	public AutoCompletionListItem lookup(String value) {
-		if (value == null) {
+		if (value == null)
 			return null;
-		}
 		for (AutoCompletionListItem item : list) {
-			if (item.getValue().equals(value)) {
+			if (item.getValue().equals(value))
 				return item;
-			}
 		}
 		return null;
 	}
-	
-	
+
+
 	/**
 	 * removes the auto completion item with key <code>key</code>
-	 * @param key  the key; 
+	 * @param key  the key;
 	 */
 	public void remove(String key) {
-		if (key == null) {
-			return; 
-		}
+		if (key == null)
+			return;
 		for (int i=0;i< list.size();i++) {
 			AutoCompletionListItem item = list.get(i);
 			if (item.getValue().equals(key)) {
 				list.remove(i);
-				return; 
-			}
-		}		
-	}
-	
-	
-	
-	/**
-	 * sorts the list 
+				return;
+			}
+		}
+	}
+
+
+
+	/**
+	 * sorts the list
 	 */
 	protected void sort() {
-		Collections.sort(list);		
-	}
-	
+		Collections.sort(list);
+	}
+
 	protected void filter() {
 		filtered.clear();
@@ -231,11 +221,11 @@
 			for (AutoCompletionListItem item: list) {
 				filtered.add(item);
-			}			
+			}
 			return;
 		}
-		
+
 		// apply the pattern to list of possible values. If it matches, add the
-		// value to the list of filtered values 
-		// 
+		// value to the list of filtered values
+		//
 		for (AutoCompletionListItem item : list) {
 			if (item.getValue().startsWith(filter)) {
@@ -243,19 +233,19 @@
 			}
 		}
-		
+
 		fireTableDataChanged();
 	}
-	
-	/**
-	 * replies the number of filtered items 
-	 *   
-	 * @return the number of filtered items 
+
+	/**
+	 * replies the number of filtered items
+	 * 
+	 * @return the number of filtered items
 	 */
 	public int getFilteredSize() {
 		return this.filtered.size();
 	}
-	
-	/**
-	 * replies the idx-th item from the list of filtered items 
+
+	/**
+	 * replies the idx-th item from the list of filtered items
 	 * @param idx the index; must be in the range 0<= idx < {@see #getFilteredSize()}
 	 * @return the item
@@ -264,11 +254,10 @@
 	 */
 	public AutoCompletionListItem getFilteredItem(int idx) {
-		if (idx < 0 || idx >= getFilteredSize()) {
+		if (idx < 0 || idx >= getFilteredSize())
 			throw new IndexOutOfBoundsException("idx out of bounds. idx=" + idx);
-		}
 		return filtered.get(idx);
 	}
-	
-	
+
+
 	/**
 	 * removes all elements from the auto completion list
@@ -279,18 +268,18 @@
 		fireTableDataChanged();
 	}
-	
-	
-	@Override public int getColumnCount() {
+
+
+	public int getColumnCount() {
 		return 1;
 	}
 
-	@Override public int getRowCount() {
-	
-	    return list == null ? 0 : getFilteredSize();
-    }
-
-	@Override public Object getValueAt(int rowIndex, int columnIndex) {
+	public int getRowCount() {
+
+		return list == null ? 0 : getFilteredSize();
+	}
+
+	public Object getValueAt(int rowIndex, int columnIndex) {
 		return list == null ? null : getFilteredItem(rowIndex);
-    }
-	
+	}
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionListItem.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionListItem.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionListItem.java	(revision 15319)
@@ -5,6 +5,6 @@
  * Represents an entry in the list of auto completion values.
  * 
- *  An AutoCompletionListItem has a <em>priority</em> and a <em>value</em>. 
- *  
+ *  An AutoCompletionListItem has a <em>priority</em> and a <em>value</em>.
+ * 
  *  The priority helps to sort the auto completion items according to their importance. For instance,
  *  in an auto completion list for tag names, standard tag names would be assigned a higher
@@ -12,5 +12,5 @@
  *  {@see AutoCompletionItemPritority}.
  *
- * The value is a string which will be displayed in the auto completion list.    
+ * The value is a string which will be displayed in the auto completion list.
  * 
  * @author gubaer
@@ -19,11 +19,11 @@
 public class AutoCompletionListItem implements Comparable<AutoCompletionListItem>{
 
-	/** the pritority of this item */ 
+	/** the pritority of this item */
 	private  AutoCompletionItemPritority priority;
-	/** the value of this item */ 
+	/** the value of this item */
 	private String value;
-	
+
 	/**
-	 * constructor 
+	 * constructor
 	 */
 	public AutoCompletionListItem() {
@@ -31,5 +31,5 @@
 		priority = AutoCompletionItemPritority.UNKNOWN;
 	}
-	
+
 	public AutoCompletionListItem(String value, AutoCompletionItemPritority priority) {
 		this.value = value;
@@ -39,37 +39,36 @@
 	/**
 	 * 
-	 * @return the priority 
+	 * @return the priority
 	 */
 	public AutoCompletionItemPritority getPriority() {
-    	return priority;
-    }
+		return priority;
+	}
 
 	/**
-	 * sets the priority 
-	 * @param priority  the priority 
+	 * sets the priority
+	 * @param priority  the priority
 	 */
 	public void setPriority(AutoCompletionItemPritority priority) {
-    	this.priority = priority;
-    }
+		this.priority = priority;
+	}
 
 	/**
 	 * 
-	 * @return the value 
+	 * @return the value
 	 */
 	public String getValue() {
-    	return value;
-    }
+		return value;
+	}
 
 	/**
-	 * sets the value 
+	 * sets the value
 	 * @param value the value; must not be null
 	 * @exception IllegalArgumentException thrown, if value if null
 	 */
 	public void setValue(String value) {
-		if (value == null)	{
+		if (value == null)
 			throw new IllegalArgumentException("argument 'value' must not be null");
-		}
-    	this.value = value;
-    }
+		this.value = value;
+	}
 
 	@Override public String toString() {
@@ -86,46 +85,45 @@
 
 	@Override public int hashCode() {
-	    final int prime = 31;
-	    int result = 1;
-	    result = prime * result
-	            + ((priority == null) ? 0 : priority.hashCode());
-	    result = prime * result + ((value == null) ? 0 : value.hashCode());
-	    return result;
-    }
+		final int prime = 31;
+		int result = 1;
+		result = prime * result
+		+ ((priority == null) ? 0 : priority.hashCode());
+		result = prime * result + ((value == null) ? 0 : value.hashCode());
+		return result;
+	}
 
 	@Override public boolean equals(Object obj) {
-	    if (this == obj)
-		    return true;
-	    if (obj == null)
-		    return false;
-	    if (getClass() != obj.getClass())
-		    return false;
-	    final AutoCompletionListItem other = (AutoCompletionListItem)obj;
-	    if (priority == null) {
-		    if (other.priority != null)
-			    return false;
-	    } else if (!priority.equals(other.priority))
-		    return false;
-	    if (value == null) {
-		    if (other.value != null)
-			    return false;
-	    } else if (!value.equals(other.value))
-		    return false;
-	    return true;
-    }
-	
-
-	@Override public int compareTo(AutoCompletionListItem other) {
-		int ret = this.priority.compareTo(other.priority);
-		if (ret != 0) {
-			return ret;
-		} else {
-			return this.value.compareTo(other.value);
-		}
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		final AutoCompletionListItem other = (AutoCompletionListItem)obj;
+		if (priority == null) {
+			if (other.priority != null)
+				return false;
+		} else if (!priority.equals(other.priority))
+			return false;
+		if (value == null) {
+			if (other.value != null)
+				return false;
+		} else if (!value.equals(other.value))
+			return false;
+		return true;
 	}
 
-	
-	
-	
-	
+
+	public int compareTo(AutoCompletionListItem other) {
+		int ret = this.priority.compareTo(other.priority);
+		if (ret != 0)
+			return ret;
+		else
+			return this.value.compareTo(other.value);
+	}
+
+
+
+
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionListRenderer.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionListRenderer.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/ac/AutoCompletionListRenderer.java	(revision 15319)
@@ -13,5 +13,5 @@
  * This is the table cell renderer for the list of auto completion list items.
  * 
- * It uses an instance of {@Link JLabel} to render an {@link AutoCompletionListItem}.  
+ * It uses an instance of {@Link JLabel} to render an {@link AutoCompletionListItem}.
  * 
  *
@@ -23,54 +23,54 @@
 	static public final String RES_SELECTION_ICON = "/resources/selection.gif";
 	public static final Color BG_COLOR_SELECTED = new Color(143,170,255);
-	
+
 	/** the renderer component */
-	private JLabel renderer;
-	
+	private final JLabel renderer;
+
 	/** the icon used to decorate items of priority
-	 *  {@link AutoCompletionItemPritority#IS_IN_STANDARD} 
+	 *  {@link AutoCompletionItemPritority#IS_IN_STANDARD}
 	 */
 	private Icon iconStandard;
-	
-	/** the icon used to decorate items of priority 
+
+	/** the icon used to decorate items of priority
 	 *  {@link AutoCompletionItemPritority#IS_IN_SELECTION}
 	 */
 	private Icon iconSelection;
-	
+
 	/**
-	 * constructor 
+	 * constructor
 	 */
 	public AutoCompletionListRenderer() {
 		renderer = new JLabel();
 		renderer.setOpaque(true);
-		
+
 		loadIcons();
 	}
-	
+
 	/**
-	 * loads the icons 
+	 * loads the icons
 	 */
 	protected void loadIcons() {
 		java.net.URL imgURL = getClass().getResource(RES_OSM_ICON);
-	    if (imgURL != null) {
-	    	iconStandard = new ImageIcon(imgURL);
-	    } else {
-	        System.err.println("Could not load icon: " + RES_OSM_ICON);
-	        iconStandard = null;
-	    }
-	    
+		if (imgURL != null) {
+			iconStandard = new ImageIcon(imgURL);
+		} else {
+			System.err.println("Could not load icon: " + RES_OSM_ICON);
+			iconStandard = null;
+		}
+
 		imgURL = getClass().getResource(RES_SELECTION_ICON);
-	    if (imgURL != null) {
-	    	iconSelection = new ImageIcon(imgURL);
-	    } else {
-	        System.err.println("Could not load icon: " + RES_SELECTION_ICON);
-	        iconSelection = null;
-	    }
+		if (imgURL != null) {
+			iconSelection = new ImageIcon(imgURL);
+		} else {
+			System.err.println("Could not load icon: " + RES_SELECTION_ICON);
+			iconSelection = null;
+		}
 	}
-	
-	
+
+
 	/**
-	 * prepares the renderer for rendering a specific icon 
+	 * prepares the renderer for rendering a specific icon
 	 * 
-	 * @param item the item to be rendered 
+	 * @param item the item to be rendered
 	 */
 	protected void prepareRendererIcon(AutoCompletionListItem item) {
@@ -85,7 +85,7 @@
 		}
 	}
-	
+
 	/**
-	 * resets the renderer 
+	 * resets the renderer
 	 */
 	protected void resetRenderer() {
@@ -96,7 +96,7 @@
 		renderer.setForeground(Color.BLACK);
 	}
-	
+
 	/**
-	 * prepares background and text colors for a selected item 
+	 * prepares background and text colors for a selected item
 	 */
 	protected void renderSelected() {
@@ -104,11 +104,10 @@
 		renderer.setForeground(Color.WHITE);
 	}
-	
-	@Override
+
 	public Component getTableCellRendererComponent(JTable table, Object value,
 			boolean isSelected, boolean hasFocus, int row, int column) {
-		
+
 		resetRenderer();
-		// set icon and text 
+		// set icon and text
 		//
 		if (value instanceof AutoCompletionListItem) {
@@ -121,17 +120,17 @@
 			renderer.setText("<null>");
 		}
-		
-		// prepare background and foreground for a selected item 
+
+		// prepare background and foreground for a selected item
 		//
 		if (isSelected) {
 			renderSelected();
 		}
-		
-		
+
+
 		return renderer;
-	
+
 	}
 
-	
-	
+
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetItemListCellRenderer.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetItemListCellRenderer.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetItemListCellRenderer.java	(revision 15319)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.tageditor.editor;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
@@ -11,18 +13,15 @@
 
 import org.openstreetmap.josm.plugins.tageditor.preset.Item;
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 public class PresetItemListCellRenderer extends JLabel implements
-		ListCellRenderer {
+ListCellRenderer {
 
 	private static final Logger logger = Logger.getLogger(PresetItemListCellRenderer.class.getName());
 	private static final Font DEFAULT_FONT =  new Font("SansSerif",Font.PLAIN,10);
 	public static final Color BG_COLOR_SELECTED = new Color(143,170,255);
-	
-	@Override
+
 	public Component getListCellRendererComponent(JList list, Object value,
 			int index, boolean isSelected, boolean cellHasFocus) {
-		
-	
+
 		Item item = (Item)value;
 		if (item == null) {
@@ -38,6 +37,6 @@
 			StringBuilder sb = new StringBuilder();
 			sb.append(item.getParent().getName())
-			  .append("/")
-			  .append(item.getName());
+			.append("/")
+			.append(item.getName());
 			setText(sb.toString());
 			setOpaque(true);
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetManager.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetManager.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/PresetManager.java	(revision 15319)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.tageditor.editor;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Dimension;
@@ -14,18 +16,17 @@
 
 import org.openstreetmap.josm.plugins.tageditor.preset.Item;
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 public class PresetManager extends JPanel {
 
 	static private Logger logger = Logger.getLogger(PresetManager.class.getName());
-	
+
 	private JComboBox presets;
-	private JButton btnRemove; 
+	private JButton btnRemove;
 	private JButton btnHighlight;
 	private TagEditorModel model = null;
-	
+
 	protected void build() {
 		setLayout(new FlowLayout(FlowLayout.LEFT));
-		
+
 		// create the combobox to display the list of applied presets
 		//
@@ -38,37 +39,34 @@
 			}
 		};
-		
+
 		presets.addItemListener(
-			new ItemListener(){
-				@Override
-				public void itemStateChanged(ItemEvent e) {
-					syncWidgetStates();
+				new ItemListener(){
+					public void itemStateChanged(ItemEvent e) {
+						syncWidgetStates();
+					}
 				}
-			}
 		);
-		
+
 		presets.setRenderer(new PresetItemListCellRenderer());
 		add(presets);
-	
+
 		btnHighlight = new JButton(tr("Highlight"));
 		btnHighlight.addActionListener(
 				new ActionListener()  {
-					@Override
 					public void actionPerformed(ActionEvent arg0) {
 						highlightCurrentPreset();
 					}
 				}
-			);
-		
+		);
+
 		add(btnHighlight);
-		
+
 		btnRemove = new JButton(tr("Remove"));
 		btnRemove.addActionListener(
-			new ActionListener()  {
-				@Override
-				public void actionPerformed(ActionEvent arg0) {
-					removeCurrentPreset();
+				new ActionListener()  {
+					public void actionPerformed(ActionEvent arg0) {
+						removeCurrentPreset();
+					}
 				}
-			}
 		);
 
@@ -76,10 +74,10 @@
 		syncWidgetStates();
 	}
-	
+
 	protected void syncWidgetStates() {
 		btnRemove.setEnabled(presets.getSelectedItem() != null);
 		btnHighlight.setEnabled(presets.getSelectedItem() != null);
 	}
-	
+
 	protected void removeCurrentPreset() {
 		Item item= (Item)presets.getSelectedItem();
@@ -88,19 +86,19 @@
 		}
 	}
-	
+
 	protected void highlightCurrentPreset() {
 		model.highlightCurrentPreset();
 	}
-	
+
 	public PresetManager() {
 		build();
 	}
-	
+
 	public void setModel(TagEditorModel model) {
 		presets.setModel(model.getAppliedPresetsModel());
 		this.model = model;
 	}
-	
-	
-	
+
+
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/RunnableAction.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/RunnableAction.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/RunnableAction.java	(revision 15319)
@@ -7,13 +7,11 @@
 public abstract class RunnableAction extends AbstractAction implements Runnable {
 
-	public RunnableAction() {		
+	public RunnableAction() {
 	}
 
-	@Override
 	public abstract void run();
 
-	@Override
 	public void actionPerformed(ActionEvent arg0) {
-		run();		
+		run();
 	}
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TableCellEditor.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TableCellEditor.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TableCellEditor.java	(revision 15319)
@@ -3,5 +3,4 @@
 
 import java.awt.Component;
-import java.util.Collection;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -10,6 +9,4 @@
 import javax.swing.JTable;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.plugins.tageditor.ac.AutoCompletionCache;
 import org.openstreetmap.josm.plugins.tageditor.ac.AutoCompletionContext;
@@ -28,5 +25,5 @@
 @SuppressWarnings("serial")
 public class TableCellEditor extends AbstractCellEditor implements javax.swing.table.TableCellEditor, IAutoCompletionListListener{
-	
+
 	/** the logger object */
 	static private Logger logger = Logger.getLogger(TableCellEditor.class.getName());
@@ -39,11 +36,11 @@
 	/** the cache of auto completion items derived from the current JOSM data set */
 	private AutoCompletionCache acCache = null;
-	
+
 	/** user input is matched against this list of auto completion items */
 	private AutoCompletionList autoCompletionList = null;
-	
-
-	/**
-	 * constructor 
+
+
+	/**
+	 * constructor
 	 */
 	public TableCellEditor() {
@@ -51,27 +48,27 @@
 		acCache = new AutoCompletionCache();
 	}
-	
+
 	/**
 	 * initializes  the auto completion list when the table cell editor starts
-	 * to edit the key of a tag. In this case the auto completion list is 
+	 * to edit the key of a tag. In this case the auto completion list is
 	 * initialized with the set of standard key values and the set of current key
-	 * values from the the current JOSM data set. Keys already present in the 
+	 * values from the the current JOSM data set. Keys already present in the
 	 * current tag model are removed from the auto completion list.
-	 *  
-	 * @param model  the tag editor model  
-	 * @param currentTag  the current tag 
+	 * 
+	 * @param model  the tag editor model
+	 * @param currentTag  the current tag
 	 */
 	protected void initAutoCompletionListForKeys(TagEditorModel model, TagModel currentTag) {
 		AutoCompletionContext context = new AutoCompletionContext();
 		context.initFromJOSMSelection();
-		
+
 		if (autoCompletionList == null) {
 			logger.warning("autoCompletionList is null. Make sure an instance of AutoCompletionList is injected into TableCellEditor.");
 			return;
 		}
-		
+
 		autoCompletionList.clear();
-		
-		// add the list of standard keys 
+
+		// add the list of standard keys
 		//
 		try {
@@ -80,7 +77,7 @@
 			logger.log(Level.WARNING, "failed to initialize auto completion list with standard keys.", e);
 		}
-		
-		
-		
+
+
+
 		// add the list of keys in the current data set
 		//
@@ -90,5 +87,5 @@
 			);
 		}
-		
+
 		// remove the keys already present in the current tag model
 		//
@@ -100,6 +97,6 @@
 		autoCompletionList.fireTableDataChanged();
 	}
-	
-	
+
+
 	/**
 	 * initializes the auto completion list when the cell editor starts to edit
@@ -108,16 +105,16 @@
 	 * current data set for the given key.
 	 * 
-	 * @param forKey the key 
+	 * @param forKey the key
 	 */
 	protected void initAutoCompletionListForValues(String forKey) {
-		
+
 		if (autoCompletionList == null) {
 			logger.warning("autoCompletionList is null. Make sure an instance of AutoCompletionList is injected into TableCellEditor.");
 			return;
-		}		
+		}
 		autoCompletionList.clear();
 		AutoCompletionContext context = new AutoCompletionContext();
 		context.initFromJOSMSelection();
-		
+
 		// add the list of standard values for the given key
 		//
@@ -129,5 +126,5 @@
 			logger.log(Level.WARNING, "failed to initialize auto completion list with standard values", e);
 		}
-		
+
 		for (String value : acCache.getValues(forKey)) {
 			autoCompletionList.add(
@@ -135,5 +132,5 @@
 			);
 		}
-		
+
 		//  add the list of possible values for a key from the current selection
 		//
@@ -142,50 +139,46 @@
 				//logger.info("adding ac item " + value + " with priority IN_SELECTION");;
 				autoCompletionList.add(
-						new AutoCompletionListItem(value, AutoCompletionItemPritority.IS_IN_SELECTION)					
+						new AutoCompletionListItem(value, AutoCompletionItemPritority.IS_IN_SELECTION)
 				);
 			}
 		}
 	}
-	
-	
-	/**
-	 * replies the table cell editor 
-	 */
-	@Override public Component getTableCellEditorComponent(JTable table,
-            Object value, boolean isSelected, int row, int column) {	
-			currentTag = (TagModel) value;
-			
-			if (column == 0) {				
-				editor.setText(currentTag.getName());
-				currentColumn = 0;
-				TagEditorModel model = (TagEditorModel)table.getModel();
-				initAutoCompletionListForKeys(model, currentTag);		
-				return editor; 
-			} else if (column == 1) {
-		
-				if (currentTag.getValueCount() == 0) {
-					editor.setText("");
-				} else if (currentTag.getValueCount() == 1) {
-					editor.setText(currentTag.getValues().get(0));
-				} else {
-					editor.setText("");
-				}
-				currentColumn = 1;
-				initAutoCompletionListForValues(currentTag.getName());
-				return editor; 
+
+
+	/**
+	 * replies the table cell editor
+	 */
+	public Component getTableCellEditorComponent(JTable table,
+			Object value, boolean isSelected, int row, int column) {
+		currentTag = (TagModel) value;
+
+		if (column == 0) {
+			editor.setText(currentTag.getName());
+			currentColumn = 0;
+			TagEditorModel model = (TagEditorModel)table.getModel();
+			initAutoCompletionListForKeys(model, currentTag);
+			return editor;
+		} else if (column == 1) {
+
+			if (currentTag.getValueCount() == 0) {
+				editor.setText("");
+			} else if (currentTag.getValueCount() == 1) {
+				editor.setText(currentTag.getValues().get(0));
 			} else {
-				logger.warning("column this table cell editor is requested for is out of range. column=" + column);
-				return null; 
-			}
-    }
-
-		
-	@Override 
+				editor.setText("");
+			}
+			currentColumn = 1;
+			initAutoCompletionListForValues(currentTag.getName());
+			return editor;
+		} else {
+			logger.warning("column this table cell editor is requested for is out of range. column=" + column);
+			return null;
+		}
+	}
+
 	public Object getCellEditorValue() {
 		return editor.getText();
-    }
-
-	
-	
+	}
+
 	@Override
 	public void cancelCellEditing() {
@@ -198,17 +191,17 @@
 			logger.warning("no tag editor model set. Can't update edited values. Please set tag editor model first");
 			return super.stopCellEditing();
-	    }
-		
+		}
+
 		if (currentColumn == 0) {
 			tagEditorModel.updateTagName(currentTag, editor.getText());
 		} else if (currentColumn == 1){
 			if (currentTag.getValueCount() > 1 && ! editor.getText().equals("")) {
-				tagEditorModel.updateTagValue(currentTag, editor.getText());		
+				tagEditorModel.updateTagValue(currentTag, editor.getText());
 			} else if (currentTag.getValueCount() <= 1) {
 				tagEditorModel.updateTagValue(currentTag, editor.getText());
 			}
 		}
-	    
-		return super.stopCellEditing(); 
+
+		return super.stopCellEditing();
 	}
 
@@ -216,26 +209,23 @@
 	 * replies the {@link AutoCompletionList} this table cell editor synchronizes with
 	 * 
-	 * @return the auto completion list 
+	 * @return the auto completion list
 	 */
 	public AutoCompletionList getAutoCompletionList() {
-    	return autoCompletionList;
-    }
-
-	/**
-	 * sets the {@link AutoCompletionList} this table cell editor synchronizes with  
-	 * @param autoCompletionList the auto completion list 
+		return autoCompletionList;
+	}
+
+	/**
+	 * sets the {@link AutoCompletionList} this table cell editor synchronizes with
+	 * @param autoCompletionList the auto completion list
 	 */
 	public void setAutoCompletionList(AutoCompletionList autoCompletionList) {
-    	this.autoCompletionList = autoCompletionList;
-    	editor.setAutoCompletionList(autoCompletionList);
-    }
-	
+		this.autoCompletionList = autoCompletionList;
+		editor.setAutoCompletionList(autoCompletionList);
+	}
+
 	public void setAutoCompletionCache(AutoCompletionCache acCache) {
 		this.acCache = acCache;
 	}
-	
-
-	
-	@Override
+
 	public void autoCompletionItemSelected(String item) {
 		editor.setText(item);
@@ -243,17 +233,17 @@
 		editor.requestFocus();
 	}
-	
+
 	public TagFieldEditor getEditor() {
 		return editor;
 	}
-	
+
 	/**
 	 * sets the tag editor model
-	 *  
-	 * @param tagEditorModel  the tag editor model 
+	 * 
+	 * @param tagEditorModel  the tag editor model
 	 */
 	public void setTagEditorModel(TagEditorModel tagEditorModel) {
 		this.tagEditorModel = tagEditorModel;
 	}
-	
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditor.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditor.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditor.java	(revision 15319)
@@ -11,5 +11,4 @@
 import javax.swing.ScrollPaneConstants;
 
-
 import org.openstreetmap.josm.plugins.tageditor.ac.AutoCompletionCache;
 import org.openstreetmap.josm.plugins.tageditor.ac.AutoCompletionList;
@@ -20,5 +19,5 @@
  * TagEditor is a {@link JPanel} which consists of a two sub panels:
  * <ul>
- *   <li>a small area in which a drop-down box with a list of presets is displayed. 
+ *   <li>a small area in which a drop-down box with a list of presets is displayed.
  *       Two buttons allow to highlight and remove a presets respectively.</li>
  *   <li>the main table with the tag names and tag values
@@ -30,9 +29,9 @@
  *    <li>an instance of {@link TagEditorModel} - use {@see #setTagEditorModel(TagEditorModel)}</li>
  *    <li>an instance of {@link AutoCompletionCache} - inject it using {@see #setAutoCompletionCache(AutoCompletionCache)}.
- *      The table cell editor used by the table in this component uses the AutoCompletionCache in order to 
+ *      The table cell editor used by the table in this component uses the AutoCompletionCache in order to
  *      build up a list of auto completion values from the current data set</li>
  *    <li>an instance of {@link AutoCompletionList} - inject it using {@see #setAutoCompletionList(AutoCompletionList)}.
  *      The table cell editor used by the table in this component uses the AutoCompletionList
- *      to build up a list of auto completion values from the set of  standardized 
+ *      to build up a list of auto completion values from the set of  standardized
  *      OSM tags</li>
  *  </ul>O
@@ -41,11 +40,11 @@
  *  <pre>
  *     AutoCompletionList autoCompletionList = .... // init the autocompletion list
- *     AutoCompletionCache autoCompletionCache = ... // init the auto completion cache 
- *     TagEditorModel model = ... // init the tag editor model 
- *     
+ *     AutoCompletionCache autoCompletionCache = ... // init the auto completion cache
+ *     TagEditorModel model = ... // init the tag editor model
+ * 
  *     TagEditor tagEditor = new TagEditor();
  *     tagEditor.setTagEditorModel(model);
  *     tagEditor.setAutoCompletionList(autoCompletionList);
- *     tagEditor.setAutoCompletionCache(autoCompletionCache); 
+ *     tagEditor.setAutoCompletionCache(autoCompletionCache);
  *  </pre>
  */
@@ -53,11 +52,11 @@
 
 	private static final Logger logger = Logger.getLogger(TagEditor.class.getName());
-	
-	private TagEditorModel tagEditorModel;
+
+	private final TagEditorModel tagEditorModel;
 	private TagTable tblTagEditor;
 	private PresetManager presetManager;
 	private AutoCompletionList autoCompletionList;
-	
-	
+
+
 	/**
 	 * builds the GUI
@@ -66,5 +65,5 @@
 	protected void build() {
 		setLayout(new BorderLayout());
-		
+
 		// build the scrollable table for editing tag names and tag values
 		//
@@ -74,7 +73,7 @@
 		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
 		add(scrollPane, BorderLayout.CENTER);
-		
+
 		// this adapters ensures that the width of the tag table columns is adjusted
-		// to the width of the scroll pane viewport. Also tried to overwrite 
+		// to the width of the scroll pane viewport. Also tried to overwrite
 		// getPreferredViewportSize() in JTable, but did not work.
 		//
@@ -82,34 +81,34 @@
 				new ComponentAdapter() {
 					@Override public void componentResized(ComponentEvent e) {
-	                    super.componentResized(e);
-	                    Dimension d = scrollPane.getViewport().getExtentSize();
-	                    tblTagEditor.adjustColumnWidth(d.width);
-                    }
+						super.componentResized(e);
+						Dimension d = scrollPane.getViewport().getExtentSize();
+						tblTagEditor.adjustColumnWidth(d.width);
+					}
 				}
 		);
-		
-		// build the preset manager which shows a list of applied presets 
-		// 
+
+		// build the preset manager which shows a list of applied presets
+		//
 		presetManager = new PresetManager();
 		presetManager.setModel(tagEditorModel);
 		add(presetManager, BorderLayout.NORTH);
 	}
-	
-	
+
+
 	/**
-	 * constructor 
+	 * constructor
 	 */
 	public TagEditor() {
-		// creates a default model and a default cache 
+		// creates a default model and a default cache
 		//
-		tagEditorModel = new TagEditorModel();		
-		
+		tagEditorModel = new TagEditorModel();
+
 		build();
 	}
 
-	
+
 	/**
-	 * replies the tag editor model 
-	 * @return the tag editor model 
+	 * replies the tag editor model
+	 * @return the tag editor model
 	 */
 	public TagEditorModel getTagEditorModel() {
@@ -120,5 +119,5 @@
 	 * sets the tag editor model
 	 * 
-	 * @param tagEditorModel the tag editor model 
+	 * @param tagEditorModel the tag editor model
 	 */
 	public void setTagEditorModel(TagEditorModel tagEditorModel) {
@@ -132,21 +131,21 @@
 		presetManager.setModel(tagEditorModel);
 	}
-	
+
 	public RunnableAction getDeleteAction() {
 		return tblTagEditor.getDeleteAction();
 	}
-	
+
 	public RunnableAction getAddAction() {
 		return tblTagEditor.getAddAction();
 	}
-	
-	
-	
+
+
+
 	public void clearSelection() {
 		tblTagEditor.getSelectionModel().clearSelection();
 	}
-	
 
-	
+
+
 	public void stopEditing() {
 		TableCellEditor editor = (TableCellEditor) tblTagEditor.getCellEditor();
@@ -155,6 +154,6 @@
 		}
 	}
-	
-	
+
+
 	public AutoCompletionList getAutoCompletionList() {
 		return ((org.openstreetmap.josm.plugins.tageditor.editor.TableCellEditor)tblTagEditor.getCellEditor()).getAutoCompletionList();
@@ -164,10 +163,10 @@
 		tblTagEditor.setAutoCompletionList(autoCompletionList);
 	}
-	
+
 	public void setAutoCompletionCache(AutoCompletionCache acCache) {
 		tblTagEditor.setAutoCompletionCache(acCache);
 	}
 
-	@Override
+
 	public void autoCompletionItemSelected(String item) {
 		org.openstreetmap.josm.plugins.tageditor.editor.TableCellEditor editor = ((org.openstreetmap.josm.plugins.tageditor.editor.TableCellEditor)tblTagEditor.getCellEditor());
@@ -180,9 +179,9 @@
 		tblTagEditor.requestFocusInCell(0,0);
 	}
-		
-	
-	
-	
-	
-	
+
+
+
+
+
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditorModel.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditorModel.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagEditorModel.java	(revision 15319)
@@ -13,5 +13,4 @@
 
 import javax.swing.DefaultComboBoxModel;
-import javax.swing.SwingUtilities;
 import javax.swing.table.AbstractTableModel;
 
@@ -27,6 +26,6 @@
 
 /**
- * TagEditorModel is a table model. 
- *  
+ * TagEditorModel is a table model.
+ * 
  * 
  * @author gubaer
@@ -36,18 +35,18 @@
 public class TagEditorModel extends AbstractTableModel {
 	static private final Logger logger = Logger.getLogger(TagEditorModel.class.getName());
-	
-	static public final String PROP_DIRTY = TagEditorModel.class.getName() + ".dirty"; 
-	
+
+	static public final String PROP_DIRTY = TagEditorModel.class.getName() + ".dirty";
+
 	/** the list holding the tags */
-	private  ArrayList<TagModel> tags = null; 
+	private  ArrayList<TagModel> tags = null;
 	private  ArrayList<Item> items = null;
-	
+
 	/** indicates whether the model is dirty */
-	private boolean dirty =  false;	
+	private boolean dirty =  false;
 	private PropertyChangeSupport propChangeSupport = null;
-	
+
 	private DefaultComboBoxModel appliedPresets = null;
 
-	
+
 	/**
 	 * constructor
@@ -63,13 +62,13 @@
 		propChangeSupport.addPropertyChangeListener(listener);
 	}
-	
+
 	public void removeProperyChangeListener(PropertyChangeListener listener) {
 		propChangeSupport.removePropertyChangeListener(listener);
 	}
-	
+
 	protected void fireDirtyStateChanged(final boolean oldValue, final boolean newValue) {
 		propChangeSupport.firePropertyChange(PROP_DIRTY, oldValue, newValue);
 	}
-	
+
 	protected void setDirty(boolean newValue) {
 		boolean oldValue = dirty;
@@ -79,31 +78,30 @@
 		}
 	}
-	
-	@Override public int getColumnCount() {
-	    return 2;
-    }
-
-	@Override public int getRowCount() {
-	    return tags.size();
-    }
-
-	@Override public Object getValueAt(int rowIndex, int columnIndex) {
-		if (rowIndex >= getRowCount()) {
+
+	public int getColumnCount() {
+		return 2;
+	}
+
+	public int getRowCount() {
+		return tags.size();
+	}
+
+	public Object getValueAt(int rowIndex, int columnIndex) {
+		if (rowIndex >= getRowCount())
 			throw new IndexOutOfBoundsException("unexpected rowIndex: rowIndex=" + rowIndex);
-		}
-		
+
 		TagModel tag = tags.get(rowIndex);
 		switch(columnIndex) {
 		case 0:
-		case 1: return tag; 
-	
-		default: 
+		case 1: return tag;
+
+		default:
 			throw new IndexOutOfBoundsException("unexpected columnIndex: columnIndex=" + columnIndex);
-		}		
-    }
-	
-	
-	/**
-	 * removes all tags in the model 
+		}
+	}
+
+
+	/**
+	 * removes all tags in the model
 	 */
 	public void clear() {
@@ -113,5 +111,5 @@
 		fireTableDataChanged();
 	}
-	
+
 	/**
 	 * adds a tag to the model
@@ -122,31 +120,29 @@
 	 */
 	public void add(TagModel tag) {
-		if (tag == null) {
+		if (tag == null)
 			throw new IllegalArgumentException("argument 'tag' must not be null");
-		}
 		tags.add(tag);
 		setDirty(true);
 		fireTableDataChanged();
 	}
-	
-	
+
+
 	public void prepend(TagModel tag) {
-		if (tag == null) {
+		if (tag == null)
 			throw new IllegalArgumentException("argument 'tag' must not be null");
-		}
 		tags.add(0, tag);
 		setDirty(true);
 		fireTableDataChanged();
 	}
-	
-	
-	/**
-	 * adds a tag given by a name/value pair to the tag editor model. 
+
+
+	/**
+	 * adds a tag given by a name/value pair to the tag editor model.
 	 * 
 	 * If there is no tag with name <code>name</name> yet, a new {@link TagModel} is created
 	 * and append to this model.
 	 * 
-	 * If there is a tag with name <code>name</name>, <code>value</code> is merged to the list 
-	 * of values for this tag. 
+	 * If there is a tag with name <code>name</name>, <code>value</code> is merged to the list
+	 * of values for this tag.
 	 * 
 	 * @param name the name; converted to "" if null
@@ -156,5 +152,5 @@
 		name = (name == null) ? "" : name;
 		value = (value == null) ? "" : value;
-		
+
 		TagModel tag = get(name);
 		if (tag == null) {
@@ -163,24 +159,23 @@
 		} else {
 			tag.addValue(value);
-		}	
-		setDirty(true);
-	}
-	
-	
-	/**
-	 * replies the tag with name <code>name</code>; null, if no such tag exists 
-	 * @param name the tag name 
-	 * @return the tag with name <code>name</code>; null, if no such tag exists 
+		}
+		setDirty(true);
+	}
+
+
+	/**
+	 * replies the tag with name <code>name</code>; null, if no such tag exists
+	 * @param name the tag name
+	 * @return the tag with name <code>name</code>; null, if no such tag exists
 	 */
 	public TagModel get(String name) {
 		name = (name == null) ? "" : name;
 		for (TagModel tag : tags) {
-			if (tag.getName().equals(name)) {
-				return tag; 
-			}
-		}
-		return null; 
-	}
-	
+			if (tag.getName().equals(name))
+				return tag;
+		}
+		return null;
+	}
+
 	public TagModel get(int idx) {
 		TagModel tagModel = tags.get(idx);
@@ -189,20 +184,19 @@
 
 
-	
+
 	@Override public boolean isCellEditable(int row, int col) {
 		// all cells are editable
 		return true;
-    }
-
-
-	/**
-	 * deletes the names of the tags given by tagIndices 
-	 * 
-	 * @param tagIndices a list of tag indices 
+	}
+
+
+	/**
+	 * deletes the names of the tags given by tagIndices
+	 * 
+	 * @param tagIndices a list of tag indices
 	 */
 	public void deleteTagNames(int [] tagIndices) {
-		if (tags == null) {
-			return; 
-		}
+		if (tags == null)
+			return;
 		for (int tagIdx : tagIndices) {
 			TagModel tag = tags.get(tagIdx);
@@ -218,10 +212,9 @@
 	 * deletes the values of the tags given by tagIndices
 	 * 
-	 * @param tagIndices the lit of tag indices 
+	 * @param tagIndices the lit of tag indices
 	 */
 	public void deleteTagValues(int [] tagIndices) {
-		if (tags == null) {
-			return; 
-		}
+		if (tags == null)
+			return;
 		for (int tagIdx : tagIndices) {
 			TagModel tag = tags.get(tagIdx);
@@ -233,14 +226,13 @@
 		setDirty(true);
 	}
-	
+
 	/**
 	 * deletes the tags given by tagIndices
 	 * 
-	 * @param tagIndices the list of tag indices 
+	 * @param tagIndices the list of tag indices
 	 */
 	public void deleteTags(int [] tagIndices) {
-		if (tags == null) {
-			return; 
-		}
+		if (tags == null)
+			return;
 		ArrayList<TagModel> toDelete = new ArrayList<TagModel>();
 		for (int tagIdx : tagIndices) {
@@ -256,8 +248,8 @@
 		setDirty(true);
 	}
-	
-	
-	/**
-	 * creates a new tag and appends it to the model 
+
+
+	/**
+	 * creates a new tag and appends it to the model
 	 */
 	public void appendNewTag() {
@@ -269,5 +261,5 @@
 
 	/**
-	 * makes sure the model includes at least one (empty) tag 
+	 * makes sure the model includes at least one (empty) tag
 	 */
 	public void ensureOneTag() {
@@ -276,5 +268,5 @@
 		}
 	}
-	
+
 	/**
 	 * initializes the model with the tags in the current JOSM selection
@@ -292,49 +284,46 @@
 		setDirty(false);
 	}
-	
-	
-	/**
-	 * checks whether the tag model includes a tag with a given key 
-	 * 
-	 * @param key  the key  
-	 * @return true, if the tag model includes the tag; false, otherwise 
+
+
+	/**
+	 * checks whether the tag model includes a tag with a given key
+	 * 
+	 * @param key  the key
+	 * @return true, if the tag model includes the tag; false, otherwise
 	 */
 	public boolean includesTag(String key) {
-		if (key == null) return false; 
+		if (key == null) return false;
 		for (TagModel tag : tags) {
-			if (tag.getName().equals(key)) {
-				return true; 
-			}
+			if (tag.getName().equals(key))
+				return true;
 		}
 		return false;
 	}
-	
+
 
 	protected Command createUpdateTagCommand(Collection<OsmPrimitive> primitives, TagModel tag) {
-		
+
 		// tag still holds an unchanged list of different values for the same key.
-		// no property change command required 
-		if (tag.getValueCount() > 1) {
+		// no property change command required
+		if (tag.getValueCount() > 1)
 			return null;
-		}
-		
-		// tag name holds an empty key. Don't apply it to the selection. 
-		// 
-		if (tag.getName().trim().equals("")) {
-			return null; 
-		}
-		
+
+		// tag name holds an empty key. Don't apply it to the selection.
+		//
+		if (tag.getName().trim().equals(""))
+			return null;
+
 		String newkey = tag.getName();
 		String newvalue = tag.getValue();
-		
+
 		ChangePropertyCommand command = new ChangePropertyCommand(primitives,newkey, newvalue);
-		return command; 		
-	}
-	
+		return command;
+	}
+
 	protected Command createDeleteTagsCommand(Collection<OsmPrimitive> primitives) {
-		
+
 		List<String> currentkeys = getKeys();
 		ArrayList<Command> commands = new ArrayList<Command>();
-		
+
 		for (OsmPrimitive primitive : primitives) {
 			if (primitive.keys == null) {
@@ -343,5 +332,5 @@
 			for (String oldkey : primitive.keys.keySet()) {
 				if (!currentkeys.contains(oldkey)) {
-					ChangePropertyCommand deleteCommand = 
+					ChangePropertyCommand deleteCommand =
 						new ChangePropertyCommand(primitive,oldkey,null);
 					commands.add(deleteCommand);
@@ -349,16 +338,16 @@
 			}
 		}
-		
+
 		SequenceCommand command = new SequenceCommand(
-			trn("Remove old keys from up to {0} object", "Remove old keys from up to {0} objects", primitives.size(), primitives.size()),
-			commands
+				trn("Remove old keys from up to {0} object", "Remove old keys from up to {0} objects", primitives.size(), primitives.size()),
+				commands
 		);
-		
+
 		return command;
 	}
-	
+
 	/**
 	 * updates the tags of the primitives in the current selection with the
-	 * values in the current tag model 
+	 * values in the current tag model
 	 * 
 	 */
@@ -366,7 +355,6 @@
 		ArrayList<Command> commands = new ArrayList<Command>();
 		Collection<OsmPrimitive> selection = Main.ds.getSelected();
-		if (selection == null) {
-			return; 
-		}
+		if (selection == null)
+			return;
 		for (TagModel tag : tags) {
 			Command command = createUpdateTagCommand(selection,tag);
@@ -379,15 +367,15 @@
 			commands.add(deleteCommand);
 		}
-		
+
 		SequenceCommand command = new SequenceCommand(
-			trn("Updating properties of up to {0} object", "Updating properties of up to {0} objects", selection.size(), selection.size()),
-			commands				
+				trn("Updating properties of up to {0} object", "Updating properties of up to {0} objects", selection.size(), selection.size()),
+				commands
 		);
-		
+
 		// executes the commands and adds them to the undo/redo chains
 		Main.main.undoRedo.add(command);
 	}
-	
-	
+
+
 	/**
 	 * replies the list of keys of the tags managed by this model
@@ -404,7 +392,7 @@
 		return keys;
 	}
-	
-	/**
-	 * sorts the current tags according alphabetical order of names 
+
+	/**
+	 * sorts the current tags according alphabetical order of names
 	 */
 	protected void sort() {
@@ -412,21 +400,20 @@
 				tags,
 				new Comparator<TagModel>() {
-					@Override
 					public int compare(TagModel self, TagModel other) {
 						return self.getName().compareTo(other.getName());
-					}					
+					}
 				}
 		);
 	}
 
-	
-	
-
-	/**
-	 * applies the tags defined for a preset item to the tag model. 
-	 * 
-	 * Mandatory tags are added to the list of currently edited tags. 
-	 * Optional tags are not added. 
-	 * The model remembers the currently applied presets. 
+
+
+
+	/**
+	 * applies the tags defined for a preset item to the tag model.
+	 * 
+	 * Mandatory tags are added to the list of currently edited tags.
+	 * Optional tags are not added.
+	 * The model remembers the currently applied presets.
 	 * 
 	 * @param item  the preset item. Must not be null.
@@ -435,17 +422,15 @@
 	 */
 	public void applyPreset(Item item) {
-		if (item == null) {
+		if (item == null)
 			throw new IllegalArgumentException("argument 'item' must not be null");
-		}
 		// check whether item is already applied
 		//
 		for(int i=0; i < appliedPresets.getSize(); i++) {
-			if (appliedPresets.getElementAt(i).equals(item)) {
-				// abort - preset already applied 
+			if (appliedPresets.getElementAt(i).equals(item))
+				// abort - preset already applied
 				return;
-			}
-		}
-		
-		// apply the tags proposed by the preset 
+		}
+
+		// apply the tags proposed by the preset
 		//
 		for(Tag tag : item.getTags()) {
@@ -466,5 +451,5 @@
 			}
 		}
-		
+
 		// remember the preset and make it the current preset
 		//
@@ -473,10 +458,10 @@
 		fireTableDataChanged();
 	}
-	
-	
+
+
 	/**
 	 * applies a tag given by a {@see KeyValuePair} to the model
 	 * 
-	 * @param pair the key value pair 
+	 * @param pair the key value pair
 	 */
 	public void applyKeyValuePair(KeyValuePair pair) {
@@ -490,6 +475,6 @@
 		fireTableDataChanged();
 	}
-	
-	
+
+
 	public DefaultComboBoxModel getAppliedPresetsModel() {
 		return appliedPresets;
@@ -497,7 +482,6 @@
 
 	public void removeAppliedPreset(Item item) {
-		if (item == null) {
-			return; 
-		}
+		if (item == null)
+			return;
 		for (Tag tag: item.getTags()) {
 			if (tag.getValue() != null) {
@@ -521,24 +505,24 @@
 			}
 		}
-		appliedPresets.removeElement(item);		
-		fireTableDataChanged();
-	}
-	
+		appliedPresets.removeElement(item);
+		fireTableDataChanged();
+	}
+
 	public void clearAppliedPresets() {
 		appliedPresets.removeAllElements();
 		fireTableDataChanged();
 	}
-	
+
 	public void highlightCurrentPreset() {
 		fireTableDataChanged();
 	}
-	
-	
-	/**
-	 * updates the name of a tag and sets the dirty state to  true if 
-	 * the new name is different from the old name.  
-	 * 
-	 * @param tag   the tag 
-	 * @param newName  the new name 
+
+
+	/**
+	 * updates the name of a tag and sets the dirty state to  true if
+	 * the new name is different from the old name.
+	 * 
+	 * @param tag   the tag
+	 * @param newName  the new name
 	 */
 	public void updateTagName(TagModel tag, String newName) {
@@ -549,11 +533,11 @@
 		}
 	}
-	
+
 	/**
 	 * updates the value value of a tag and sets the dirty state to true if the
-	 * new name is different from the old name 
-	 * 
-	 * @param tag  the tag 
-	 * @param newValue  the new value 
+	 * new name is different from the old name
+	 * 
+	 * @param tag  the tag
+	 * @param newValue  the new value
 	 */
 	public void updateTagValue(TagModel tag, String newValue) {
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagTable.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagTable.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/editor/TagTable.java	(revision 15319)
@@ -34,5 +34,5 @@
 
 /**
- * This is the tabular editor component for OSM tags. 
+ * This is the tabular editor component for OSM tags.
  * 
  * 
@@ -42,18 +42,18 @@
 @SuppressWarnings("serial")
 public class TagTable extends JTable  {
-	
+
 	private static Logger logger = Logger.getLogger(TagTable.class.getName());
-	
-
-	
+
+
+
 	/** the table cell editor used by this table */
 	private TableCellEditor editor = null;
-	
-	
-	
-	/**
-	 * The table has three columns. In the first column, we display error and 
+
+
+
+	/**
+	 * The table has three columns. In the first column, we display error and
 	 * warning indications. The second column is used for editing rendering and
-	 * editing tag keys, the third for rendering and editing tag values. 
+	 * editing tag keys, the third for rendering and editing tag values.
 	 * 
 	 * @author gubaer
@@ -61,10 +61,10 @@
 	 */
 	static class TagTableColumnModel extends DefaultTableColumnModel {
-		
+
 		public TagTableColumnModel() {
 			TableColumn col = null;
 			TableCellRenderer renderer = new TableCellRenderer();
-						
-			
+
+
 			// column 0 - tag key
 			col = new TableColumn(0);
@@ -73,5 +73,5 @@
 			col.setCellRenderer(renderer);
 			addColumn(col);
-		
+
 			// column 1 - tag value
 			col = new TableColumn(1);
@@ -80,9 +80,9 @@
 			col.setCellRenderer(renderer);
 			addColumn(col);
-		
-		}
-	}
-
-	
+
+		}
+	}
+
+
 	/**
 	 * Action to be run when the user navigates to the next cell in the table,
@@ -91,5 +91,5 @@
 	 * <ul>
 	 *   <li>it jumps over cells in the first column</li>
-	 *   <li>it automatically add a new empty row when the user leaves the 
+	 *   <li>it automatically add a new empty row when the user leaves the
 	 *   last cell in the table</li>
 	 * <ul>
@@ -99,15 +99,15 @@
 	 */
 	class SelectNextColumnCellAction extends AbstractAction  {
-		@Override public void actionPerformed(ActionEvent e) {
+		public void actionPerformed(ActionEvent e) {
 			run();
-        }
-		
+		}
+
 		public void run() {
 			int col = getSelectedColumn();
 			int row = getSelectedRow();
 			if (getCellEditor() != null) {
-				getCellEditor().stopCellEditing();				
-			}
-			
+				getCellEditor().stopCellEditing();
+			}
+
 			if (col == 0) {
 				col++;
@@ -123,10 +123,10 @@
 				row++;
 			}
-			changeSelection(row, col, false, false);	
-		
-		}
-	}
-	
-	
+			changeSelection(row, col, false, false);
+
+		}
+	}
+
+
 	/**
 	 * Action to be run when the user navigates to the previous cell in the table,
@@ -138,13 +138,13 @@
 	class SelectPreviousColumnCellAction extends AbstractAction  {
 
-		@Override public void actionPerformed(ActionEvent e) {
+		public void actionPerformed(ActionEvent e) {
 
 			int col = getSelectedColumn();
 			int row = getSelectedRow();
 			if (getCellEditor() != null) {
-				getCellEditor().stopCellEditing();				
-			}
-
-			
+				getCellEditor().stopCellEditing();
+			}
+
+
 			if (col == 0 && row == 0) {
 				// change nothing
@@ -155,8 +155,8 @@
 				row--;
 			}
-			changeSelection(row, col, false, false);			
-        }
-	}
-	
+			changeSelection(row, col, false, false);
+		}
+	}
+
 	/**
 	 * Action to be run when the user invokes a delete action on the table, for
@@ -169,14 +169,13 @@
 	 * the selected tags are set to the empty string.
 	 * 
-	 * If the current selection consists of cell in the third column only, the values of the 
+	 * If the current selection consists of cell in the third column only, the values of the
 	 * selected tags are set to the empty string.
 	 * 
-	 *  If the current selection consists of cells in the second and the third column, 
+	 *  If the current selection consists of cells in the second and the third column,
 	 *  the selected tags are removed from the model.
-	 *  
+	 * 
 	 *  This action listens to the table selection. It becomes enabled when the selection
-	 *  is non-empty, otherwise it is disabled. 
-	 *  
-	 * @author guaber
+	 *  is non-empty, otherwise it is disabled.
+	 * 
 	 *
 	 */
@@ -184,5 +183,5 @@
 
 		/**
-		 * delete a selection of tag names 
+		 * delete a selection of tag names
 		 */
 		protected void deleteTagNames() {
@@ -191,25 +190,25 @@
 			model.deleteTagNames(rows);
 		}
-		
+
 		/**
-		 * delete a selection of tag values 
+		 * delete a selection of tag values
 		 */
 		protected void deleteTagValues() {
 			int[] rows = getSelectedRows();
 			TagEditorModel model = (TagEditorModel)getModel();
-			model.deleteTagValues(rows);			
-		}
-		
+			model.deleteTagValues(rows);
+		}
+
 		/**
-		 * delete a selection of tags 
+		 * delete a selection of tags
 		 */
 		protected void deleteTags() {
 			int[] rows = getSelectedRows();
 			TagEditorModel model = (TagEditorModel)getModel();
-			model.deleteTags(rows);			
-		}
-		
+			model.deleteTags(rows);
+		}
+
 		/**
-		 * constructor 
+		 * constructor
 		 */
 		public DeleteAction() {
@@ -218,11 +217,11 @@
 			getColumnModel().getSelectionModel().addListSelectionListener(this);
 		}
-		
-			
-		
+
+
+
+		@Override
 		public void run() {
-			if (!isEnabled()) {
+			if (!isEnabled())
 				return;
-			}
 			getCellEditor().stopCellEditing();
 			if (getSelectedColumnCount() == 1) {
@@ -231,9 +230,8 @@
 				} else if (getSelectedColumn() == 1) {
 					deleteTagValues();
-				} else {
+				} else
 					// should not happen
 					//
-					throw new IllegalStateException("unexpected selected clolumn: getSelectedColumn() is " + getSelectedColumn());					
-				}
+					throw new IllegalStateException("unexpected selected clolumn: getSelectedColumn() is " + getSelectedColumn());
 			} else if (getSelectedColumnCount() == 2) {
 				deleteTags();
@@ -242,12 +240,12 @@
 			if (model.getRowCount() == 0) {
 				model.ensureOneTag();
-				requestFocusInCell(0, 0);					
+				requestFocusInCell(0, 0);
 			}
 		}
 
 		/**
-		 * listens to the table selection model 
+		 * listens to the table selection model
 		 */
-		@Override public void valueChanged(ListSelectionEvent e) {
+		public void valueChanged(ListSelectionEvent e) {
 			if (isEditing() && getSelectedColumnCount() == 1 && getSelectedRowCount() == 1) {
 				setEnabled(false);
@@ -258,9 +256,9 @@
 			} else {
 				setEnabled(false);
-			}	   
-		
-        }
-	}
-	
+			}
+
+		}
+	}
+
 	/**
 	 * Action to be run when the user adds a new tag.
@@ -269,53 +267,54 @@
 	 */
 	class AddAction extends RunnableAction {
-		
+
 		public AddAction() {
 			putValue(Action.NAME, tr("Add"));
 		}
-				
+
+		@Override
 		public void run() {
-			getCellEditor().stopCellEditing();	
+			getCellEditor().stopCellEditing();
 			((TagEditorModel)getModel()).appendNewTag();
 			final int rowIdx = getModel().getRowCount()-1;
-			requestFocusInCell(rowIdx, 0);						
-		}
-	}
-	
+			requestFocusInCell(rowIdx, 0);
+		}
+	}
+
 
 	/** the delete action */
 	private RunnableAction deleteAction = null;
-	
+
 	/** the add action */
 	private RunnableAction addAction = null;
-	
-	/**
-	 * 
-	 * @return the delete action used by this table 
+
+	/**
+	 * 
+	 * @return the delete action used by this table
 	 */
 	public RunnableAction getDeleteAction() {
 		return deleteAction;
 	}
-	
+
 	public RunnableAction getAddAction() {
 		return addAction;
 	}
 
-	
-	/**
-	 * initialize the table 
+
+	/**
+	 * initialize the table
 	 */
 	protected void init() {
-		
-		
-		setAutoResizeMode(JTable.AUTO_RESIZE_OFF);		
+
+
+		setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
 		setCellSelectionEnabled(true);
 		setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
-		
-
-				
+
+
+
 		// make ENTER behave like TAB
 		//
 		getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
-			.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "selectNextColumnCell");
+		.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "selectNextColumnCell");
 
 		// install custom navigation actions
@@ -328,13 +327,13 @@
 		//
 		deleteAction = new DeleteAction();
-		
+
 		// create the add action
 		//
 		addAction = new AddAction();
 		getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
-			.put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.CTRL_MASK), "addTag");
+		.put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.CTRL_MASK), "addTag");
 		getActionMap().put("addTag", addAction);
-		
-		
+
+
 		// create the table cell editor and set it to key and value columns
 		//
@@ -343,20 +342,20 @@
 		getColumnModel().getColumn(0).setCellEditor(editor);
 		getColumnModel().getColumn(1).setCellEditor(editor);
-	
-	}
-	
-	/**
-	 * constructor 
+
+	}
+
+	/**
+	 * constructor
 	 * 
 	 * @param model
 	 * @param columnModel
 	 */
-	public TagTable(TableModel model) { 
+	public TagTable(TableModel model) {
 		super(model, new TagTableColumnModel());
 		init();
 	}
-	
-	
-	
+
+
+
 	/**
 	 * adjusts the width of the columns for the tag name and the tag value
@@ -375,37 +374,36 @@
 			tcm.getColumn(0).setMaxWidth(width);
 			tcm.getColumn(1).setMinWidth(width);
-			tcm.getColumn(1).setMaxWidth(width);			
-		}
-	}
-
-	
+			tcm.getColumn(1).setMaxWidth(width);
+		}
+	}
+
+
 	@Override protected boolean processKeyBinding(KeyStroke ks, KeyEvent e,
-            int condition, boolean pressed) {
-		
+			int condition, boolean pressed) {
+
 		// handle delete key
 		//
-	    if (e.getKeyCode() == KeyEvent.VK_DELETE) {
-	    	getDeleteAction().run();
-	    } 
-	    return super.processKeyBinding(ks, e, condition, pressed);
-    }
-	
-	
-	/**
-	 * @param autoCompletionList  
+		if (e.getKeyCode() == KeyEvent.VK_DELETE) {
+			getDeleteAction().run();
+		}
+		return super.processKeyBinding(ks, e, condition, pressed);
+	}
+
+
+	/**
+	 * @param autoCompletionList
 	 */
 	public void setAutoCompletionList(AutoCompletionList autoCompletionList) {
-		if (autoCompletionList == null) {
-			return; 
-		}
+		if (autoCompletionList == null)
+			return;
 		if (editor != null) {
 			editor.setAutoCompletionList(autoCompletionList);
-		} 
-	}
-	
+		}
+	}
+
 	public void setAutoCompletionCache(AutoCompletionCache acCache) {
 		if (acCache == null) {
 			logger.warning("argument acCache should not be null. Aborting.");
-			return; 
+			return;
 		}
 		if (editor != null) {
@@ -413,14 +411,13 @@
 		}
 	}
-	
+
 	public AutoCompletionList getAutoCompletionList() {
-		if (editor != null) {
+		if (editor != null)
 			return editor.getAutoCompletionList();
-		} else 	{
+		else
 			return null;
-		}
-	}
-	
-	
+	}
+
+
 	public TableCellEditor getTableCellEditor() {
 		return editor;
@@ -435,13 +432,13 @@
 		editor.getEditor().addKeyListener(l);
 	}
-	
-	
+
+
 	public void requestFocusInCell(final int row, final int col) {
 
 		// the following code doesn't work reliably. If a table cell
-		// gains focus using editCellAt() and requestFocusInWindow() 
+		// gains focus using editCellAt() and requestFocusInWindow()
 		// it isn't possible to tab to the next table cell using TAB or
 		// ENTER. Don't know why.
-		// 
+		//
 		// tblTagEditor.editCellAt(row, col);
 		// if (tblTagEditor.getEditorComponent() != null) {
@@ -451,11 +448,11 @@
 		// this is a workaround. We move the focus to the respective cell
 		// using a simulated mouse click. In this case one can tab out of
-		// the cell using TAB and ENTER. 
-		// 
+		// the cell using TAB and ENTER.
+		//
 		Rectangle r = getCellRect(row,col, false);
 		Point p = new Point(r.x + r.width/2, r.y + r.height/2);
 		SwingUtilities.convertPointToScreen(p, this);
 		// logger.info("simulating mouse click event at point " + p.toString());
-		
+
 		try {
 			Robot robot = new Robot();
@@ -465,9 +462,9 @@
 		} catch(AWTException e) {
 			logger.log(Level.SEVERE, "failed to simulate mouse click event at (" + r.x + "," + r.y + "). Exception: " + e.toString());
-			return; 
-		}
-
-	}
-
-	
+			return;
+		}
+
+	}
+
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/NameIconCellRenderer.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/NameIconCellRenderer.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/NameIconCellRenderer.java	(revision 15319)
@@ -15,8 +15,8 @@
 
 public class NameIconCellRenderer extends JLabel implements TableCellRenderer {
-	
+
 	private static Logger logger = Logger.getLogger(NameIconCellRenderer.class.getName());
 	public static final Color BG_COLOR_SELECTED = new Color(143,170,255);
-	
+
 
 	protected void init() {
@@ -24,15 +24,14 @@
 		setFont(new Font("SansSerif",Font.PLAIN,10));
 	}
-	
+
 	public NameIconCellRenderer() {
 		init();
 	}
-	
-	@Override
+
 	public Component getTableCellRendererComponent(JTable table, Object value,
 			boolean isSelected, boolean hasFocus, int rowIndex, int colIndex) {
-	
+
 		if (isSelected) {
-			setBackground(BG_COLOR_SELECTED);			
+			setBackground(BG_COLOR_SELECTED);
 		} else  {
 			setBackground(Color.WHITE);
@@ -41,5 +40,5 @@
 		setText(provider.getName());
 		setIcon(provider.getIcon());
-		return this; 
+		return this;
 	}
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/PresetsTableModel.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/PresetsTableModel.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/PresetsTableModel.java	(revision 15319)
@@ -15,12 +15,12 @@
 
 	private static final Logger logger = Logger.getLogger(PresetsTableModel.class.getName());
-	
-	 private ArrayList<TableModelListener> listeners = new ArrayList<TableModelListener>();
-	 private ArrayList<Item> items = new ArrayList<Item>();
-	 private ArrayList<Item> visibleItems = new ArrayList<Item>();
-	 private Presets presets = null;
-	 
-	 
-	 protected void initModelFromPresets(Presets presets) {
+
+	private final ArrayList<TableModelListener> listeners = new ArrayList<TableModelListener>();
+	private final ArrayList<Item> items = new ArrayList<Item>();
+	private final ArrayList<Item> visibleItems = new ArrayList<Item>();
+	private Presets presets = null;
+
+
+	protected void initModelFromPresets(Presets presets) {
 		for(Group group: presets.getGroups()) {
 			for(Item item: group.getItems()) {
@@ -29,15 +29,15 @@
 			}
 		}
-	 }
-	 
-	
-	 public PresetsTableModel() {
-	 }
-	 
-	 public PresetsTableModel(Presets presets) {
-		 setPresets(presets);
-	 }
-	 
-	
+	}
+
+
+	public PresetsTableModel() {
+	}
+
+	public PresetsTableModel(Presets presets) {
+		setPresets(presets);
+	}
+
+
 	public Presets getPresets() {
 		return presets;
@@ -57,7 +57,6 @@
 	public void addTableModelListener(TableModelListener l) {
 		synchronized(listeners) {
-			if (l == null) {
+			if (l == null)
 				return;
-			}
 			if (!listeners.contains(l)) {
 				listeners.add(l);
@@ -71,23 +70,19 @@
 	}
 
-	@Override
 	public int getColumnCount() {
 		return 2;
 	}
 
-
-	@Override
 	public int getRowCount() {
 		return visibleItems.size();
 	}
 
-	@Override
 	public Object getValueAt(int rowIndex, int columnIndex) {
 		Item item = visibleItems.get(rowIndex);
 		switch(columnIndex) {
-			case 0: return item.getParent();
-			case 1: return item;
-			default: return "unknown"; 
-		
+		case 0: return item.getParent();
+		case 1: return item;
+		default: return "unknown";
+
 		}
 	}
@@ -104,22 +99,18 @@
 				listeners.remove(l);
 			}
-		}		
+		}
 	}
 
 	@Override
 	public void setValueAt(Object value, int rowIndex, int columnIndex) {
-		// do nothing. No editing allowed 		
+		// do nothing. No editing allowed
 	}
 
-	
 	public Item getVisibleItem(int idx) {
-		if (idx < 0 || idx >= this.visibleItems.size()) {
+		if (idx < 0 || idx >= this.visibleItems.size())
 			throw new IndexOutOfBoundsException("index out of bounds. idx=" + idx);
-		}
 		return visibleItems.get(idx);
 	}
-	
-	
-	
+
 	public void filter(String filter) {
 		synchronized(this) {
@@ -129,18 +120,18 @@
 					visibleItems.add(item);
 				}
-			} else { 
+			} else {
 				visibleItems.clear();
 				filter = filter.toLowerCase();
 				for(Item item: items) {
 					if (    (item.getName() != null && item.getName().toLowerCase().trim().startsWith(filter))
-					     || (item.getParent().getName() != null && item.getParent().getName().toLowerCase().trim().startsWith(filter))) {
+							|| (item.getParent().getName() != null && item.getParent().getName().toLowerCase().trim().startsWith(filter))) {
 						visibleItems.add(item);
 					}
-				}	
+				}
 			}
 			fireTableDataChanged();
 			fireTableStructureChanged();
 		}
-		
+
 	}
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/TabularPresetSelector.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/TabularPresetSelector.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/preset/ui/TabularPresetSelector.java	(revision 15319)
@@ -39,9 +39,9 @@
 	private PresetsTable presetsTable = null;
 	private JTextField   tfFilter = null;
-	private ArrayList<IPresetSelectorListener> listeners = new ArrayList<IPresetSelectorListener>();
+	private final ArrayList<IPresetSelectorListener> listeners = new ArrayList<IPresetSelectorListener>();
 	private JScrollPane scrollPane;
 	private JButton btnApply;
-	
-	
+
+
 	protected JPanel buildFilterPanel() {
 		JPanel pnl = new JPanel();
@@ -54,11 +54,10 @@
 		pnl.add(btn);
 		btn.addActionListener(
-			new ActionListener() {
-				@Override
-				public void actionPerformed(ActionEvent e) {
-					filter(tfFilter.getText());						
-				}
-				
-			}
+				new ActionListener() {
+					public void actionPerformed(ActionEvent e) {
+						filter(tfFilter.getText());
+					}
+
+				}
 		);
 		btn = new JButton(tr("Clear"));
@@ -66,27 +65,26 @@
 		btn.addActionListener(
 				new ActionListener() {
-					@Override
 					public void actionPerformed(ActionEvent e) {
 						tfFilter.setText("");
 						tfFilter.requestFocus();
-					}					
-				}
-			);		
+					}
+				}
+		);
 		return pnl;
 	}
-	
-	
-	
+
+
+
 	protected JScrollPane buildPresetGrid() {
-					
+
 		presetsTable = new PresetsTable(new PresetsTableModel(),new PresetsTableColumnModel());
-		
+
 		scrollPane = new JScrollPane(presetsTable);
-		
+
 		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
-		
+
 		// this adapters ensures that the width of the tag table columns is adjusted
-		// to the width of the scroll pane viewport. Also tried to overwrite 
+		// to the width of the scroll pane viewport. Also tried to overwrite
 		// getPreferredViewportSize() in JTable, but did not work.
 		//
@@ -94,15 +92,15 @@
 				new ComponentAdapter() {
 					@Override public void componentResized(ComponentEvent e) {
-	                    super.componentResized(e);
-	                    Dimension d = scrollPane.getViewport().getExtentSize();
-	                    presetsTable.adjustColumnWidth(d.width);
-                    }
-				}
-		);
-		
-		// add the double click listener 
+						super.componentResized(e);
+						Dimension d = scrollPane.getViewport().getExtentSize();
+						presetsTable.adjustColumnWidth(d.width);
+					}
+				}
+		);
+
+		// add the double click listener
 		//
 		presetsTable.addMouseListener(new DoubleClickAdapter());
-		
+
 		// replace Enter action. apply the current preset on enter
 		//
@@ -117,15 +115,15 @@
 			}
 		};
-		
+
 		presetsTable.registerKeyboardAction(
-			enterAction, 
-			"Enter", 
-			KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0), 
-			JComponent.WHEN_FOCUSED
-		);
-		
+				enterAction,
+				"Enter",
+				KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0),
+				JComponent.WHEN_FOCUSED
+		);
+
 		return scrollPane;
 	}
-	
+
 	protected JPanel buildControlButtonPanel() {
 		JPanel pnl = new JPanel();
@@ -134,18 +132,17 @@
 		pnl.add(btnApply);
 		btnApply.addActionListener(
-			new ActionListener() {
-				@Override
-				public void actionPerformed(ActionEvent arg0) {
-					int row = presetsTable.getSelectedRow();
-					if (row >=0) {
-						Item item = getModel().getVisibleItem(row);
-						fireItemSelected(item);
-					}
-				}				
-			}
-		);
-		return pnl;		
-	}
-	
+				new ActionListener() {
+					public void actionPerformed(ActionEvent arg0) {
+						int row = presetsTable.getSelectedRow();
+						if (row >=0) {
+							Item item = getModel().getVisibleItem(row);
+							fireItemSelected(item);
+						}
+					}
+				}
+		);
+		return pnl;
+	}
+
 	protected void build() {
 		setLayout(new BorderLayout());
@@ -153,5 +150,5 @@
 		add(buildPresetGrid(), BorderLayout.CENTER);
 		add(buildControlButtonPanel(), BorderLayout.SOUTH);
-		
+
 		// wire the text field for filter expressions to the prests
 		// table
@@ -159,47 +156,41 @@
 		tfFilter.getDocument().addDocumentListener(
 				new DocumentListener() {
-					@Override
 					public void changedUpdate(DocumentEvent arg0) {
 						onUpdate();
 					}
 
-					@Override
 					public void insertUpdate(DocumentEvent arg0) {
 						onUpdate();
 					}
 
-					@Override
 					public void removeUpdate(DocumentEvent arg0) {
 						onUpdate();
 					}
-				
+
 					protected void onUpdate() {
-					    filter(tfFilter.getText());
-					}
-				}
-			);
-		
+						filter(tfFilter.getText());
+					}
+				}
+		);
+
 		tfFilter.addActionListener(
 				new ActionListener() {
-					@Override
 					public void actionPerformed(ActionEvent e) {
 						filter(tfFilter.getText());
-					}					
-				}
-		);
-		
+					}
+				}
+		);
+
 		// wire the apply button to the selection model of the preset table
-		// 
+		//
 		presetsTable.getSelectionModel().addListSelectionListener(
-			new ListSelectionListener() {
-	
-				@Override
-				public void valueChanged(ListSelectionEvent e) {
-					btnApply.setEnabled(presetsTable.getSelectedRowCount() != 0);
-				}
-			}
-		);
-		
-	
+				new ListSelectionListener() {
+					public void valueChanged(ListSelectionEvent e) {
+						btnApply.setEnabled(presetsTable.getSelectedRowCount() != 0);
+					}
+				}
+		);
+
+
 		// load the set of presets and bind them to the preset table
 		//
@@ -208,12 +199,12 @@
 		presetsTable.getSelectionModel().clearSelection();
 		btnApply.setEnabled(false);
-	
-	}
-	
+
+	}
+
 	public void bindTo(Presets presets) {
 		PresetsTableModel model = (PresetsTableModel)presetsTable.getModel();
 		model.setPresets(presets);
 	}
-	
+
 	public TabularPresetSelector() {
 		build();
@@ -227,5 +218,5 @@
 		}
 	}
-	
+
 	public void removePresetSelectorListener(IPresetSelectorListener listener) {
 		synchronized(this.listeners) {
@@ -235,5 +226,5 @@
 		}
 	}
-	
+
 	protected void fireItemSelected(Item item) {
 		synchronized(this.listeners) {
@@ -243,8 +234,8 @@
 		}
 	}
-	
-	
-
-	
+
+
+
+
 	private class DoubleClickAdapter extends MouseAdapter {
 		@Override
@@ -257,19 +248,19 @@
 		}
 	}
-	
-	
+
+
 	public void filter(String filter) {
 		presetsTable.getSelectionModel().clearSelection();
 		getModel().filter(filter);
-		
+
 		presetsTable.scrollRectToVisible(presetsTable.getCellRect(0, 0, false));
-		
+
 		// we change the number of rows by applying a filter condition. Because
 		// the table is embedded in a JScrollPane which again may be embedded in
-		// other JScrollPanes or JSplitPanes it seems that we have to recalculate 
+		// other JScrollPanes or JSplitPanes it seems that we have to recalculate
 		// the layout and repaint the component tree. Maybe there is a more efficient way
 		// to keep the GUI in sync with the number of rows in table. By trial
-		// and error I ended up with the following lines. 
-		// 
+		// and error I ended up with the following lines.
+		//
 		Component c = presetsTable;
 		while(c != null) {
@@ -279,10 +270,10 @@
 		}
 	}
-	
-	
+
+
 	protected PresetsTableModel getModel() {
 		return (PresetsTableModel)presetsTable.getModel();
 	}
-	
+
 	public void installKeyAction(Action a) {
 		getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put((KeyStroke)a.getValue(AbstractAction.ACCELERATOR_KEY), a.getValue(AbstractAction.NAME));
@@ -290,4 +281,4 @@
 
 	}
-	
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/TagSpecifications.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/TagSpecifications.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/TagSpecifications.java	(revision 15319)
@@ -7,7 +7,5 @@
 import java.io.Reader;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -36,5 +34,5 @@
  */
 public class TagSpecifications {
-	
+
 	final static public String ATTR_KEY = "key";
 	final static public String ATTR_TYPE = "type";
@@ -47,24 +45,24 @@
 	final static public String ELEM_TAG = "tag";
 	final static public String ELEM_LABEL = "label";
-	
+
 	final static public String DTD = "osm-tag-definitions.dtd";
-	
-	
-	/** the default name of the resource file with the  tag specifications */ 
+
+
+	/** the default name of the resource file with the  tag specifications */
 	static public final String RES_NAME_TAG_SPECIFICATIONS = "/resources/osm-tag-definitions.xml";
-	
+
 	/** the logger object */
 	private static Logger logger = Logger.getLogger(TagSpecification.class.getName());
-	
+
 	/** list of tag specifications managed list */
 	private ArrayList<TagSpecification> tagSpecifications = null;
-	
-	 
-	
+
+
+
 	private static TagSpecifications instance = null;
-	
+
 	/**
 	 * loads the the tag specifications from the resource file given by
-	 * {@link #RES_NAME_TAG_SPECIFICATIONS}. 
+	 * {@link #RES_NAME_TAG_SPECIFICATIONS}.
 	 * 
 	 * @return the list of {@link TagSpecification}s
@@ -81,7 +79,7 @@
 		reader.close();
 		instance = spec;
-		
-	}
-	
+
+	}
+
 	static public TagSpecifications getInstance() throws Exception {
 		if (instance == null) {
@@ -90,22 +88,22 @@
 		return instance;
 	}
-	
-	/**
-	 * constructor 
+
+	/**
+	 * constructor
 	 */
 	public TagSpecifications() {
 		tagSpecifications = new ArrayList<TagSpecification>();
 	}
-	
-	
-	/**
-	 * loads the tag specifications from a specific reader 
+
+
+	/**
+	 * loads the tag specifications from a specific reader
 	 * 
-	 * @param in  the reader to read from 
-	 * @throws Exception thrown, if an exception occurs 
+	 * @param in  the reader to read from
+	 * @throws Exception thrown, if an exception occurs
 	 */
 	public void load(Reader in) throws Exception {
 		XMLReader parser;
-		
+
 		try {
 			parser = XMLReaderFactory.createXMLReader();
@@ -117,6 +115,6 @@
 			parser.setFeature("http://xml.org/sax/features/namespaces", true);
 			parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
-	        parser.parse(new InputSource(in));
-	        
+			parser.parse(new InputSource(in));
+
 		} catch (Exception e) {
 			logger.log(Level.SEVERE, "failed to load tag specificatoin file", e);
@@ -125,7 +123,7 @@
 			parser = null;
 		}
-		
-		
-		
+
+
+
 	}
 
@@ -143,5 +141,5 @@
 		return keys;
 	}
-	
+
 	public List<AutoCompletionListItem> getLabelsForAutoCompletion(String forKey, AutoCompletionContext context) {
 		ArrayList<AutoCompletionListItem> items = new ArrayList<AutoCompletionListItem>();
@@ -162,15 +160,15 @@
 		return items;
 	}
-	
-	
+
+
 	/**
 	 * replies a list of {@see KeyValuePair}s for all {@see TagSpecification}s and
 	 * {@see LableSpecification}s.
 	 * 
-	 * @return the list 
+	 * @return the list
 	 */
 	public ArrayList<KeyValuePair> asList() {
 		ArrayList<KeyValuePair> entries = new ArrayList<KeyValuePair>();
-		
+
 		for (TagSpecification s : tagSpecifications) {
 			for (LableSpecification l : s.getLables()) {
@@ -178,23 +176,23 @@
 			}
 		}
-		return entries; 
-	}
-	
-	
-	
-	/**
-	 * The SAX handler for reading XML files with tag specifications 
+		return entries;
+	}
+
+
+
+	/**
+	 * The SAX handler for reading XML files with tag specifications
 	 * 
-	 * @author gubaer 
+	 * @author gubaer
 	 *
 	 */
 	class Handler extends DefaultHandler {
-		
+
 		/**  the current tag specification. Not null, while parsing the content
 		 * between &lt;tag&gt; ... &lt;/tag&gt;
 		 */
 		private TagSpecification currentTagSpecification  = null;
-		
-		
+
+
 		@Override
 		public void endDocument() throws SAXException {
@@ -202,5 +200,5 @@
 		}
 
-		
+
 
 		@Override
@@ -223,5 +221,5 @@
 		 * parses a string value consisting of 'yes' or 'no' (exactly, case
 		 * sensitive)
-		 *  
+		 * 
 		 * @param value the string value
 		 * @return true, if value is <code>yes</code>; false, if value is <code>no</code>
@@ -229,23 +227,22 @@
 		 */
 		protected boolean parseYesNo(String value) throws SAXException {
-			if ("yes".equals(value)) {
+			if ("yes".equals(value))
 				return true;
-			} else if ("no".equals(value)) {
-				return false; 
-			} else {
+			else if ("no".equals(value))
+				return false;
+			else
 				throw new SAXException("expected 'yes' or 'no' as attribute value, got '" + value + "'");
-			}
-		}
-		
+		}
+
 		/**
 		 * handles a start element with name <code>osm-tag-definitions</code>
 		 * 
-		 * @param atts  the XML attributes 
-		 * @throws SAXException   
+		 * @param atts  the XML attributes
+		 * @throws SAXException
 		 */
 		protected void startElementOsmTagDefinitions(Attributes atts) throws SAXException {
 			tagSpecifications = new ArrayList<TagSpecification>();
 		}
-		
+
 		/**
 		 * handles an end element with name <code>osm-tag-specifications</code>
@@ -256,9 +253,9 @@
 			// do nothing
 		}
-		
-		/**
-		 * handles a start element with name <code>tag</code> 
-		 * 
-		 * @param atts the XML attributes of the element 
+
+		/**
+		 * handles a start element with name <code>tag</code>
+		 * 
+		 * @param atts the XML attributes of the element
 		 * @throws SAXException
 		 */
@@ -268,8 +265,8 @@
 				String name = atts.getQName(i);
 				String value = atts.getValue(i);
-				
+
 				if (ATTR_KEY.equals(name)) {
 					currentTagSpecification.setKey(value);
-				} else if (ATTR_TYPE.equals(name)) {	
+				} else if (ATTR_TYPE.equals(name)) {
 					currentTagSpecification.setType(value);
 				} else if (ATTR_FOR_NODE.equals(name)) {
@@ -279,13 +276,12 @@
 				} else if (ATTR_FOR_RELATION.equals(name)) {
 					currentTagSpecification.setApplicableToRelation(parseYesNo(value));
-				} else {
+				} else
 					throw new SAXException("unknown attribut '" + name + "' on element 'tag'");
-				}				
-			}
-		}
-		
-		
-		/**
-		 * handles an end element with name <code>tag</code> 
+			}
+		}
+
+
+		/**
+		 * handles an end element with name <code>tag</code>
 		 * @throws SAXException
 		 */
@@ -293,20 +289,20 @@
 			tagSpecifications.add(currentTagSpecification);
 			currentTagSpecification = null;
-			
-		}
-		
-		
-		/**
-		 * handles a start element with name <code>label</code> 
-		 * 
-		 * @param atts the XML attributes 
+
+		}
+
+
+		/**
+		 * handles a start element with name <code>label</code>
+		 * 
+		 * @param atts the XML attributes
 		 * @throws SAXException
 		 */
 		protected void startElementLabel(Attributes atts) throws SAXException {
-			LableSpecification ls = new LableSpecification(); 
+			LableSpecification ls = new LableSpecification();
 			for (int i=0; i< atts.getLength(); i++) {
 				String name = atts.getQName(i);
 				String value = atts.getValue(i);
-				
+
 				if (ATTR_VALUE.equals(name)) {
 					ls.setValue(value);
@@ -317,11 +313,10 @@
 				} else if (ATTR_FOR_RELATION.equals(name)) {
 					ls.setApplicableToRelation(parseYesNo(value));
-				} else {
+				} else
 					throw new SAXException("unknown attribut '" + name + "' on element 'lable'");
-				}				
 			}
 			currentTagSpecification.addLable(ls);
 		}
-		
+
 		/**
 		 * handles an end element with name <code>label</code>
@@ -330,7 +325,7 @@
 		 */
 		protected void endElementLabel() throws SAXException {
-			// do nothing 
-		}
-		
+			// do nothing
+		}
+
 		@Override
 		public void startElement(String namespaceURI, String localName, String qName,
@@ -342,12 +337,11 @@
 			} else if (ELEM_LABEL.equals(qName)) {
 				startElementLabel(atts);
-			} else {
+			} else
 				throw new SAXException("unknown element '" + qName + "'");
-			}
-		}
-		
+		}
+
 		@Override
 		public void endElement(String namespaceURI, String localName, String qName)
-				throws SAXException {
+		throws SAXException {
 			if (ELEM_ROOT.equals(qName)) {
 				endElementOsmTagDefinitions();
@@ -356,7 +350,6 @@
 			} else if (ELEM_LABEL.equals(qName)) {
 				endElementLabel();
-			} else {
+			} else
 				throw new SAXException("unknown element '" + qName + "'");
-			}
 		}
 
@@ -366,10 +359,10 @@
 			logger.log(Level.WARNING, "XML parsing warning", e);
 		}
-		
-		
-		
-	}
-	
-	
+
+
+
+	}
+
+
 	/**
 	 *
@@ -378,22 +371,20 @@
 	class ResourceEntityResolver implements EntityResolver {
 
-		@Override
 		public InputSource resolveEntity(String publicId, String systemId)
-				throws SAXException, IOException {
-			if (systemId != null && systemId.endsWith(DTD)) {
+		throws SAXException, IOException {
+			if (systemId != null && systemId.endsWith(DTD))
 				return new InputSource(
 						TagSpecifications.class.getResourceAsStream(DTD)
 				);
-			} else {
+			else
 				throw new SAXException("couldn't load external DTD '" + systemId + "'");
-			}
-		}
-		
-	}
-	
-	
+		}
+
+	}
+
+
 	static public void main(String args[]) throws Exception{
 		TagSpecifications.loadFromResources();
 	}
-	
+
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/KeyValueCellRenderer.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/KeyValueCellRenderer.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/KeyValueCellRenderer.java	(revision 15319)
@@ -11,8 +11,8 @@
 
 public class KeyValueCellRenderer extends JLabel implements TableCellRenderer  {
-	
+
 	private static Logger logger = Logger.getLogger(KeyValueCellRenderer.class.getName());
 	public static final Color BG_COLOR_SELECTED = new Color(143,170,255);
-	
+
 
 	protected void init() {
@@ -20,15 +20,14 @@
 		setOpaque(true);
 	}
-	
+
 	public KeyValueCellRenderer() {
 		init();
 	}
-	
-	@Override
+
 	public Component getTableCellRendererComponent(JTable table, Object value,
 			boolean isSelected, boolean hasFocus, int rowIndex, int colIndex) {
-	
+
 		if (isSelected) {
-			setBackground(BG_COLOR_SELECTED);			
+			setBackground(BG_COLOR_SELECTED);
 		} else  {
 			setBackground(Color.WHITE);
@@ -36,5 +35,5 @@
 		setText((String)value);
 		setIcon(null);
-		return this; 
+		return this;
 	}
 }
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/TabularTagSelector.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/TabularTagSelector.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/TabularTagSelector.java	(revision 15319)
@@ -35,11 +35,11 @@
 public class TabularTagSelector extends JPanel {
 
-	private TagsTable tagsTable;	
+	private TagsTable tagsTable;
 	private JTextField tfFilter;
 	private JButton btnApply;
 	private JScrollPane scrollPane;
-	private ArrayList<ITagSelectorListener> listeners = new ArrayList<ITagSelectorListener>();
-
-	
+	private final ArrayList<ITagSelectorListener> listeners = new ArrayList<ITagSelectorListener>();
+
+
 	protected JPanel buildFilterPanel() {
 		JPanel pnl = new JPanel();
@@ -52,11 +52,10 @@
 		pnl.add(btn);
 		btn.addActionListener(
-			new ActionListener() {
-				@Override
-				public void actionPerformed(ActionEvent e) {
-					filter(tfFilter.getText());						
-				}
-				
-			}
+				new ActionListener() {
+					public void actionPerformed(ActionEvent e) {
+						filter(tfFilter.getText());
+					}
+
+				}
 		);
 		btn = new JButton(tr("Clear"));
@@ -64,26 +63,25 @@
 		btn.addActionListener(
 				new ActionListener() {
-					@Override
 					public void actionPerformed(ActionEvent e) {
 						tfFilter.setText("");
 						tfFilter.requestFocus();
-					}					
-				}
-			);		
+					}
+				}
+		);
 		return pnl;
 	}
-	
+
 	protected JScrollPane buildPresetGrid() {
-		
+
 		tagsTable = new TagsTable(new TagsTableModel(),new TagsTableColumnModel());
 		getModel().initFromTagSpecifications();
-		
+
 		scrollPane = new JScrollPane(tagsTable);
-		
+
 		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
-		
+
 		// this adapters ensures that the width of the tag table columns is adjusted
-		// to the width of the scroll pane viewport. Also tried to overwrite 
+		// to the width of the scroll pane viewport. Also tried to overwrite
 		// getPreferredViewportSize() in JTable, but did not work.
 		//
@@ -91,15 +89,15 @@
 				new ComponentAdapter() {
 					@Override public void componentResized(ComponentEvent e) {
-	                    super.componentResized(e);
-	                    Dimension d = scrollPane.getViewport().getExtentSize();
-	                    tagsTable.adjustColumnWidth(d.width);
-                    }
-				}
-		);
-		
-		// add the double click listener 
+						super.componentResized(e);
+						Dimension d = scrollPane.getViewport().getExtentSize();
+						tagsTable.adjustColumnWidth(d.width);
+					}
+				}
+		);
+
+		// add the double click listener
 		//
 		tagsTable.addMouseListener(new DoubleClickAdapter());
-		
+
 		// replace Enter action. apply the current preset on enter
 		//
@@ -114,16 +112,16 @@
 			}
 		};
-		
+
 		tagsTable.registerKeyboardAction(
-			enterAction, 
-			"Enter", 
-			KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0), 
-			JComponent.WHEN_FOCUSED
-		);
-		
+				enterAction,
+				"Enter",
+				KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0),
+				JComponent.WHEN_FOCUSED
+		);
+
 		return scrollPane;
 	}
-	
-	
+
+
 	protected JPanel buildControlButtonPanel() {
 		JPanel pnl = new JPanel();
@@ -132,18 +130,17 @@
 		pnl.add(btnApply);
 		btnApply.addActionListener(
-			new ActionListener() {
-				@Override
-				public void actionPerformed(ActionEvent arg0) {
-					int row = tagsTable.getSelectedRow();
-					if (row >=0) {
-						KeyValuePair item = getModel().getVisibleItem(row);
-						fireItemSelected(item);
-					}
-				}				
-			}
-		);
-		return pnl;		
-	}
-	
+				new ActionListener() {
+					public void actionPerformed(ActionEvent arg0) {
+						int row = tagsTable.getSelectedRow();
+						if (row >=0) {
+							KeyValuePair item = getModel().getVisibleItem(row);
+							fireItemSelected(item);
+						}
+					}
+				}
+		);
+		return pnl;
+	}
+
 	protected void build() {
 		setLayout(new BorderLayout());
@@ -151,5 +148,5 @@
 		add(buildPresetGrid(), BorderLayout.CENTER);
 		add(buildControlButtonPanel(), BorderLayout.SOUTH);
-		
+
 		// wire the text field for filter expressions to the prests
 		// table
@@ -157,72 +154,66 @@
 		tfFilter.getDocument().addDocumentListener(
 				new DocumentListener() {
-					@Override
 					public void changedUpdate(DocumentEvent arg0) {
 						onUpdate();
 					}
 
-					@Override
 					public void insertUpdate(DocumentEvent arg0) {
 						onUpdate();
 					}
 
-					@Override
 					public void removeUpdate(DocumentEvent arg0) {
 						onUpdate();
 					}
-				
+
 					protected void onUpdate() {
-					    filter(tfFilter.getText());
-					}
-				}
-			);
-		
+						filter(tfFilter.getText());
+					}
+				}
+		);
+
 		tfFilter.addActionListener(
 				new ActionListener() {
-					@Override
 					public void actionPerformed(ActionEvent e) {
 						filter(tfFilter.getText());
-					}					
-				}
-		);
-		
+					}
+				}
+		);
+
 		// wire the apply button to the selection model of the preset table
-		// 
+		//
 		tagsTable.getSelectionModel().addListSelectionListener(
-			new ListSelectionListener() {
-	
-				@Override
-				public void valueChanged(ListSelectionEvent e) {
-					btnApply.setEnabled(tagsTable.getSelectedRowCount() != 0);
-				}
-			}
-		);
-		
-	
+				new ListSelectionListener() {
+					public void valueChanged(ListSelectionEvent e) {
+						btnApply.setEnabled(tagsTable.getSelectedRowCount() != 0);
+					}
+				}
+		);
+
+
 		// load the set of presets and bind them to the preset table
 		//
 		tagsTable.getSelectionModel().clearSelection();
 		btnApply.setEnabled(false);
-	
-	}
-	
-	 public TabularTagSelector() {
+
+	}
+
+	public TabularTagSelector() {
 		build();
 	}
-	 
-	 
-	 public void filter(String filter) {
+
+
+	public void filter(String filter) {
 		tagsTable.getSelectionModel().clearSelection();
 		getModel().filter(filter);
-		
+
 		tagsTable.scrollRectToVisible(tagsTable.getCellRect(0, 0, false));
-		
+
 		// we change the number of rows by applying a filter condition. Because
 		// the table is embedded in a JScrollPane which again may be embedded in
-		// other JScrollPanes or JSplitPanes it seems that we have to recalculate 
+		// other JScrollPanes or JSplitPanes it seems that we have to recalculate
 		// the layout and repaint the component tree. Maybe there is a more efficient way
 		// to keep the GUI in sync with the number of rows in table. By trial
-		// and error I ended up with the following lines. 
-		// 
+		// and error I ended up with the following lines.
+		//
 		Component c = tagsTable;
 		while(c != null) {
@@ -232,8 +223,8 @@
 		}
 	}
-	 
-	 protected TagsTableModel getModel() {
-		 return (TagsTableModel)tagsTable.getModel();
-	 }	 
+
+	protected TagsTableModel getModel() {
+		return (TagsTableModel)tagsTable.getModel();
+	}
 
 
@@ -245,5 +236,5 @@
 		}
 	}
-	
+
 	public void removeTagSelectorListener(ITagSelectorListener listener) {
 		synchronized(this.listeners) {
@@ -253,5 +244,5 @@
 		}
 	}
-	
+
 	protected void fireItemSelected(KeyValuePair pair) {
 		synchronized(this.listeners) {
Index: /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/TagsTableModel.java
===================================================================
--- /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/TagsTableModel.java	(revision 15318)
+++ /applications/editors/josm/plugins/tageditor/src/org/openstreetmap/josm/plugins/tageditor/tagspec/ui/TagsTableModel.java	(revision 15319)
@@ -1,3 +1,4 @@
 package org.openstreetmap.josm.plugins.tageditor.tagspec.ui;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
@@ -14,7 +15,7 @@
 
 public class TagsTableModel extends AbstractTableModel {
-	
+
 	static private Logger logger = Logger.getLogger(TagsTableModel.class.getName());
-	
+
 	private ArrayList<KeyValuePair> items = null;
 	private ArrayList<KeyValuePair> visibleItems = null;
@@ -24,41 +25,38 @@
 		visibleItems = new ArrayList<KeyValuePair>();
 	}
-	
+
 	protected void sort() {
 		Collections.sort(
-			items,
-			new Comparator<KeyValuePair>() {
+				items,
+				new Comparator<KeyValuePair>() {
+					public int compare(KeyValuePair self,
+							KeyValuePair other) {
+						int ret =self.getKey().compareToIgnoreCase(other.getKey());
 
-				@Override
-				public int compare(KeyValuePair self,
-						KeyValuePair other) {
-					int ret =self.getKey().compareToIgnoreCase(other.getKey());
-					
-					if (ret == 0) {
-						return self.getValue().compareToIgnoreCase(other.getValue()); 						
-					} else {
-						return ret;
+						if (ret == 0)
+							return self.getValue().compareToIgnoreCase(other.getValue());
+						else
+							return ret;
 					}
-				}				
-			}				
+				}
 		);
 	}
-	
+
 	protected void clear() {
 		items.clear();
 		visibleItems.clear();
 	}
-	
+
 	public void initFromTagSpecifications() {
 		clear();
 		TagSpecifications spec;
-		
+
 		try {
 			spec = TagSpecifications.getInstance();
 		} catch(Exception e) {
 			logger.log(Level.SEVERE, "failed to init TagTableModel. Exception:" + e);
-			return; 
+			return;
 		}
-		
+
 		items = spec.asList();
 		sort();
@@ -67,16 +65,13 @@
 		}
 	}
-	
-	@Override
+
 	public int getColumnCount() {
 		return 2;
 	}
 
-	@Override
 	public int getRowCount() {
 		return visibleItems.size();
 	}
 
-	@Override
 	public Object getValueAt(int row, int col) {
 		KeyValuePair pair = visibleItems.get(row);
@@ -86,8 +81,8 @@
 		default:
 			/* should not happen */
-			throw new IllegalArgumentException("unexpected column number " + col);			 
-		}	
+			throw new IllegalArgumentException(tr("unexpected column number {0}",col));
+		}
 	}
-	
+
 	public void filter(String filter) {
 		synchronized(this) {
@@ -97,13 +92,13 @@
 					visibleItems.add(pair);
 				}
-			} else { 
+			} else {
 				visibleItems.clear();
 				filter = filter.toLowerCase();
 				for(KeyValuePair pair: items) {
 					if (pair.getKey().toLowerCase().trim().startsWith(filter)
-						 ||  pair.getValue().toLowerCase().trim().startsWith(filter)) {
+							||  pair.getValue().toLowerCase().trim().startsWith(filter)) {
 						visibleItems.add(pair);
 					}
-				}	
+				}
 			}
 			fireTableDataChanged();
@@ -114,11 +109,10 @@
 	@Override
 	public boolean isCellEditable(int rowIndex, int columnIndex) {
-		return false; 
+		return false;
 	}
 
 	public KeyValuePair getVisibleItem(int row) {
-		if (row < 0 || row >= visibleItems.size()) {
+		if (row < 0 || row >= visibleItems.size())
 			throw new IndexOutOfBoundsException("row is out of bound: row=" + row);
-		}
 		return visibleItems.get(row);
 	}
