Index: trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 16455)
+++ trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 16456)
@@ -13,6 +13,4 @@
 import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
 
 import org.openstreetmap.josm.actions.AutoScaleAction;
@@ -56,5 +54,5 @@
         final NodeListTableColumnModel columnModel = new NodeListTableColumnModel();
         final JTable table = new JTable(tableModel, columnModel);
-        tableModel.addTableModelListener(new ReversedChangeListener(table, columnModel));
+        tableModel.addTableModelListener(new ReversedChangeListener(table, columnModel, tr("The nodes of this way are in reverse order")));
         table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         selectionSynchronizer.participateInSynchronizedSelection(table.getSelectionModel());
@@ -62,33 +60,4 @@
         table.addMouseListener(new DoubleClickAdapter(table));
         return table;
-    }
-
-    static final class ReversedChangeListener implements TableModelListener {
-        private final NodeListTableColumnModel columnModel;
-        private final JTable table;
-        private Boolean reversed;
-        private final String nonReversedText;
-        private final String reversedText;
-
-        ReversedChangeListener(JTable table, NodeListTableColumnModel columnModel) {
-            this.columnModel = columnModel;
-            this.table = table;
-            nonReversedText = tr("Nodes") + (table.getFont().canDisplay('\u25bc') ? " \u25bc" : " (1-n)");
-            reversedText = tr("Nodes") + (table.getFont().canDisplay('\u25b2') ? " \u25b2" : " (n-1)");
-        }
-
-        @Override
-        public void tableChanged(TableModelEvent e) {
-            if (e.getSource() instanceof DiffTableModel) {
-                final DiffTableModel mod = (DiffTableModel) e.getSource();
-                if (reversed == null || reversed != mod.isReversed()) {
-                    reversed = mod.isReversed();
-                    columnModel.getColumn(0).setHeaderValue(reversed ? reversedText : nonReversedText);
-                    table.getTableHeader().setToolTipText(
-                            reversed ? tr("The nodes of this way are in reverse order") : null);
-                    table.getTableHeader().repaint();
-                }
-            }
-        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListViewer.java	(revision 16455)
+++ trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListViewer.java	(revision 16456)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.history;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Rectangle;
@@ -21,7 +23,9 @@
     @Override
     protected JTable buildTable(PointInTimeType pointInTimeType) {
-        JTable table = new JTable(
-                model.getRelationMemberTableModel(pointInTimeType),
-                new RelationMemberTableColumnModel());
+        DiffTableModel tableModel = model.getRelationMemberTableModel(pointInTimeType);
+        RelationMemberTableColumnModel columnModel = new RelationMemberTableColumnModel();
+        JTable table = new JTable(tableModel, columnModel);
+        tableModel.addTableModelListener(new ReversedChangeListener(
+                table, columnModel, tr("The members of this relation are in reverse order")));
         table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         selectionSynchronizer.participateInSynchronizedSelection(table.getSelectionModel());
Index: trunk/src/org/openstreetmap/josm/gui/history/ReversedChangeListener.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/ReversedChangeListener.java	(revision 16456)
+++ trunk/src/org/openstreetmap/josm/gui/history/ReversedChangeListener.java	(revision 16456)
@@ -0,0 +1,41 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.history;
+
+import javax.swing.JTable;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.TableColumnModel;
+
+/**
+ * Updates the column header text and indicates a normal/reversed diff sorting
+ */
+final class ReversedChangeListener implements TableModelListener {
+    private final TableColumnModel columnModel;
+    private final JTable table;
+    private Boolean reversed;
+    private final String nonReversedText;
+    private final String reversedText;
+    private final String reversedTooltip;
+
+    ReversedChangeListener(JTable table, TableColumnModel columnModel, String reversedTooltip) {
+        this.columnModel = columnModel;
+        this.table = table;
+        Object columnName = columnModel.getColumn(0).getHeaderValue();
+        this.nonReversedText = columnName + (table.getFont().canDisplay('\u25bc') ? " \u25bc" : " (1-n)");
+        this.reversedText = columnName + (table.getFont().canDisplay('\u25b2') ? " \u25b2" : " (n-1)");
+        this.reversedTooltip = reversedTooltip;
+    }
+
+    @Override
+    public void tableChanged(TableModelEvent e) {
+        if (e.getSource() instanceof DiffTableModel) {
+            final DiffTableModel mod = (DiffTableModel) e.getSource();
+            if (reversed == null || reversed != mod.isReversed()) {
+                reversed = mod.isReversed();
+                columnModel.getColumn(0).setHeaderValue(reversed ? reversedText : nonReversedText);
+                table.getTableHeader().setToolTipText(reversed ? reversedTooltip : null);
+                table.getTableHeader().repaint();
+            }
+        }
+    }
+}
