Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 16825)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 16826)
@@ -275,4 +275,5 @@
                 model.getSelectionModel()
         );
+        tblChangesets.setRowSorter(new ChangesetCacheTableRowSorter(model));
         tblChangesets.addMouseListener(new MouseEventHandler());
         InputMapUtils.addEnterAction(tblChangesets, new ShowDetailAction(model));
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheTableRowSorter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheTableRowSorter.java	(revision 16826)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheTableRowSorter.java	(revision 16826)
@@ -0,0 +1,45 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.changeset;
+
+import java.util.Comparator;
+
+import javax.swing.table.TableRowSorter;
+
+import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.tools.AlphanumComparator;
+
+/**
+ * The row sorter for the changeset table
+ * @since 16826
+ */
+class ChangesetCacheTableRowSorter extends TableRowSorter<ChangesetCacheManagerModel> {
+
+    ChangesetCacheTableRowSorter(ChangesetCacheManagerModel model) {
+        super(model);
+
+        // column 0 - Id
+        setComparator(0, Comparator.comparingInt(Changeset::getId));
+
+        // column 1 - Upload comment
+        setComparator(1, Comparator.comparing(Changeset::getComment, AlphanumComparator.getInstance()));
+
+        // column 2 - Open
+        setComparator(2, Comparator.comparing(Changeset::isOpen));
+
+        // column 3 - User
+        setComparator(3, Comparator.comparing(Changeset::getUser, Comparator.comparing(User::getName)));
+
+        // column 4 - Created at
+        setComparator(4, Comparator.comparing(Changeset::getCreatedAt));
+
+        // column 5 - Closed at
+        setComparator(5, Comparator.comparing(Changeset::getClosedAt));
+
+        // column 6 - Changes
+        setComparator(6, Comparator.comparingInt(Changeset::getChangesCount));
+
+        // column 7 - Discussions
+        setComparator(7, Comparator.comparingInt(Changeset::getCommentsCount));
+    }
+}
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 16825)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 16826)
@@ -121,5 +121,5 @@
                 model.getSelectionModel()
         );
-        tblContent.setAutoCreateRowSorter(true);
+        tblContent.setRowSorter(new ChangesetContentTableRowSorter(model));
         tblContent.addMouseListener(new PopupMenuLauncher(new ChangesetContentTablePopupMenu()));
         HistoryInfoAction historyAction = MainApplication.getMenu().historyinfo;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableRowSorter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableRowSorter.java	(revision 16826)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableRowSorter.java	(revision 16826)
@@ -0,0 +1,28 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.changeset;
+
+import java.util.Comparator;
+
+import javax.swing.table.TableRowSorter;
+
+import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
+import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
+import org.openstreetmap.josm.tools.AlphanumComparator;
+
+/**
+ * The row sorter for the changeset content
+ * @since 16826
+ */
+class ChangesetContentTableRowSorter extends TableRowSorter<ChangesetContentTableModel> {
+
+    ChangesetContentTableRowSorter(ChangesetContentTableModel model) {
+        super(model);
+
+        // column 1 - ID
+        setComparator(1, Comparator.comparing(HistoryOsmPrimitive::getType).thenComparingLong(HistoryOsmPrimitive::getId));
+
+        // column 2 - Name
+        setComparator(2, Comparator.<HistoryOsmPrimitive, String>comparing(p ->
+                p.getDisplayName(DefaultNameFormatter.getInstance()), AlphanumComparator.getInstance()));
+    }
+}
