Index: /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(revision 4597)
+++ /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java	(revision 4598)
@@ -127,5 +127,4 @@
     public void populate(History history) {
         model.setHistory(history);
-        versionTable.updateSelection();
 
         tpViewers.removeAll();
Index: /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 4597)
+++ /trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java	(revision 4598)
@@ -410,16 +410,38 @@
         @Override
         public Object getValueAt(int row, int column) {
-            if(history == null)
+            switch (column) {
+            case 0:
+                return isReferencePointInTime(row);
+            case 1:
+                return isCurrentPointInTime(row);
+            case 2:
+                if(history == null)
+                    return null;
+                if (row < history.getNumVersions())
+                    return history.get(row);
+                if (row == history.getNumVersions())
+                    return latest;
                 return null;
-            if (row < history.getNumVersions())
-                return history.get(row);
-            if (row == history.getNumVersions())
-                return latest;
+            }
             return null;
         }
 
         @Override
+        public void setValueAt(Object aValue, int row, int column) {
+            if (!((Boolean) aValue)) return;
+            switch (column) {
+            case 0:
+                setReferencePointInTime(row);
+                break;
+            case 1:
+                setCurrentPointInTime(row);
+                break;
+            }
+            fireTableDataChanged();
+        }
+
+        @Override
         public boolean isCellEditable(int row, int column) {
-            return false;
+            return column < 2;
         }
 
@@ -459,4 +481,13 @@
         }
 
+        public boolean isCurrentPointInTime(int row) {
+            if (history == null) return false;
+            if (row == history.getNumVersions())
+                return latest == current;
+            if (row < 0 || row > history.getNumVersions()) return false;
+            HistoryOsmPrimitive p = history.get(row);
+            return p == current;
+        }
+
         public HistoryOsmPrimitive getPrimitive(int row) {
             return isLatest(row) ? latest : history.get(row);
@@ -476,5 +507,5 @@
         @Override
         public int getColumnCount() {
-            return 1;
+            return 3;
         }
     }
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 4597)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 4598)
@@ -4,5 +4,8 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Component;
 import java.awt.event.ActionEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
@@ -10,11 +13,16 @@
 import java.util.Observer;
 
+import javax.swing.DefaultCellEditor;
 import javax.swing.DefaultListSelectionModel;
+import javax.swing.JCheckBox;
 import javax.swing.JPopupMenu;
+import javax.swing.JRadioButton;
 import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
+import javax.swing.SwingConstants;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.event.TableModelEvent;
+import javax.swing.table.TableCellRenderer;
 
 import org.openstreetmap.josm.actions.AbstractInfoAction;
@@ -25,5 +33,4 @@
  * VersionTable shows a list of version in a {@see History} of an {@see OsmPrimitive}.
  *
- *
  */
 public class VersionTable extends JTable implements Observer{
@@ -31,7 +38,5 @@
 
     protected void build() {
-        setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-        addMouseListener(new MouseHandler());
-        getSelectionModel().addListSelectionListener(new SelectionHandler());
+        setRowSelectionAllowed(false);
         popupMenu = new VersionTablePopupMenu();
         addMouseListener(new PopupMenuTrigger());
@@ -44,39 +49,6 @@
     }
 
-    protected void handleSelectReferencePointInTime(int row) {
-        getVersionTableModel().setReferencePointInTime(row);
-    }
-
-    protected void handleSelectCurrentPointInTime(int row) {
-        getVersionTableModel().setCurrentPointInTime(row);
-    }
-
     protected HistoryBrowserModel.VersionTableModel getVersionTableModel() {
         return (HistoryBrowserModel.VersionTableModel) getModel();
-    }
-
-    class MouseHandler extends MouseAdapter {
-        protected void handleDoubleClick(MouseEvent e) {
-            int row = rowAtPoint(e.getPoint());
-            handleSelectReferencePointInTime(row);
-        }
-
-        @Override
-        public void mouseClicked(MouseEvent e) {
-            switch(e.getClickCount()) {
-            case 2: handleDoubleClick(e); break;
-            }
-        }
-    }
-
-    class SelectionHandler implements ListSelectionListener {
-        public void valueChanged(ListSelectionEvent e) {
-            DefaultListSelectionModel model = (DefaultListSelectionModel)e.getSource();
-            // For some reason we receive multiple "adjusting" events here even when the source is a simple "set selection" action
-            // The last and proper event will have getValueIsAdjusting() == false
-            if (model.getMinSelectionIndex() >= 0 && e.getValueIsAdjusting() == false) {
-                handleSelectCurrentPointInTime(model.getMinSelectionIndex());
-            }
-        }
     }
 
@@ -85,23 +57,7 @@
     }
 
