Index: applications/editors/josm/plugins/scripting/scripts/AddHouseNumbers.groovy
===================================================================
--- applications/editors/josm/plugins/scripting/scripts/AddHouseNumbers.groovy	(revision 25107)
+++ applications/editors/josm/plugins/scripting/scripts/AddHouseNumbers.groovy	(revision 25110)
@@ -1,8 +1,8 @@
+/*
+ * This scripts sets a sequence of consecutive house numbers on the currently selected nodes.
+ *  
+ */
+import java.awt.event.WindowAdapter;
 
-/*
- * This scripts sets a sequence of house numbers on the currently selected nodes.
- * 
- * The user can enter a start number and and an increment.
- */
 
 import java.awt.BorderLayout;
@@ -10,8 +10,12 @@
 
 import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowListener;
 
 import javax.swing.KeyStroke;
 
 import groovy.swing.SwingBuilder;
+import groovy.util.ProxyGenerator;
+
 import javax.swing.JOptionPane;
 import org.openstreetmap.josm.Main;
@@ -35,4 +39,5 @@
 import java.awt.GridBagLayout;
 import javax.swing.JLabel;
+import java.awt.event.FocusListener;
 
 import javax.swing.Action;
@@ -43,4 +48,6 @@
 import java.awt.event.ActionListener;
 import java.awt.Dimension;
+import java.awt.Dialog.ModalityType;
+import java.awt.event.WindowEvent;
 
 class AddHouseNumberDialog extends JDialog {
@@ -56,7 +63,8 @@
 	private JTextField tfStart;
 	private JTextField tfIncrement;
+	private def actApply;
 	
 	public AddHouseNumberDialog(){
-		super(Main.parent, true /* modal */)
+		super(Main.parent,true)
 		build();
 	}
@@ -95,5 +103,5 @@
 		SwingBuilder swing = new SwingBuilder()
 		return swing.panel(layout: new FlowLayout(FlowLayout.CENTER)) {
-		    def actApply = action(name: "Apply", smallIcon: ImageProvider.get("ok"), closure: {apply(); setVisible(false)})
+		    actApply = action(name: "Apply", smallIcon: ImageProvider.get("ok"), closure: {apply(); setVisible(false)})
 			def btnApply = button(action: actApply)
 			btnApply.setFocusable(true)
@@ -114,5 +122,7 @@
 			return
 		}
-		def cmds = getCurrentlySelectedNodes().collect { Node n ->
+		def nodes = Main?.map?.mapView?.editLayer?.data?.getSelectedNodes()?.asList()
+		if (nodes == null || nodes.isEmpty()) return
+		def cmds = nodes.collect { Node n ->
 			Node nn = new Node(n)
 			nn.put("addr:housenumber", start.toString())
@@ -120,5 +130,4 @@
 			return new ChangeCommand(n, nn)			
 		}
-		if (cmds.isEmpty()) return
 		Main.main.undoRedo.add(new SequenceCommand("Setting house numbers", cmds))
 	}
@@ -131,18 +140,8 @@
 		cp.add(buildInputPanel(), BorderLayout.CENTER)
 		cp.add(buildControlButtonPanel(), BorderLayout.SOUTH)
-	}	
-	
-	def getCurrentDataSet() {
-		def layer = Main?.map?.mapView?.activeLayer
-		if (layer == null) return null
-		if (! (layer instanceof OsmDataLayer)) return null
-		return layer.data
-	}
-	
-	def getCurrentlySelectedNodes() {
-		def DataSet ds = getCurrentDataSet()
-		if (ds == null) return []
-		return ds.getSelectedNodes().asList()
-	}
+		
+		addWindowListener([windowActivated: {tfStart.requestFocusInWindow()}] as WindowAdapter) 
+		getRootPane().registerKeyboardAction(actApply, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,KeyEvent.CTRL_MASK, false), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+	}		
 
 	@Override
