Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMStreet.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMStreet.java	(revision 24106)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMStreet.java	(revision 24107)
@@ -19,4 +19,5 @@
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
 
 /**
@@ -52,4 +53,7 @@
 	}
 	
+	/**
+	 * Lazy creation of children list.
+	 */
 	private void lazyCreateChildren() {
 		if (children == null) {
@@ -58,4 +62,9 @@
 	}
 	
+	/**
+	 * Adds an associated address to the street.
+	 *
+	 * @param aNode the address node to add
+	 */
 	public void addAddress(OSMAddress aNode) {
 		lazyCreateAddresses();
@@ -63,4 +72,7 @@
 	}
 
+	/**
+	 * Lazy creation of address list.
+	 */
 	private void lazyCreateAddresses() {
 		if (addresses == null) {
@@ -69,4 +81,9 @@
 	}
 	
+	/**
+	 * Checks for addresses.
+	 *
+	 * @return true, if street has one or more associated addresses.
+	 */
 	public boolean hasAddresses() {
 		return addresses != null && addresses.size() > 0;
@@ -136,4 +153,22 @@
 	}
 	
+	/**
+	 * Checks if the attached way has an associated street relation.
+	 *
+	 * @return true, if this street has an "associatedStreet" relation.
+	 */
+	public boolean hasAssociatedStreetRelation() {
+		OsmPrimitive osm = getOsmObject();
+		for (OsmPrimitive refs : osm.getReferrers()) {
+			if (refs instanceof Relation) {
+				Relation rel = (Relation) refs;
+				if (TagUtils.isAssociatedStreetRelation(rel)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+	
 	/* (non-Javadoc)
 	 * @see org.openstreetmap.josm.plugins.addressEdit.NodeEntityBase#toString()
Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AddressEditDialog.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AddressEditDialog.java	(revision 24106)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AddressEditDialog.java	(revision 24107)
@@ -58,4 +58,5 @@
 import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ApplyAllGuessesAction;
 import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AssignAddressToStreetAction;
+import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ConvertAllToRelationAction;
 import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ConvertToRelationAction;
 import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.GuessAddressDataAction;
@@ -84,4 +85,5 @@
 	private RemoveAddressTagsAction removeAddressTagsAction = new RemoveAddressTagsAction();
 	private ConvertToRelationAction convertToRelationAction = new ConvertToRelationAction();
+	private ConvertAllToRelationAction convertAllToRelationAction = new ConvertAllToRelationAction();
 	
 	private AbstractAddressEditAction[] actions = new AbstractAddressEditAction[] {
@@ -91,5 +93,6 @@
 		selectAddressesInMapAction,
 		removeAddressTagsAction,
-		convertToRelationAction
+		convertToRelationAction,
+		convertAllToRelationAction
 	};
 	private JLabel streetLabel;
@@ -130,7 +133,12 @@
 			headerPanel.add(streetLabel);
 			
-			JPanel streetButtonPanel = new JPanel(new GridLayout(1, 4));
+			JPanel streetButtonPanel = new JPanel(new GridLayout(1, 3));
 			SideButton convertToRel = new SideButton(convertToRelationAction);															   
 			streetButtonPanel.add(convertToRel);
+			// SideButton convertAllToRel = new SideButton(convertAllToRelationAction);															   
+			// streetButtonPanel.add(convertAllToRel);
+			// add filler
+			streetButtonPanel.add(new JPanel());
+			streetButtonPanel.add(new JPanel());
 			
 			streetPanel.add(streetButtonPanel, BorderLayout.SOUTH);
Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/ConvertAllToRelationAction.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/ConvertAllToRelationAction.java	(revision 24107)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/ConvertAllToRelationAction.java	(revision 24107)
@@ -0,0 +1,68 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under 
+ * the terms of the GNU General Public License as published by the 
+ * Free Software Foundation, either version 3 of the License, or 
+ * (at your option) any later version. 
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+ * See the GNU General Public License for more details. 
+ * 
+ * You should have received a copy of the GNU General Public License along with this program. 
+ * If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.openstreetmap.josm.plugins.fixAddresses.gui.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import org.openstreetmap.josm.plugins.fixAddresses.AddressEditContainer;
+import org.openstreetmap.josm.plugins.fixAddresses.OSMStreet;
+import org.openstreetmap.josm.plugins.fixAddresses.gui.AddressEditSelectionEvent;
+
+@SuppressWarnings("serial")
+public class ConvertAllToRelationAction extends ConvertToRelationAction {
+	public ConvertAllToRelationAction() {
+		super(tr("Convert ALL streets."), "convert2rel_24", "Create relation between street and related addresses for ALL streets in the current layer.");
+	}
+	
+	@Override
+	public void addressEditActionPerformed(AddressEditSelectionEvent ev) {
+		// nothing to do
+	}
+
+	@Override
+	public void addressEditActionPerformed(AddressEditContainer container) {
+		if (container != null) {
+			for (OSMStreet street : container.getStreetList()) {
+				createRelationForStreet(street);
+			}
+		}
+	}
+
+	@Override
+	protected void updateEnabledState(AddressEditContainer container) {
+		setEnabled(hasStreetsToConvert());
+	}
+
+	@Override
+	protected void updateEnabledState(AddressEditSelectionEvent event) {
+		setEnabled(hasStreetsToConvert());
+	}
+	
+	/**
+	 * Checks for streets to convert to a relation.
+	 *
+	 * @return true, if successful
+	 */
+	private boolean hasStreetsToConvert() {
+		if (container != null) {
+			for (OSMStreet street : container.getStreetList()) {
+				if (street.hasAddresses() && !street.hasAssociatedStreetRelation()) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+}
Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/ConvertToRelationAction.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/ConvertToRelationAction.java	(revision 24106)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/ConvertToRelationAction.java	(revision 24107)
@@ -32,5 +32,19 @@
 		super(tr("Convert to relation."), "convert2rel_24", "Create relation between street and related addresses.");
 	}
+	
+	/**
+	 * Instantiates a new convert to relation action.
+	 *
+	 * @param name the name of the action
+	 * @param iconName the icon name
+	 * @param tooltip the tool tip to show on hover
+	 */
+	public ConvertToRelationAction(String name, String iconName, String tooltip) {
+		super(name, iconName, tooltip);		
+	}
 
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AbstractAddressEditAction#addressEditActionPerformed(org.openstreetmap.josm.plugins.fixAddresses.gui.AddressEditSelectionEvent)
+	 */
 	@Override
 	public void addressEditActionPerformed(AddressEditSelectionEvent ev) {
@@ -38,22 +52,39 @@
 		
 		if (streetNode != null) {
-			beginTransaction(tr("Create address relation for ") + " '" + streetNode.getName() + "'");
-			
-			Relation r = new Relation();
-			commands.add(new AddCommand(r));
-			commands.add(new ChangePropertyCommand(r, TagUtils.NAME_TAG, streetNode.getName()));
-			commands.add(new ChangePropertyCommand(r, TagUtils.RELATION_TYPE, TagUtils.ASSOCIATEDSTREET_RELATION_TYPE));
-						
-			r.addMember(new RelationMember(TagUtils.STREET_RELATION_ROLE, streetNode.getOsmObject()));
-			for (OSMAddress addrNode : streetNode.getAddresses()) {
-				beginObjectTransaction(addrNode);				
-				r.addMember(new RelationMember(TagUtils.HOUSE_RELATION_ROLE, addrNode.getOsmObject()));
-				addrNode.setStreetName(null);
-				finishObjectTransaction(addrNode);
-			}
-			finishTransaction();
+			createRelationForStreet(streetNode);
 		}
 	}
 
+	/**
+	 * Creates the 'associatedStreet' relation for a given street by adding all addresses which
+	 * matches the name of the street.
+	 *
+	 * @param streetNode the street node
+	 */
+	protected void createRelationForStreet(OSMStreet streetNode) {
+		if (streetNode == null || !streetNode.hasAddresses()) return;
+		
+		beginTransaction(tr("Create address relation for ") + " '" + streetNode.getName() + "'");
+		// Create the relation
+		Relation r = new Relation();
+		commands.add(new AddCommand(r));
+		commands.add(new ChangePropertyCommand(r, TagUtils.NAME_TAG, streetNode.getName()));
+		commands.add(new ChangePropertyCommand(r, TagUtils.RELATION_TYPE, TagUtils.ASSOCIATEDSTREET_RELATION_TYPE));
+		// add street with role 'street'
+		r.addMember(new RelationMember(TagUtils.STREET_RELATION_ROLE, streetNode.getOsmObject()));
+		
+		// add address members
+		for (OSMAddress addrNode : streetNode.getAddresses()) {
+			beginObjectTransaction(addrNode);				
+			r.addMember(new RelationMember(TagUtils.HOUSE_RELATION_ROLE, addrNode.getOsmObject()));
+			addrNode.setStreetName(null); // remove street name
+			finishObjectTransaction(addrNode);
+		}
+		finishTransaction();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AbstractAddressEditAction#addressEditActionPerformed(org.openstreetmap.josm.plugins.fixAddresses.AddressEditContainer)
+	 */
 	@Override
 	public void addressEditActionPerformed(AddressEditContainer container) {
@@ -61,4 +92,7 @@
 	}
 
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AbstractAddressEditAction#updateEnabledState(org.openstreetmap.josm.plugins.fixAddresses.AddressEditContainer)
+	 */
 	@Override
 	protected void updateEnabledState(AddressEditContainer container) {
@@ -66,4 +100,7 @@
 	}
 
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AbstractAddressEditAction#updateEnabledState(org.openstreetmap.josm.plugins.fixAddresses.gui.AddressEditSelectionEvent)
+	 */
 	@Override
 	protected void updateEnabledState(AddressEditSelectionEvent event) {
@@ -71,5 +108,5 @@
 		
 		OSMStreet street = event.getSelectedStreet();
-		setEnabled(street != null && street.hasAddresses());
+		setEnabled(street != null && street.hasAddresses() && !street.hasAssociatedStreetRelation());
 	}
 
