Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 8253)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 8254)
@@ -206,5 +206,4 @@
         // -- launch changeset manager action
         launchChangesetManagerAction = new LaunchChangesetManagerAction();
-        cbInSelectionOnly.addItemListener(launchChangesetManagerAction);
 
         popupMenu = new ChangesetDialogPopup(lstInActiveDataLayer, lstInSelection);
@@ -462,5 +461,5 @@
      *
      */
-    class LaunchChangesetManagerAction extends AbstractAction implements ListSelectionListener, ItemListener {
+    class LaunchChangesetManagerAction extends AbstractAction {
         public LaunchChangesetManagerAction() {
             putValue(NAME, tr("Details"));
@@ -469,5 +468,18 @@
         }
 
-        protected void launchChangesetManager(Collection<Integer> toSelect) {
+        @Override
+        public void actionPerformed(ActionEvent arg0) {
+            ChangesetListModel model = getCurrentChangesetListModel();
+            Set<Integer> sel = model.getSelectedChangesetIds();
+            LaunchChangesetManager.displayChangesets(sel);
+        }
+    }
+
+    /**
+     * A utility class to fetch changesets and display the changeset dialog.
+     */
+    public static class LaunchChangesetManager {
+
+        protected static void launchChangesetManager(Collection<Integer> toSelect) {
             ChangesetCacheManager cm = ChangesetCacheManager.getInstance();
             if (cm.isVisible()) {
@@ -483,8 +495,9 @@
         }
 
-        @Override
-        public void actionPerformed(ActionEvent arg0) {
-            ChangesetListModel model = getCurrentChangesetListModel();
-            Set<Integer> sel = model.getSelectedChangesetIds();
+        /**
+         * Fetches changesets and display the changeset dialog.
+         * @param sel the changeset ids to fetch and display.
+         */
+        public static void displayChangesets(final Set<Integer> sel) {
             final Set<Integer> toDownload = new HashSet<>();
             if (!Main.isOffline(OnlineResource.OSM_API)) {
@@ -534,5 +547,5 @@
                         @Override
                         public void run() {
-                            launchChangesetManager(toDownload);
+                            launchChangesetManager(sel);
                         }
                     });
@@ -540,12 +553,4 @@
             };
             Main.worker.submit(r);
-        }
-
-        @Override
-        public void itemStateChanged(ItemEvent arg0) {
-        }
-
-        @Override
-        public void valueChanged(ListSelectionEvent e) {
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 8253)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 8254)
@@ -5,13 +5,19 @@
 
 import java.awt.BorderLayout;
+import java.awt.Dimension;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.GridLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.text.DateFormat;
+import java.util.Collections;
 import java.util.Observable;
 import java.util.Observer;
 
+import javax.swing.AbstractAction;
+import javax.swing.JButton;
 import javax.swing.JComponent;
 import javax.swing.JLabel;
@@ -25,4 +31,5 @@
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.gui.dialogs.ChangesetDialog;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
@@ -30,4 +37,5 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
@@ -44,4 +52,6 @@
     private UrlLabel lblUser;
     private UrlLabel lblChangeset;
+    private final OpenChangesetDialogAction changesetDialogAction = new OpenChangesetDialogAction();
+    private final JButton changesetButton = new JButton(changesetDialogAction);
     private JPanel pnlChangesetSource;
     private JPanel pnlChangesetImageryUsed;
@@ -87,5 +97,6 @@
         pnlUserAndChangeset.add(new JLabel(tr("User:")));
         pnlUserAndChangeset.add(lblUser);
-        pnlUserAndChangeset.add(new JLabel(tr("Changeset:")));
+        changesetButton.setMargin(new Insets(0, 0, 0, 0));
+        pnlUserAndChangeset.add(changesetButton);
         lblChangeset = new UrlLabel("", 2);
         pnlUserAndChangeset.add(lblChangeset);
@@ -191,4 +202,6 @@
             lblChangeset.setUrl(url);
             lblChangeset.setDescription(Long.toString(primitive.getChangesetId()));
+            changesetDialogAction.setId((int) primitive.getChangesetId());
+            changesetButton.setEnabled(true);
 
             String username = "";
@@ -223,4 +236,6 @@
             lblChangeset.setDescription(tr("none"));
             lblChangeset.setUrl(null);
+            changesetDialogAction.setId(null);
+            changesetButton.setEnabled(false);
         }
 
@@ -241,3 +256,21 @@
         container.setVisible(text != null || (oppCs != null && oppCs.get(attr) != null));
     }
+
+    static class OpenChangesetDialogAction extends AbstractAction {
+        private Integer id;
+
+        public OpenChangesetDialogAction() {
+            super(tr("Changeset"), new ImageProvider("dialogs/changeset", "changesetmanager").resetMaxSize(new Dimension(16, 16)).get());
+            putValue(SHORT_DESCRIPTION, tr("Opens the Changeset Manager window for the selected changesets"));
+        }
+
+        public void setId(Integer id) {
+            this.id = id;
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            ChangesetDialog.LaunchChangesetManager.displayChangesets(Collections.singleton(id));
+        }
+    }
 }
