Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/TurnRestrictionBuilder.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/TurnRestrictionBuilder.java	(revision 20723)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/TurnRestrictionBuilder.java	(revision 20724)
@@ -13,4 +13,10 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
+/**
+ * TurnRestrictionBuilder creates a turn restriction and initializes it with
+ * objects from a selection of OSM primitives, i.e. the current selection
+ * in a {@see OsmDataLayer}.
+ *
+ */
 public class TurnRestrictionBuilder {
 
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/dnd/PrimitiveIdListTransferHandler.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/dnd/PrimitiveIdListTransferHandler.java	(revision 20723)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/dnd/PrimitiveIdListTransferHandler.java	(revision 20724)
@@ -11,5 +11,5 @@
 
 /**
- * PrimitiveIdListTransferHandler is a transfer handler for component which 
+ * PrimitiveIdListTransferHandler is a transfer handler for components which 
  * provide and/or accept a list of {@see PrimitiveId} via copy/paste or
  * drag-and-drop.
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberColumnModel.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberColumnModel.java	(revision 20723)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberColumnModel.java	(revision 20724)
@@ -7,5 +7,4 @@
 import javax.swing.table.TableColumn;
 
-import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
@@ -23,4 +22,5 @@
 		 col.setPreferredWidth(100);	
 		 col.setCellEditor(new MemberRoleCellEditor());
+		 col.setCellRenderer(new RelationMemberRoleCellRenderer());
 		 addColumn(col);
 		 
@@ -30,5 +30,5 @@
 	      col.setResizable(true);
 	      col.setPreferredWidth(300);
-	      col.setCellRenderer(new OsmPrimitivRenderer());
+	      col.setCellRenderer(new RelationMemberTargetCellRenderer());
 	      addColumn(col);	      
 	}
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberEditorModel.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberEditorModel.java	(revision 20723)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberEditorModel.java	(revision 20724)
@@ -327,9 +327,7 @@
 	 */
 	protected void removedSelectedMembers() {
-		int j = 0;
-		for(int i=0; i < getRowCount();i++){
+		for(int i=getRowCount()-1; i >= 0;i--){
 			if (rowSelectionModel.isSelectedIndex(i)) {
-				members.remove(i - j);
-				j++;
+				members.remove(i);
 			}
 		}
@@ -448,8 +446,21 @@
 
 	public int getRowCount() {
-		return members.size();
+		if (members.size() > 0) return members.size();
+		
+		// we display an empty row if the model is empty because otherwise
+		// we can't drag/drop into the empty table.
+		// FIXME: use JTable.setFillsViewportHeight(boolean) after the migration
+		// to Java 6.
+		return 1;
 	}
 
 	public Object getValueAt(int rowIndex, int columnIndex) {
+		if (members.size() == 0 && rowIndex == 0){
+			// we display an empty row if the model is empty because otherwise
+			// we can't drag/drop into the empty table.
+			// FIXME: use JTable.setFillsViewportHeight(boolean) after the migration
+			// to Java 6.
+			return null;
+		}
 		switch(columnIndex){
 		case 0: return members.get(rowIndex).getRole();
@@ -461,4 +472,11 @@
 	@Override
 	public boolean isCellEditable(int rowIndex, int columnIndex) {
+		// we display an empty row if the model is empty because otherwise
+		// we can't drag/drop into the empty table. This row isn't editable
+		// FIXME: use JTable.setFillsViewportHeight(boolean) after the migration
+		// to Java 6.
+		if (members.size() == 0 && rowIndex == 0) return false;
+		
+		// otherwise only the column with the member roles is editable
 		return columnIndex == 0;
 	}
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberRoleCellRenderer.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberRoleCellRenderer.java	(revision 20724)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberRoleCellRenderer.java	(revision 20724)
@@ -0,0 +1,38 @@
+package org.openstreetmap.josm.plugins.turnrestrictions.editor;
+
+import java.awt.Component;
+
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.UIManager;
+import javax.swing.table.DefaultTableCellRenderer;
+
+public class RelationMemberRoleCellRenderer extends DefaultTableCellRenderer{
+private JLabel mockCell;
+	
+	public RelationMemberRoleCellRenderer() {
+		mockCell = new JLabel();
+		mockCell.setText("");
+		mockCell.setOpaque(true);
+	}
+	
+	public Component getTableCellRendererComponent(JTable table, Object value,
+			boolean isSelected, boolean hasFocus, int row, int column) {
+		if (value != null){
+			return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+		}
+		
+		// FIXME: required to always draw a mock row, even if the table is empty.
+		// Otherwise, drag and drop onto the table fails.
+		// Replace with JTable.setFillsViewportHeight(boolean) after the migration
+		// to Java 6.
+		if (isSelected){
+			mockCell.setBackground(UIManager.getColor("Table.selectionBackground"));
+			mockCell.setForeground(UIManager.getColor("Table.selectionForeground"));
+		} else {
+			mockCell.setBackground(UIManager.getColor("Panel.background"));
+			mockCell.setForeground(UIManager.getColor("Panel.foreground"));
+		}		
+		return mockCell;
+	}
+}
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberTargetCellRenderer.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberTargetCellRenderer.java	(revision 20724)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/RelationMemberTargetCellRenderer.java	(revision 20724)
@@ -0,0 +1,42 @@
+package org.openstreetmap.josm.plugins.turnrestrictions.editor;
+
+import java.awt.Component;
+import java.util.logging.Logger;
+
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.UIManager;
+
+import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
+
+public class RelationMemberTargetCellRenderer extends OsmPrimitivRenderer{
+	static private final Logger logger = Logger.getLogger(RelationMemberTargetCellRenderer.class.getName());
+	private JLabel mockCell;
+	
+	public RelationMemberTargetCellRenderer() {
+		mockCell = new JLabel();
+		mockCell.setText("");
+		mockCell.setOpaque(true);
+	}
+	
+	@Override
+	public Component getTableCellRendererComponent(JTable table, Object value,
+			boolean isSelected, boolean hasFocus, int row, int column) {
+		if (value != null){
+			return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+		}
+		
+		// FIXME: required to always draw a mock row, even if the table is empty.
+		// Otherwise, drag and drop onto the table fails.
+		// Replace with JTable.setFillsViewportHeight(boolean) after the migration
+		// to Java 6.
+		if (isSelected){
+			mockCell.setBackground(UIManager.getColor("Table.selectionBackground"));
+			mockCell.setForeground(UIManager.getColor("Table.selectionForeground"));
+		} else {
+			mockCell.setBackground(UIManager.getColor("Panel.background"));
+			mockCell.setForeground(UIManager.getColor("Panel.foreground"));
+		}		
+		return mockCell;		
+	}
+}
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionEditorModel.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionEditorModel.java	(revision 20723)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionEditorModel.java	(revision 20724)
@@ -242,5 +242,5 @@
 				tm.setValue(value);
 			} else {
-				tagEditorModel.add(new TagModel("restriction", value.trim().toLowerCase()));
+				tagEditorModel.prepend(new TagModel("restriction", value.trim().toLowerCase()));
 			}
 		}
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/qa/IssuesModel.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/qa/IssuesModel.java	(revision 20723)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/qa/IssuesModel.java	(revision 20724)
@@ -184,7 +184,10 @@
 		OsmPrimitive from = fromLegs.iterator().next();
 		OsmPrimitive to = toLegs.iterator().next();
+		
 		if (! (from instanceof Way)) return;
 		if (! (to instanceof Way)) return;
-		if (from.equals(to)){
+		if (from.equals(to) && ! "no_u_turn".equals(editorModel.getRestrictionTagValue())){
+			// identical from and to allowed for "no_u_turn" only
+			//
 			issues.add(new IdenticalTurnRestrictionLegsError(this, from));
 		}		
