Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java	(revision 6071)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java	(revision 6072)
@@ -20,4 +20,5 @@
 
     protected void initAutoCompletionField(AutoCompletingTextField field, String key) {
+        if (Main.main == null) return;
         OsmDataLayer layer = Main.main.getEditLayer();
         if (layer == null) {
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java	(revision 6071)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java	(revision 6072)
@@ -33,4 +33,6 @@
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.SelectionChangedListener;
@@ -50,5 +52,5 @@
 /**
  * GUI component to select tagging preset: the list with filter and two checkboxes
- * @since 6067
+ * @since 6068
  */
 public class TaggingPresetSelector extends JPanel implements SelectionChangedListener {
@@ -200,6 +202,7 @@
     public TaggingPresetSelector() {
         super(new BorderLayout());
-        
-        loadPresets(TaggingPresetPreference.taggingPresets);
+        if (TaggingPresetPreference.taggingPresets!=null) {
+            loadPresets(TaggingPresetPreference.taggingPresets);
+        }
         
         edSearchText = new JosmTextField();
@@ -374,5 +377,5 @@
                 typesInSelectionDirty = false;
                 typesInSelection.clear();
-                if (Main.main.getCurrentDataSet() == null) return typesInSelection;
+                if (Main.main==null || Main.main.getCurrentDataSet() == null) return typesInSelection;
                 for (OsmPrimitive primitive : Main.main.getCurrentDataSet().getSelected()) {
                     if (primitive instanceof Node) {
@@ -470,3 +473,12 @@
     }
     
+    public void addSelectionListener(final ActionListener selectListener) {
+        lsResult.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                if (!e.getValueIsAdjusting())
+                    selectListener.actionPerformed(null);
+            }
+        });
+    }
 }
