Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AbstractAddressEditAction.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AbstractAddressEditAction.java	(revision 23942)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AbstractAddressEditAction.java	(revision 23943)
@@ -18,4 +18,6 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.plugins.fixAddresses.AddressEditContainer;
+import org.openstreetmap.josm.plugins.fixAddresses.IAddressEditContainerListener;
+import org.openstreetmap.josm.plugins.fixAddresses.INodeEntity;
 
 /**
@@ -26,11 +28,11 @@
  * container or on selection items.
  * Most actions will work in both cases, so it is recommended to have one single method which
- * accepts a list of addresses or streets and executes the tasks to be done by this action. 
+ * accepts a list of addresses or streets and executes the tasks to be done by this action.
+ *  
  * @author Oliver Wieland <oliver.wieland@online.de>
- * 
  */
 
 @SuppressWarnings("serial")
-public abstract class AbstractAddressEditAction extends JosmAction {
+public abstract class AbstractAddressEditAction extends JosmAction implements IAddressEditContainerListener {	
 	private AddressEditSelectionEvent event;
 	protected AddressEditContainer container;
@@ -54,4 +56,5 @@
 	
 	/**
+	 * Gets the current address container.
 	 * @return the container
 	 */
@@ -64,6 +67,12 @@
 	 */
 	public void setContainer(AddressEditContainer container) {
+		if (container != null) { // remove old listener first
+			container.removeChangedListener(this);
+		}
 		this.container = container;
 		updateEnabledState();
+		if (container != null) {
+			container.addChangedListener(this);
+		}
 	}
 
@@ -80,4 +89,22 @@
 	protected void setEvent(AddressEditSelectionEvent event) {
 		this.event = event;
+		updateEnabledState();
+	}
+	
+	/* (non-Javadoc)
+	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+	 */
+	@Override
+	public void actionPerformed(ActionEvent arg0) {
+		if (event != null) { // use the event acquired previously.
+			addressEditActionPerformed(event);	
+			event = null; // consume event
+		} else {
+			if (container != null) {
+				addressEditActionPerformed(container);
+			} else { // call super class hook
+				actionPerformed(arg0);
+			}
+		}
 	}
 
@@ -106,27 +133,9 @@
 	
 	/**
-	 * Updates 'enabled' state depending on the given address container object.
-	 * @param container The address container (maybe null).
+	 * Updates 'enabled' state depending on the current selection.
+	 * @param container The selection event.
 	 * @return
 	 */
 	protected abstract void updateEnabledState(AddressEditSelectionEvent event);
-
-	/* (non-Javadoc)
-	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
-	 */
-	@Override
-	public void actionPerformed(ActionEvent arg0) {
-		if (event != null) { // use the event acquired previously.
-			addressEditActionPerformed(event);	
-			event = null; // consume event
-		} else {
-			if (container != null) {
-				addressEditActionPerformed(container);
-			} else { // call super class hook
-				actionPerformed(arg0);
-			}
-		}
-	}
-	
 
 	/**
@@ -143,4 +152,18 @@
 	
 	
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IAddressEditContainerListener#containerChanged(org.openstreetmap.josm.plugins.fixAddresses.AddressEditContainer)
+	 */
+	@Override
+	public void containerChanged(AddressEditContainer container) {
+		updateEnabledState();
+	}
 
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IAddressEditContainerListener#entityChanged(org.openstreetmap.josm.plugins.fixAddresses.INodeEntity)
+	 */
+	@Override
+	public void entityChanged(INodeEntity node) {
+		updateEnabledState();		
+	}
 }