-    /* (non-Javadoc)
-     * @see javax.swing.JTable#tableChanged(javax.swing.event.TableModelEvent)
-     */
-    @Override
-    public void tableChanged(TableModelEvent e) {
-        int selectedRow = getSelectedRow();
-        super.tableChanged(e);
-        // Restore list selection (fix #6899)
-        if (selectedRow > -1 && selectedRow < getRowCount()) {
-            getSelectionModel().setSelectionInterval(0, selectedRow);
-        }
-    }
-
     protected void showPopupMenu(MouseEvent evt) {
         HistoryBrowserModel.VersionTableModel model = getVersionTableModel();
-        int row = getSelectedRow();
-        if (row == -1) {
-            row = rowAtPoint(evt.getPoint());
-        }
+        int row = rowAtPoint(evt.getPoint());
         if (!model.isLatest(row)) {
             HistoryOsmPrimitive primitive = model.getPrimitive(row);
@@ -109,9 +65,4 @@
             popupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
         }
-    }
-
-    public void updateSelection() {
-        final int row = getVersionTableModel().getRowCount() - 1;
-        setRowSelectionInterval(row, row);
     }
 
@@ -180,3 +131,41 @@
         }
     }
+
+    public static class RadioButtonRenderer extends JRadioButton implements TableCellRenderer {
+
+        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int column) {
+            HistoryBrowserModel.VersionTableModel model = (HistoryBrowserModel.VersionTableModel)table.getModel();
+            setSelected(value != null && (Boolean)value);
+            setHorizontalAlignment(SwingConstants.CENTER);
+            return this;
+        }
+    }
+
+    public static class RadioButtonEditor extends DefaultCellEditor implements ItemListener {
+
+        private JRadioButton btn;
+
+        public RadioButtonEditor() {
+            super(new JCheckBox());
+            btn = new JRadioButton();
+            btn.setHorizontalAlignment(SwingConstants.CENTER);
+        }
+
+        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
+            if (value == null) return null;
+            boolean val = (Boolean) value;
+            btn.setSelected(val);
+            btn.addItemListener(this);
+            return btn;
+        }
+
+        public Object getCellEditorValue() {
+            btn.removeItemListener(this);
+            return btn.isSelected();
+        }
+
+        public void itemStateChanged(ItemEvent e) {
+            fireEditingStopped();
+        }
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionTableCellRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionTableCellRenderer.java	(revision 4597)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionTableCellRenderer.java	(revision 4598)
@@ -27,5 +27,4 @@
 public class VersionTableCellRenderer extends JLabel implements TableCellRenderer {
     public final static Color BGCOLOR_SELECTED = new Color(143,170,255);
-    public final static Color BGCOLOR_IS_REFERENCE_POINT = new Color(255,197,197);
 
     protected HashMap<OsmPrimitiveType, ImageIcon> icons = null;
@@ -120,18 +119,7 @@
     }
 
-    protected void renderBackground(JTable table, int row, boolean isSelected) {
-        Color bgColor = Color.WHITE;
-        if (isSelected) {
-            bgColor = BGCOLOR_SELECTED;
-        } else if (getModel(table).isReferencePointInTime(row)) {
-            bgColor = BGCOLOR_IS_REFERENCE_POINT;
-        }
-        setBackground(bgColor);
-    }
-
     public void renderVersionFromHistory(HistoryOsmPrimitive primitive, JTable table, int row, boolean isSelected) {
         renderIcon(primitive == null? null : primitive.getType());
         renderText(primitive);
-        renderBackground(table, row, isSelected);
     }
 
@@ -139,5 +127,4 @@
         renderIcon(primitive.getType());
         renderLatestText(getModel(table).getLatest());
-        renderBackground(table, row, isSelected);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionTableColumnModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionTableColumnModel.java	(revision 4597)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionTableColumnModel.java	(revision 4598)
@@ -15,7 +15,22 @@
         TableColumn col = null;
         TableCellRenderer renderer = new VersionTableCellRenderer();
+        VersionTable.RadioButtonRenderer bRenderer = new VersionTable.RadioButtonRenderer();
 
-        // column 0 - Version
+        // column 0 - Reverence
         col = new TableColumn(0);
+        col.setCellRenderer(bRenderer);
+        col.setCellEditor(new VersionTable.RadioButtonEditor());
+        col.setMaxWidth(1);
+        col.setResizable(false);
+        addColumn(col);
+        // column 1 - Current
+        col = new TableColumn(1);
+        col.setCellRenderer(bRenderer);
+        col.setCellEditor(new VersionTable.RadioButtonEditor());
+        col.setMaxWidth(1);
+        col.setResizable(false);
+        addColumn(col);
+        // column 2 - Rest
+        col = new TableColumn(2);
         col.setHeaderValue(tr("Version"));
         col.setCellRenderer(renderer);
