Index: trunk/src/org/openstreetmap/josm/actions/AbstractSelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AbstractSelectAction.java	(revision 7949)
+++ trunk/src/org/openstreetmap/josm/actions/AbstractSelectAction.java	(revision 7949)
@@ -0,0 +1,24 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import javax.swing.AbstractAction;
+
+import org.openstreetmap.josm.tools.ImageProvider;
+
+/**
+ * Superclass of "Select" actions in various parts of JOSM.
+ * @since 7949
+ */
+public abstract class AbstractSelectAction extends AbstractAction {
+
+    /**
+     * Constructs a new {@code AbstractSelectAction}.
+     */
+    public AbstractSelectAction() {
+        putValue(NAME, tr("Select"));
+        putValue(SHORT_DESCRIPTION,  tr("Set the selected elements on the map to the selected items in the list above."));
+        putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
+    }
+}
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 7948)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 7949)
@@ -32,4 +32,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.AbstractSelectAction;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -441,9 +442,6 @@
     }
 
-    class SelectAction extends AbstractAction implements ListSelectionListener {
-        public SelectAction() {
-            putValue(NAME, tr("Select"));
-            putValue(SHORT_DESCRIPTION,  tr("Set the selected elements on the map to the selected items in the list above."));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
+    class SelectAction extends AbstractSelectAction implements ListSelectionListener {
+        private SelectAction() {
             putValue("help", ht("/Dialog/ConflictList#SelectAction"));
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 7948)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 7949)
@@ -34,4 +34,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.AbstractSelectAction;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.relation.DownloadSelectedIncompleteMembersAction;
@@ -318,12 +319,9 @@
      * of this dialog
      */
-    class SelectAction extends AbstractAction implements ListSelectionListener {
+    class SelectAction extends AbstractSelectAction implements ListSelectionListener {
         /**
          * Constructs a new {@code SelectAction}.
          */
         public SelectAction() {
-            putValue(NAME, tr("Select"));
-            putValue(SHORT_DESCRIPTION,  tr("Set the selected elements on the map to the selected items in the list above."));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs","select"));
             updateEnabledState();
         }
@@ -336,4 +334,5 @@
             if (editLayer == null) return;
             editLayer.data.setSelected(sel);
+            model.selectionModel.setSelectionInterval(0, sel.size()-1);
         }
 
@@ -722,7 +721,12 @@
 
         @Override
-        public void primitivesAdded(PrimitivesAddedEvent event) {/* ignored - handled by SelectionChangeListener */}
-        @Override
-        public void primitivesRemoved(PrimitivesRemovedEvent event) {/* ignored - handled by SelectionChangeListener*/}
+        public void primitivesAdded(PrimitivesAddedEvent event) {
+            /* ignored - handled by SelectionChangeListener */
+        }
+
+        @Override
+        public void primitivesRemoved(PrimitivesRemovedEvent event) {
+            /* ignored - handled by SelectionChangeListener*/
+        }
     }
 
@@ -736,5 +740,6 @@
 
         public SearchMenuItem(SearchSetting s) {
-            super(Utils.shortenString(s.toString(), org.openstreetmap.josm.actions.search.SearchAction.MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY));
+            super(Utils.shortenString(s.toString(),
+                    org.openstreetmap.josm.actions.search.SearchAction.MAX_LENGTH_SEARCH_EXPRESSION_DISPLAY));
             this.s = s;
             addActionListener(this);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 7948)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 7949)
@@ -28,4 +28,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.AbstractSelectAction;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.relation.EditRelationAction;
@@ -102,10 +103,5 @@
         List<SideButton> buttons = new LinkedList<>();
 
-        selectButton = new SideButton(new AbstractAction() {
-            {
-                putValue(NAME, tr("Select"));
-                putValue(SHORT_DESCRIPTION,  tr("Set the selected elements on the map to the selected items in the list above."));
-                putValue(SMALL_ICON, ImageProvider.get("dialogs","select"));
-            }
+        selectButton = new SideButton(new AbstractSelectAction() {
             @Override
             public void actionPerformed(ActionEvent e) {
