Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java	(revision 14027)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java	(revision 14028)
@@ -17,14 +17,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.LeftButtonToolbar;
-import org.openstreetmap.josm.gui.dialogs.relation.actions.ApplyAction;
-import org.openstreetmap.josm.gui.dialogs.relation.actions.CancelAction;
-import org.openstreetmap.josm.gui.dialogs.relation.actions.DeleteCurrentRelationAction;
-import org.openstreetmap.josm.gui.dialogs.relation.actions.DuplicateRelationAction;
-import org.openstreetmap.josm.gui.dialogs.relation.actions.OKAction;
-import org.openstreetmap.josm.gui.dialogs.relation.actions.RefreshAction;
-import org.openstreetmap.josm.gui.dialogs.relation.actions.SelectAction;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.tagging.TagEditorModel;
 import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
@@ -112,10 +103,4 @@
         IRelationEditor re = newRelationEditor(relation, layer);
 
-        MemberTableModel memberTableModel = new MemberTableModel(relation, layer, null);
-        MemberTable memberTable = new MemberTable(layer, relation, memberTableModel);
-
-        SelectionTableModel selectionTableModel = new SelectionTableModel(layer);
-        SelectionTable selectionTable = new SelectionTable(selectionTableModel, memberTableModel);
-
         AutoCompletingTextField tfRole = GenericRelationEditor.buildRoleTextField(re);
         assertNotNull(tfRole);
@@ -125,6 +110,5 @@
         JPanel top = GenericRelationEditor.buildTagEditorPanel(tagEditorPanel);
         assertNotNull(top);
-        TagEditorModel tagModel = tagEditorPanel.getModel();
-
+        assertNotNull(tagEditorPanel.getModel());
     }
 }
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/AbstractRelationEditorActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/AbstractRelationEditorActionTest.java	(revision 14027)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/AbstractRelationEditorActionTest.java	(revision 14028)
@@ -17,6 +17,9 @@
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
+import org.openstreetmap.josm.gui.dialogs.relation.SelectionTable;
 import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.tagging.TagEditorModel;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
@@ -35,15 +38,53 @@
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().platform();
-
-    protected SelectionTableModel selectionTableModel;
-
-    protected IRelationEditor editor;
-
-    protected MemberTable memberTable;
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform().main();
 
     protected OsmDataLayer layer;
 
