Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 2699)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 2700)
@@ -456,4 +456,9 @@
         memberTableModel.addTableModelListener(sortAction);
         tb.add(sortAction);
+
+        // -- reverse action
+        ReverseAction reverseAction = new ReverseAction();
+        memberTableModel.addTableModelListener(reverseAction);
+        tb.add(reverseAction);
 
         tb.addSeparator();
@@ -895,4 +900,27 @@
     }
 
+    class ReverseAction extends AbstractAction implements TableModelListener {
+        public ReverseAction() {
+            putValue(SHORT_DESCRIPTION, tr("Reverse the order of the relation members"));
+            putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "reverse"));
+            putValue(NAME, tr("Reverse"));
+            Shortcut.registerShortcut("relationeditor:reverse", tr("Relation Editor: Reverse"), KeyEvent.VK_R,
+                    Shortcut.GROUP_MNEMONIC);
+            updateEnabledState();
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            memberTableModel.reverse();
+        }
+
+        protected void updateEnabledState() {
+            setEnabled(memberTableModel.getRowCount() > 0);
+        }
+
+        public void tableChanged(TableModelEvent e) {
+            updateEnabledState();
+        }
+    }
+
     class MoveUpAction extends AbstractAction implements ListSelectionListener {
         public MoveUpAction() {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 2699)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 2700)
@@ -744,4 +744,12 @@
 
     /**
+     * Reverse the relation members.
+     */
+    void reverse() {
+        Collections.reverse(members);
+        fireTableDataChanged();
+    }
+
+    /**
      * Determines the direction of way k with respect to the way ref_i.
      * The way ref_i is assumed to have the direction ref_direction and
