Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 10088)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 10089)
@@ -110,9 +110,9 @@
     private final ReferringRelationsBrowserModel referrerModel;
 
-    /** the member table */
+    /** the member table and its model */
     private MemberTable memberTable;
     private final MemberTableModel memberTableModel;
 
-    /** the model for the selection table */
+    /** the selection table and its model */
     private SelectionTable selectionTable;
     private final SelectionTableModel selectionTableModel;
@@ -120,6 +120,6 @@
     private AutoCompletingTextField tfRole;
 
-    /** the menu item in the windows menu. Required to properly
-     * hide on dialog close.
+    /**
+     * the menu item in the windows menu. Required to properly hide on dialog close.
      */
     private JMenuItem windowMenuItem;
@@ -503,6 +503,5 @@
         JPanel pnl = new JPanel(new BorderLayout());
         MemberRoleCellEditor ce = (MemberRoleCellEditor) memberTable.getColumnModel().getColumn(0).getCellEditor();
-        selectionTable = new SelectionTable(selectionTableModel, new SelectionTableColumnModel(memberTableModel));
-        selectionTable.setMemberTableModel(memberTableModel);
+        selectionTable = new SelectionTable(selectionTableModel, memberTableModel);
         selectionTable.setRowHeight(ce.getEditor().getPreferredSize().height);
         pnl.add(new JScrollPane(selectionTable), BorderLayout.CENTER);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 10088)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 10089)
@@ -87,4 +87,7 @@
     }
 
+    /**
+     * Registers listeners (selection change and dataset change).
+     */
     public void register() {
         DataSet.addSelectionListener(this);
@@ -92,4 +95,7 @@
     }
 
+    /**
+     * Unregisters listeners (selection change and dataset change).
+     */
     public void unregister() {
         DataSet.removeSelectionListener(this);
@@ -190,4 +196,8 @@
     }
 
+    /**
+     * Populates this model from the given relation.
+     * @param relation relation
+     */
     public void populate(Relation relation) {
         members.clear();
@@ -348,4 +358,8 @@
     }
 
+    /**
+     * Applies this member model to the given relation.
+     * @param relation relation
+     */
     public void applyToRelation(Relation relation) {
         relation.setMembers(members);
@@ -678,5 +692,5 @@
 
     /**
-     * Selects all mebers which refer to {@link OsmPrimitive}s in the collections
+     * Selects all members which refer to {@link OsmPrimitive}s in the collections
      * <code>primitmives</code>. Does nothing is primitives is null.
      *
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTable.java	(revision 10088)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTable.java	(revision 10089)
@@ -10,24 +10,28 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-
+/**
+ * Selection table of relation editor.
+ * @since 2563
+ */
 public class SelectionTable extends JTable {
 
     private final SelectionTableModel model;
-    private MemberTableModel memberTableModel;
+    private final MemberTableModel memberTableModel;
+
+    /**
+     * Constructs a new {@code SelectionTable}.
+     * @param model table model
+     * @param memberTableModel member table model
+     */
+    public SelectionTable(SelectionTableModel model, MemberTableModel memberTableModel) {
+        super(model, new SelectionTableColumnModel(memberTableModel));
+        this.model = model;
+        this.memberTableModel = memberTableModel;
+        build();
+    }
 
     protected void build() {
         setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         addMouseListener(new DoubleClickAdapter());
-    }
-
-    public SelectionTable(SelectionTableModel model, SelectionTableColumnModel columnModel) {
-        super(model, columnModel);
-        this.model = model;
-        build();
-    }
-
-    public void setMemberTableModel(MemberTableModel memberTableModel) {
-        this.memberTableModel = memberTableModel;
     }
 
@@ -38,6 +42,5 @@
                 return;
             int row = rowAtPoint(evt.getPoint());
-            OsmPrimitive primitive = model.getPrimitive(row);
-            memberTableModel.selectMembersReferringTo(Collections.singleton(primitive));
+            memberTableModel.selectMembersReferringTo(Collections.singleton(model.getPrimitive(row)));
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java	(revision 10088)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java	(revision 10089)
@@ -13,5 +13,5 @@
 /**
  * This is the {@link TableCellRenderer} used in {@link SelectionTable}.
- *
+ * @since 1806
  */
 public class SelectionTableCellRenderer extends MemberTableMemberCellRenderer {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableColumnModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableColumnModel.java	(revision 10088)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableColumnModel.java	(revision 10089)
@@ -6,15 +6,22 @@
 import javax.swing.table.DefaultTableColumnModel;
 import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
 
+/**
+ * This is the {@link TableColumnModel} used in {@link SelectionTable}.
+ * @since 1790
+ */
 public class SelectionTableColumnModel  extends DefaultTableColumnModel {
+
+    /**
+     * Constructs a new {@code SelectionTableColumnModel}.
+     * @param model member table model
+     */
     public SelectionTableColumnModel(MemberTableModel model) {
-        TableColumn col = null;
-        SelectionTableCellRenderer renderer = new SelectionTableCellRenderer(model);
-
         // column 0 - the member role
-        col = new TableColumn(0);
+        TableColumn col = new TableColumn(0);
         col.setHeaderValue(tr("Selection"));
         col.setMinWidth(200);
-        col.setCellRenderer(renderer);
+        col.setCellRenderer(new SelectionTableCellRenderer(model));
         addColumn(col);
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java	(revision 10088)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java	(revision 10089)
@@ -35,4 +35,7 @@
     }
 
+    /**
+     * Registers listeners (selection change and layer change).
+     */
     public void register() {
         DataSet.addSelectionListener(this);
@@ -40,4 +43,7 @@
     }
 
+    /**
+     * Unregisters listeners (selection change and layer change).
+     */
     public void unregister() {
         DataSet.removeSelectionListener(this);
@@ -116,5 +122,6 @@
      *
      * @param row the row
-     * @return  the primitive at row <code>row</code> in this model
+     * @return the primitive at row <code>row</code> in this model
+     * @throws ArrayIndexOutOfBoundsException if index is invalid
      */
     public OsmPrimitive getPrimitive(int row) {