-    protected MemberTableModel memberTableModel;
+    private SelectionTableModel selectionTableModel;
+    private SelectionTable selectionTable;
+    private IRelationEditor editor;
+    private MemberTable memberTable;
+    private MemberTableModel memberTableModel;
+    private AutoCompletingTextField tfRole;
+    private TagEditorModel tagModel;
+
+    protected final IRelationEditorActionAccess relationEditorAccess = new IRelationEditorActionAccess() {
+
+        @Override
+        public AutoCompletingTextField getTextFieldRole() {
+            return tfRole;
+        }
+
+        @Override
+        public TagEditorModel getTagModel() {
+            return tagModel;
+        }
+
+        @Override
+        public SelectionTableModel getSelectionTableModel() {
+            return selectionTableModel;
+        }
+
+        @Override
+        public SelectionTable getSelectionTable() {
+            return selectionTable;
+        }
+
+        @Override
+        public MemberTableModel getMemberTableModel() {
+            return memberTableModel;
+        }
+
+        @Override
+        public MemberTable getMemberTable() {
+            return memberTable;
+        }
+
+        @Override
+        public IRelationEditor getEditor() {
+            return editor;
+        }
+    };
 
     /**
@@ -67,7 +108,8 @@
         });
         selectionTableModel = new SelectionTableModel(layer);
-
+        selectionTable = new SelectionTable(selectionTableModel, memberTableModel);
         editor = GenericRelationEditorTest.newRelationEditor(orig, layer);
-
+        tfRole = new AutoCompletingTextField();
+        tagModel = new TagEditorModel();
         memberTable = new MemberTable(layer, editor.getRelation(), memberTableModel);
     }
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersActionTest.java	(revision 14027)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersActionTest.java	(revision 14028)
@@ -32,5 +32,5 @@
         copyString();
 
-        PasteMembersAction action = new PasteMembersAction(memberTable, layer, editor);
+        PasteMembersAction action = new PasteMembersAction(relationEditorAccess);
         ClipboardUtils.getClipboard().addFlavorListener(action);
 
@@ -67,9 +67,9 @@
     public void testActionWrongClipboard() {
         copyString();
-        PasteMembersAction action = new PasteMembersAction(memberTable, layer, editor);
+        PasteMembersAction action = new PasteMembersAction(relationEditorAccess);
         action.actionPerformed(null);
 
         Relation relation = new Relation(1);
-        memberTableModel.applyToRelation(relation);
+        relationEditorAccess.getMemberTableModel().applyToRelation(relation);
         assertEquals(0, relation.getMembersCount());
     }
@@ -83,9 +83,9 @@
         layer.data.addPrimitive(testNode);
         copyMember(testNode);
-        PasteMembersAction action = new PasteMembersAction(memberTable, layer, editor);
+        PasteMembersAction action = new PasteMembersAction(relationEditorAccess);
         action.actionPerformed(null);
 
         Relation relation = new Relation(1);
-        memberTableModel.applyToRelation(relation);
+        relationEditorAccess.getMemberTableModel().applyToRelation(relation);
         assertEquals(1, relation.getMembersCount());
         assertEquals("test", relation.getMember(0).getRole());
@@ -101,9 +101,9 @@
         layer.data.addPrimitive(testNode);
         copyNode(testNode);
-        PasteMembersAction action = new PasteMembersAction(memberTable, layer, editor);
+        PasteMembersAction action = new PasteMembersAction(relationEditorAccess);
         action.actionPerformed(null);
 
         Relation relation = new Relation(1);
-        memberTableModel.applyToRelation(relation);
+        relationEditorAccess.getMemberTableModel().applyToRelation(relation);
         assertEquals(1, relation.getMembersCount());
         assertEquals("", relation.getMember(0).getRole());
Index: trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java	(revision 14027)
+++ trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java	(revision 14028)
@@ -2,30 +2,10 @@
 package org.openstreetmap.josm.gui.dialogs.relation.actions;
 
-import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditorTest;
-import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
-import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
-import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
-import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.tagging.TagEditorModel;
-import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for relation editor actions.
  */
