Index: trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 7932)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 7933)
@@ -42,5 +42,5 @@
  * VersionTable shows a list of version in a {@link org.openstreetmap.josm.data.osm.history.History}
  * of an {@link org.openstreetmap.josm.data.osm.OsmPrimitive}.
- *
+ * @since 1709
  */
 public class VersionTable extends JTable implements Observer{
@@ -93,4 +93,8 @@
     }
 
+    /**
+     * Constructs a new {@code VersionTable}.
+     * @param model model used by the history browser
+     */
     public VersionTable(HistoryBrowserModel model) {
         super(model.getVersionTableModel(), new VersionTableColumnModel());
@@ -117,5 +121,5 @@
 
     class MouseListener extends PopupMenuLauncher {
-        public MouseListener() {
+        private MouseListener() {
             super(popupMenu);
         }
@@ -126,7 +130,7 @@
                 int row = rowAtPoint(e.getPoint());
                 int col = columnAtPoint(e.getPoint());
-                if (row > 0 && (col == VersionTableColumnModel.COL_DATE || col == VersionTableColumnModel.COL_USER)) {
+                if (row >= 0 && (col == VersionTableColumnModel.COL_DATE || col == VersionTableColumnModel.COL_USER)) {
                     model.getVersionTableModel().setCurrentPointInTime(row);
-                    model.getVersionTableModel().setReferencePointInTime(row - 1);
+                    model.getVersionTableModel().setReferencePointInTime(Math.max(0, row - 1));
                 }
             }
@@ -231,5 +235,6 @@
 
         @Override
-        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int column) {
+        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
+                int row, int column) {
             setSelected(value != null && (Boolean)value);
             setHorizontalAlignment(SwingConstants.CENTER);
@@ -242,4 +247,7 @@
         private JRadioButton btn;
 
+        /**
+         * Constructs a new {@code RadioButtonEditor}.
+         */
         public RadioButtonEditor() {
             super(new JCheckBox());
@@ -270,9 +278,17 @@
 
     public static class AlignedRenderer extends JLabel implements TableCellRenderer {
+
+        /**
+         * Constructs a new {@code AlignedRenderer}.
+         * @param hAlignment Horizontal alignement. One of the following constants defined in SwingConstants:
+         *        LEFT, CENTER (the default for image-only labels), RIGHT, LEADING (the default for text-only labels) or TRAILING
+         */
         public AlignedRenderer(int hAlignment) {
             setHorizontalAlignment(hAlignment);
         }
-        @Override
-        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int column) {
+
+        @Override
+        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
+                int row, int column) {
             String v = value.toString();
             setText(v);
@@ -298,4 +314,3 @@
         tbl.getColumnModel().getColumn(col).setPreferredWidth(maxwidth + spacing);
     }
-
 }
