Index: /trunk/src/org/openstreetmap/josm/actions/OpenAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OpenAction.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/actions/OpenAction.java	(revision 733)
@@ -68,13 +68,14 @@
 
 	private void openAsData(File file) throws SAXException, IOException, FileNotFoundException {
-	    String fn = file.getName();
-	    if (ExtensionFileFilter.filters[ExtensionFileFilter.OSM].acceptName(fn)) {
-	    	DataSet dataSet = OsmReader.parseDataSet(new FileInputStream(file), null, Main.pleaseWaitDlg);
-	    	OsmDataLayer layer = new OsmDataLayer(dataSet, file.getName(), file);
-            Main.main.addLayer(layer);
-	    }
-	    else
-	    	JOptionPane.showMessageDialog(Main.parent, fn+": "+tr("Unknown file extension: {0}", fn.substring(file.getName().lastIndexOf('.')+1)));
-    }
+		String fn = file.getName();
+		if (ExtensionFileFilter.filters[ExtensionFileFilter.OSM].acceptName(fn)) {
+			DataSet dataSet = OsmReader.parseDataSet(new FileInputStream(file), null, Main.pleaseWaitDlg);
+			OsmDataLayer layer = new OsmDataLayer(dataSet, file.getName(), file);
+			Main.main.addLayer(layer);
+			layer.fireDataChange();
+		}
+		else
+			JOptionPane.showMessageDialog(Main.parent, fn+": "+tr("Unknown file extension: {0}", fn.substring(file.getName().lastIndexOf('.')+1)));
+	}
 
 	private void openFileAsGpx(File file) throws SAXException, IOException, FileNotFoundException {
Index: /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java	(revision 733)
@@ -61,5 +61,5 @@
 		Main.main.undoRedo.add(new SequenceCommand(tr("Reverse ways"), c));
 		if (propertiesUpdated)
-			Main.map.getPropertiesDialog().selectionChanged(Main.ds.getSelected());
+			Main.ds.fireSelectionChanged(Main.ds.getSelected());
 		Main.map.repaint();
     }
Index: /trunk/src/org/openstreetmap/josm/data/ServerSidePreferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/ServerSidePreferences.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/data/ServerSidePreferences.java	(revision 733)
@@ -66,5 +66,5 @@
 			try {
 				URL u = new URL(getPreferencesDir());
-				System.out.println("uplaoding preferences to "+u);
+				System.out.println("uploading preferences to "+u);
 				HttpURLConnection con = (HttpURLConnection)u.openConnection();
 				con.addRequestProperty("Authorization", "Basic "+Base64.encode(get("osm-server.username")+":"+get("osm-server.password")));
Index: /trunk/src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/gui/MapFrame.java	(revision 733)
@@ -67,6 +67,4 @@
 	public final ButtonGroup toolGroup = new ButtonGroup();
 
-	private PropertiesDialog propertiesDialog;
-
 	public MapFrame() {
 		setSize(400,400);
@@ -96,5 +94,5 @@
 
 		addToggleDialog(new LayerListDialog(this));
-		addToggleDialog(propertiesDialog = new PropertiesDialog(this));
+		addToggleDialog(new PropertiesDialog(this));
 		addToggleDialog(new HistoryDialog());
 		addToggleDialog(new SelectionListDialog());
@@ -189,7 +187,3 @@
 			panel.add(statusLine, BorderLayout.SOUTH);
 	}
-
-	public final PropertiesDialog getPropertiesDialog() {
-    	return propertiesDialog;
-    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 733)
@@ -47,4 +47,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
@@ -96,21 +97,24 @@
 		@Override public void mouseClicked(MouseEvent e) {
 			if (e.getClickCount() < 2)
-				return;
-	
-			if (e.getSource() == propertyTable)
+			{
+				if (e.getSource() == propertyTable)
+					membershipTable.clearSelection();
+				else if (e.getSource() == membershipTable)
+					propertyTable.clearSelection();
+			}
+			else if (e.getSource() == propertyTable)
 			{
 				int row = propertyTable.rowAtPoint(e.getPoint());
-				if (row > -1) {
+				if (row > -1)
 					propertyEdit(row);
-					return;
-			}
 			} else if (e.getSource() == membershipTable) {
 				int row = membershipTable.rowAtPoint(e.getPoint());
-				if (row > -1) {
+				if (row > -1)
 					membershipEdit(row);
-					return;
-				}
-			}
-			add();
+			}
+			else
+			{
+				add();
+			}
 		}
 	}
