Index: applications/editors/josm/plugins/routing/src/com/innovant/josm/plugin/routing/RoutingPlugin.java
===================================================================
--- applications/editors/josm/plugins/routing/src/com/innovant/josm/plugin/routing/RoutingPlugin.java	(revision 14371)
+++ applications/editors/josm/plugins/routing/src/com/innovant/josm/plugin/routing/RoutingPlugin.java	(revision 14395)
@@ -113,4 +113,9 @@
      */
     private IconToggleButton moveRouteNodeButton;
+
+    /**
+     * IconToggleButton for moving route nodes, we use this field to show or hide the button.
+     */
+    private RoutingMenu menu;
 
     /**
@@ -133,5 +138,7 @@
         // Add routing layer
         routingLayer = new RoutingLayer(tr("Navigation"));
-        Main.main.menu.add(new RoutingMenu(tr("Routing")));
+        // Add menu
+        menu = new RoutingMenu(tr("Routing"));
+        Main.main.menu.add(menu);
         // Register this class as LayerChangeListener
         Layer.listeners.add(this);
@@ -188,4 +195,6 @@
 			removeRouteNodeButton.setVisible(false);
 			moveRouteNodeButton.setVisible(false);
+			// Enable menu
+			menu.enableStartItem();
             newFrame.addToggleDialog(routingDialog);
         }
@@ -209,4 +218,5 @@
 			removeRouteNodeButton.setVisible(true);
 			moveRouteNodeButton.setVisible(true);
+			menu.enableRestOfItems();
 			logger.debug("Added routing layer.");
 		}
@@ -223,4 +233,5 @@
 			removeRouteNodeButton.setVisible(false);
 			moveRouteNodeButton.setVisible(false);
+			menu.disableRestOfItems();
     		logger.debug("Removed routing layer.");
 		}
Index: applications/editors/josm/plugins/routing/src/com/innovant/josm/plugin/routing/gui/RoutingMenu.java
===================================================================
--- applications/editors/josm/plugins/routing/src/com/innovant/josm/plugin/routing/gui/RoutingMenu.java	(revision 14371)
+++ applications/editors/josm/plugins/routing/src/com/innovant/josm/plugin/routing/gui/RoutingMenu.java	(revision 14395)
@@ -60,4 +60,9 @@
 	private static final long serialVersionUID = 3559922048225708480L;
 
+	private JMenuItem startMI;
+	private JMenuItem reverseMI;
+	private JMenuItem clearMI;
+	private JMenu criteriaM;
+
 	/**
 	 * @param s
@@ -71,6 +76,6 @@
 		JMenu m;
 
-		mi = new JMenuItem(tr("Start routing"));
-		mi.addActionListener(new ActionListener() {
+		startMI = new JMenuItem(tr("Start routing"));
+		startMI.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
 				if(!routingLayer.isLayerAdded()) {
@@ -80,10 +85,10 @@
 			}
 		});
-		this.add(mi);
+		this.add(startMI);
 
 		this.addSeparator();
 		ButtonGroup group = new ButtonGroup();
 
-		m = new JMenu(tr("Criteria"));
+		criteriaM = new JMenu(tr("Criteria"));
 
 		JRadioButtonMenuItem rshorter = new JRadioButtonMenuItem(tr("Shortest"));
@@ -110,8 +115,8 @@
 		group.add(rshorter);
 		group.add(rfaster);
-		m.add(rshorter);
-		m.add(rfaster);
+		criteriaM.add(rshorter);
+		criteriaM.add(rfaster);
 
-		m.addSeparator();
+		criteriaM.addSeparator();
 		JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem("Ignore oneways");
 		cbmi.addItemListener(new ItemListener() {
@@ -125,10 +130,10 @@
 			}
 		});
-		m.add(cbmi);
-		this.add(m);
+		criteriaM.add(cbmi);
+		this.add(criteriaM);
 
 		this.addSeparator();
-		mi = new JMenuItem(tr("Reverse route"));
-		mi.addActionListener(new ActionListener() {
+		reverseMI = new JMenuItem(tr("Reverse route"));
+		reverseMI.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
 				routingModel.reverseNodes();
@@ -136,8 +141,8 @@
 			}
 		});
-		this.add(mi);
+		this.add(reverseMI);
 
-		mi = new JMenuItem(tr("Clear route"));
-		mi.addActionListener(new ActionListener() {
+		clearMI = new JMenuItem(tr("Clear route"));
+		clearMI.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
 				// Reset routing nodes and paths
@@ -147,8 +152,31 @@
 			}
 		});
-		this.add(mi);
+		this.add(clearMI);
 
+		// Initially disabled
+		disableAllItems();
 	}
 
+	public void disableAllItems() {
+		startMI.setEnabled(false);
+		reverseMI.setEnabled(false);
+		clearMI.setEnabled(false);
+		criteriaM.setEnabled(false);
+	}
 
+	public void enableStartItem() {
+		startMI.setEnabled(true);
+	}
+
+	public void enableRestOfItems() {
+		reverseMI.setEnabled(true);
+		clearMI.setEnabled(true);
+		criteriaM.setEnabled(true);
+	}
+
+	public void disableRestOfItems() {
+		reverseMI.setEnabled(false);
+		clearMI.setEnabled(false);
+		criteriaM.setEnabled(false);
+	}
 }