-public class RelationEditorActionsTest {
-    /**
-     * Plattform for tooltips.
-     */
-    @Rule
-    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().platform().main();
+public class RelationEditorActionsTest extends AbstractRelationEditorActionTest {
 
     /**
@@ -34,53 +14,40 @@
     @Test
     public void testAllActions() {
-        final DataSet ds = new DataSet();
-        final Relation orig = new Relation(1);
-        ds.addPrimitive(orig);
-        final OsmDataLayer layer = new OsmDataLayer(ds, "test", null);
-        MemberTableModel memberTableModel = new MemberTableModel(orig, layer, null);
-        SelectionTableModel selectionTableModel = new SelectionTableModel(layer);
+        new AddSelectedAfterSelection(relationEditorAccess).actionPerformed(null);
+        new AddSelectedBeforeSelection(relationEditorAccess).actionPerformed(null);
+        new AddSelectedAtStartAction(relationEditorAccess).actionPerformed(null);
+        new AddSelectedAtEndAction(relationEditorAccess).actionPerformed(null);
 
-        IRelationEditor editor = GenericRelationEditorTest.newRelationEditor(orig, layer);
+        new ApplyAction(relationEditorAccess).actionPerformed(null);
+        new RefreshAction(relationEditorAccess).actionPerformed(null);
+        new OKAction(relationEditorAccess).actionPerformed(null);
+        new CancelAction(relationEditorAccess).actionPerformed(null);
 
-        MemberTable memberTable = new MemberTable(layer, editor.getRelation(), memberTableModel);
-        TagEditorModel tagModel = new TagEditorModel();
-        AutoCompletingTextField tfRole = new AutoCompletingTextField();
+        new CopyMembersAction(relationEditorAccess).actionPerformed(null);
+        new PasteMembersAction(relationEditorAccess).actionPerformed(null);
 
-        new AddSelectedAfterSelection(memberTableModel, selectionTableModel, editor).actionPerformed(null);
-        new AddSelectedBeforeSelection(memberTableModel, selectionTableModel, editor).actionPerformed(null);
-        new AddSelectedAtStartAction(memberTableModel, selectionTableModel, editor).actionPerformed(null);
-        new AddSelectedAtEndAction(memberTableModel, selectionTableModel, editor).actionPerformed(null);
+        new SelectAction(relationEditorAccess).actionPerformed(null);
+        new DeleteCurrentRelationAction(relationEditorAccess).actionPerformed(null);
 
-        new ApplyAction(memberTable, memberTableModel, tagModel, layer, editor).actionPerformed(null);
-        new RefreshAction(memberTable, memberTableModel, tagModel, layer, editor).actionPerformed(null);
-        new OKAction(memberTable, memberTableModel, tagModel, layer, editor, tfRole).actionPerformed(null);
-        new CancelAction(memberTable, memberTableModel, tagModel, layer, editor, tfRole).actionPerformed(null);
+        new DownloadIncompleteMembersAction(relationEditorAccess, "downloadincomplete").actionPerformed(null);
+        new DownloadSelectedIncompleteMembersAction(relationEditorAccess).actionPerformed(null);
 
-        new CopyMembersAction(memberTableModel, layer, editor).actionPerformed(null);
-        new PasteMembersAction(memberTable, layer, editor).actionPerformed(null);
+        new DuplicateRelationAction(relationEditorAccess).actionPerformed(null);
+        new EditAction(relationEditorAccess).actionPerformed(null);
 
-        new SelectAction(layer, editor).actionPerformed(null);
-        new DeleteCurrentRelationAction(layer, editor).actionPerformed(null);
+        new MoveDownAction(relationEditorAccess, "movedown").actionPerformed(null);
+        new MoveUpAction(relationEditorAccess, "moveup").actionPerformed(null);
+        new RemoveAction(relationEditorAccess, "remove").actionPerformed(null);
 
-        new DownloadIncompleteMembersAction(memberTable, memberTableModel, "downloadincomplete", layer, editor).actionPerformed(null);
-        new DownloadSelectedIncompleteMembersAction(memberTable, memberTableModel, null, layer, editor).actionPerformed(null);
+        new RemoveSelectedAction(relationEditorAccess).actionPerformed(null);
+        new SelectedMembersForSelectionAction(relationEditorAccess).actionPerformed(null);
 
-        new DuplicateRelationAction(memberTableModel, tagModel, layer).actionPerformed(null);
-        new EditAction(memberTable, memberTableModel, layer).actionPerformed(null);
+        new SelectPrimitivesForSelectedMembersAction(relationEditorAccess).actionPerformed(null);
 
-        new MoveDownAction(memberTable, memberTableModel, "movedown").actionPerformed(null);
-        new MoveUpAction(memberTable, memberTableModel, "moveup").actionPerformed(null);
-        new RemoveAction(memberTable, memberTableModel, "remove").actionPerformed(null);
+        new SortAction(relationEditorAccess).actionPerformed(null);
+        new SortBelowAction(relationEditorAccess).actionPerformed(null);
+        new ReverseAction(relationEditorAccess).actionPerformed(null);
 
-        new RemoveSelectedAction(memberTableModel, selectionTableModel, layer).actionPerformed(null);
-        new SelectedMembersForSelectionAction(memberTableModel, selectionTableModel, layer).actionPerformed(null);
-
-        new SelectPrimitivesForSelectedMembersAction(memberTable, memberTableModel, layer).actionPerformed(null);
-
-        new SortAction(memberTable, memberTableModel).actionPerformed(null);
-        new SortBelowAction(memberTable, memberTableModel).actionPerformed(null);
-        new ReverseAction(memberTable, memberTableModel).actionPerformed(null);
-
-        new SetRoleAction(memberTable, memberTableModel, tfRole).actionPerformed(null);
+        new SetRoleAction(relationEditorAccess).actionPerformed(null);
     }
 }