@@ -475,5 +479,5 @@
 		
 		membershipData.setColumnIdentifiers(new String[]{tr("Member Of"),tr("Role")});
-		membershipTable.setRowSelectionAllowed(false);
+		membershipTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 		
 		membershipTable.getColumnModel().getColumn(0).setCellRenderer(new DefaultTableCellRenderer() {
@@ -506,19 +510,54 @@
 		ActionListener buttonAction = new ActionListener(){
 			public void actionPerformed(ActionEvent e) {
-				int sel = propertyTable.getSelectedRow();
+				int row = membershipTable.getSelectedRow();
 				if (e.getActionCommand().equals("Add"))
 					add();
-				else if (e.getActionCommand().equals("Edit")) {
-					if(propertyTable.getRowCount() == 1)
-						sel = 0;
-					if (sel == -1)
-						JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to edit."));
-					else
-						propertyEdit(sel);
-				} else if (e.getActionCommand().equals("Delete")) {
-					if (sel == -1)
-						JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."));
-					else
-						delete(sel);
+				else if(row >= 0)
+				{
+					if (e.getActionCommand().equals("Edit"))
+						membershipEdit(row);
+					else if (e.getActionCommand().equals("Delete")) {
+						Relation cur = (Relation)membershipData.getValueAt(row, 0);
+						NameVisitor n = new NameVisitor();
+						cur.visit(n);
+						if(JOptionPane.showConfirmDialog(Main.parent, tr("Really delete selection from relation {0}?", n.name),
+						tr("Change relation"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_NO_OPTION)
+						{
+							Relation rel = new Relation(cur);
+							Collection<OsmPrimitive> sel = Main.ds.getSelected();
+							for (RelationMember rm : cur.members) {
+								for (OsmPrimitive osm : sel) {
+									if (rm.member == osm)
+									{
+										RelationMember mem = new RelationMember();
+										mem.role = rm.role;
+										mem.member = rm.member;
+										rel.members.remove(mem);
+										break;
+									}
+								}
+							}
+							Main.main.undoRedo.add(new ChangeCommand(cur, rel));
+							selectionChanged(sel); // update whole table
+						}
+						
+					}
+				}
+				else
+				{
+					int sel = propertyTable.getSelectedRow();
+					if (e.getActionCommand().equals("Edit")) {
+						if(propertyTable.getRowCount() == 1)
+							sel = 0;
+						if (sel == -1)
+							JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to edit."));
+						else
+							propertyEdit(sel);
+					} else if (e.getActionCommand().equals("Delete")) {
+						if (sel == -1)
+							JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."));
+						else
+							delete(sel);
+					}
 				}
 			}
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationEditor.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationEditor.java	(revision 733)
@@ -65,4 +65,5 @@
 	private final Relation relation;
 	private final Relation clone;
+	private JLabel status;
 	
 	/**
@@ -137,6 +138,8 @@
 						if (RelationEditor.this.relation == null) {
 							Main.main.undoRedo.add(new AddCommand(clone));
+							Main.ds.fireSelectionChanged(Main.ds.getSelected());
 						} else if (!RelationEditor.this.relation.realEqual(clone, true)) {
 							Main.main.undoRedo.add(new ChangeCommand(RelationEditor.this.relation, clone));
+							Main.ds.fireSelectionChanged(Main.ds.getSelected());
 						}
 					}
@@ -150,6 +153,5 @@
 			"as well as the members. In addition to this we should have a smart editor that " +
 			"detects the type of relationship and limits your choices in a sensible way.")+"</em></html>");
-		
-		getContentPane().add(help, BorderLayout.NORTH);		
+		getContentPane().add(help, BorderLayout.NORTH);
 		try { setAlwaysOnTop(true); } catch (SecurityException sx) {}
 		
@@ -182,5 +184,5 @@
 		// setting up the member table
 		
-	    memberData.setColumnIdentifiers(new String[]{tr("Role"),tr("Occupied By")});
+		memberData.setColumnIdentifiers(new String[]{tr("Role"),tr("Occupied By")});
 		memberTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
 		memberTable.getColumnModel().getColumn(1).setCellRenderer(new OsmPrimitivRenderer());
@@ -213,5 +215,5 @@
 		bothTables.add(new JLabel(tr("Tags (empty value deletes tag)")), GBC.eol().fill(GBC.HORIZONTAL));
 		bothTables.add(new JScrollPane(propertyTable), GBC.eop().fill(GBC.BOTH));
-		bothTables.add(new JLabel(tr("Members")), GBC.eol().fill(GBC.HORIZONTAL));
+		bothTables.add(status = new JLabel(tr("Members")), GBC.eol().fill(GBC.HORIZONTAL));
 		bothTables.add(new JScrollPane(memberTable), GBC.eol().fill(GBC.BOTH));
 		
@@ -251,18 +253,17 @@
 			}
 		}));
-        buttonPanel.add(createButton(marktr("Download Members"),"down", tr("Download all incomplete ways and nodes in relation"), KeyEvent.VK_L, new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                downloadRelationMembers();                
-                refreshTables();
-            }            
-        }));
-        
-        
+		buttonPanel.add(createButton(marktr("Download Members"),"down", tr("Download all incomplete ways and nodes in relation"), KeyEvent.VK_L, new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				downloadRelationMembers();
+				refreshTables();
+			}
+		}));
+
 		bothTables.add(buttonPanel, GBC.eop().fill(GBC.HORIZONTAL));
 
 		tabPane.add(bothTables, "Basic");
-		
+
 		refreshTables();
-		
+
 		setSize(new Dimension(600, 500));
 		setLocationRelativeTo(Main.parent);
@@ -285,4 +286,5 @@
 			memberData.addRow(new Object[]{em.role, em.member});
 		}
+		status.setText(tr("Members: {0}", clone.members.size()));
 	}
 	
Index: /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 733)
@@ -42,5 +42,5 @@
 		
 		JPanel dlg = new JPanel(new GridBagLayout());
-		gui.tabpane.addTab("Bookmarks", dlg);
+		gui.tabpane.addTab(tr("Bookmarks"), dlg);
 
 		bookmarks = new BookmarkList();
Index: /trunk/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/gui/download/BoundingBoxSelection.java	(revision 733)
@@ -133,5 +133,5 @@
 		dlg.add(sizeCheck, GBC.eop().insets(10,0,5,20));
 
-		gui.tabpane.addTab("Bounding Box", dlg);
+		gui.tabpane.addTab(tr("Bounding Box"), dlg);
 	}
 	
Index: /trunk/src/org/openstreetmap/josm/gui/download/WorldChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/WorldChooser.java	(revision 732)
+++ /trunk/src/org/openstreetmap/josm/gui/download/WorldChooser.java	(revision 733)
@@ -99,6 +99,6 @@
 		temp.add(this, BorderLayout.CENTER);
 		temp.add(new JLabel(tr("You can use the mouse or Ctrl+Arrow keys/./ to zoom and pan.")), BorderLayout.SOUTH);
-		gui.tabpane.add(temp, "Map");
-		new MapMover(this, temp);		
+		gui.tabpane.add(temp, tr("Map"));
+		new MapMover(this, temp);
 		SelectionEnded selListener = new SelectionEnded(){
 			public void selectionEnded(Rectangle r, boolean alt, boolean shift, boolean ctrl) {
Index: /trunk/styles/standard/elemstyles.xml
===================================================================
--- /trunk/styles/standard/elemstyles.xml	(revision 732)
+++ /trunk/styles/standard/elemstyles.xml	(revision 733)
@@ -1910,5 +1910,5 @@
 		<condition k="amenity" v="shelter" />
 		<area colour="#f7efb7"/>
-		<icon annotate="true" src="accomodation/shelter.png" />
+		<icon annotate="true" src="accommodation/shelter.png" />
 		<scale_min>1</scale_min>
 		<scale_max>50000</scale_max>
