Index: /applications/editors/josm/plugins/relcontext/src/relcontext/ChosenRelationComponent.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/ChosenRelationComponent.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/ChosenRelationComponent.java	(revision 25682)
@@ -57,4 +57,5 @@
         if( tag != null )
             sb.append("; ").append(tag);
+        sb.append(" (").append(rel.getMembersCount()).append(')');
 
         return sb.toString();
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java	(revision 25682)
@@ -1,9 +1,9 @@
 package relcontext;
 
+import java.awt.Dimension;
+import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.data.osm.NameFormatter;
-import java.awt.Component;
 import javax.swing.event.ListSelectionEvent;
-import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableColumnModel;
 import javax.swing.table.DefaultTableModel;
@@ -37,4 +37,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionListItem;
@@ -60,5 +61,7 @@
                 tr("Opens advanced relation/multipolygon editor panel"),
                 Shortcut.registerShortcut("view:relcontext", tr("Toggle: {0}", tr("Open Relation Editor")),
-                KeyEvent.VK_R, Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150);
+                KeyEvent.VK_R, Shortcut.GROUP_LAYER, Shortcut.SHIFT_DEFAULT), 150, true);
+
+        // todo: shrink all panels to ~20 pixels
 
         JPanel rcPanel = new JPanel(new BorderLayout());
@@ -78,7 +81,19 @@
         // [^] roles [new role][V][Apply]
         final JPanel rolePanel = new JPanel(new GridBagLayout());
-        final JButton toggleRolePanelButtonTop = new JButton(new TogglePanelAction(rolePanel));
-        final JButton toggleRolePanelButtonIn = new JButton(new TogglePanelAction(rolePanel));
-        rolePanel.add(toggleRolePanelButtonIn, GBC.std());
+        final JButton toggleRolePanelButtonTop = new JButton(new TogglePanelAction(rolePanel) {
+            @Override
+            protected void init() {
+                putValue(Action.SMALL_ICON, ImageProvider.get("svpDown"));
+                putValue(Action.SHORT_DESCRIPTION, tr("Show role panel"));
+            }
+        });
+        final JButton toggleRolePanelButtonIn = new JButton(new TogglePanelAction(rolePanel) {
+            @Override
+            protected void init() {
+                putValue(Action.SMALL_ICON, ImageProvider.get("svpUp"));
+                putValue(Action.SHORT_DESCRIPTION, tr("Hide role panel"));
+            }
+        });
+        rolePanel.add(sizeButton(toggleRolePanelButtonIn, 16, 20), GBC.std());
         crRoleIndicator = new JLabel();
         rolePanel.add(crRoleIndicator, GBC.std().insets(5, 0, 5, 0));
@@ -86,27 +101,23 @@
         roleBox.setEditable(false);
         rolePanel.add(roleBox, GBC.std().fill(GBC.HORIZONTAL));
-        rolePanel.add(new JButton(new ApplyNewRoleAction()), GBC.std());
-        rolePanel.add(new JButton(new EnterNewRoleAction()), GBC.eol());
+        rolePanel.add(sizeButton(new JButton(new ApplyNewRoleAction()), 40, 20), GBC.std());
+        rolePanel.add(sizeButton(new JButton(new EnterNewRoleAction()), 40, 20), GBC.eol());
 //        rolePanel.setVisible(false); // todo: take from preferences
 
         // [±][X] relation U [AZ][Down][Edit]
-        JPanel topLine = new JPanel(new BorderLayout());
-        JPanel topLeftButtons = new JPanel(new FlowLayout(FlowLayout.LEFT));
-        topLeftButtons.add(new JButton(new AddRemoveMemberAction(chosenRelation)));
-        topLeftButtons.add(toggleRolePanelButtonTop);
-        topLeftButtons.add(new JButton(new ClearChosenRelationAction(chosenRelation)));
-        topLine.add(topLeftButtons, BorderLayout.WEST);
+        JPanel topLine = new JPanel(new GridBagLayout());
+        topLine.add(new JButton(new AddRemoveMemberAction(chosenRelation)), GBC.std());
+        topLine.add(sizeButton(toggleRolePanelButtonTop, 16, 24), GBC.std());
+        topLine.add(sizeButton(new JButton(new ClearChosenRelationAction(chosenRelation)), 32, 0), GBC.std());
         final ChosenRelationComponent chosenRelationComponent = new ChosenRelationComponent(chosenRelation);
         chosenRelationComponent.addMouseListener(new ChosenRelationMouseAdapter());
-        topLine.add(chosenRelationComponent, BorderLayout.CENTER);
-        JPanel topRightButtons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
+        topLine.add(chosenRelationComponent, GBC.std().fill().insets(5, 0, 5, 0));
         final Action sortAndFixAction = new SortAndFixAction(chosenRelation);
         final JButton sortAndFixButton = new JButton(sortAndFixAction);
-        topRightButtons.add(sortAndFixButton);
+        topLine.add(sortAndFixButton, GBC.std());
         final Action downloadChosenRelationAction = new DownloadChosenRelationAction(chosenRelation);
         final JButton downloadButton = new JButton(downloadChosenRelationAction);
-        topRightButtons.add(downloadButton);
-        topRightButtons.add(new JButton(new EditChosenRelationAction(chosenRelation)));
-        topLine.add(topRightButtons, BorderLayout.EAST);
+        topLine.add(downloadButton, GBC.std());
+        topLine.add(new JButton(new EditChosenRelationAction(chosenRelation)), GBC.eol());
 
         chosenRelationPanel.add(topLine, BorderLayout.CENTER);
@@ -148,29 +159,9 @@
         bottomLine.add(Box.createHorizontalGlue(), GBC.std().fill());
         bottomLine.add(new JButton(new FindRelationAction(chosenRelation)), GBC.eol());
-        rcPanel.add(bottomLine, BorderLayout.SOUTH);
+        rcPanel.add(sizeButton(bottomLine, 0, 24), BorderLayout.SOUTH);
 
         add(rcPanel, BorderLayout.CENTER);
 
         popupMenu = new ChosenRelationPopupMenu();
-    }
-
-    private void configureRelationList( final JList relationsList ) {
-        relationsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-        relationsList.setCellRenderer(new OsmPrimitivRenderer() {
-            @Override
-            protected String getComponentToolTipText( OsmPrimitive value ) {
-                return null;
-            }
-        });
-        relationsList.addMouseListener(new MouseAdapter() {
-            @Override
-            public void mouseClicked( MouseEvent e ) {
-                if( Main.main.getEditLayer() == null ) {
-                    return;
-                }
-                chosenRelation.set((Relation)relationsList.getSelectedValue());
-                relationsList.clearSelection();
-            }
-        });
     }
 
@@ -198,4 +189,10 @@
     }
 
+    private JComponent sizeButton( JComponent b, int width, int height ) {
+        Dimension pref = b.getPreferredSize();
+        b.setPreferredSize(new Dimension(width <= 0 ? pref.width : width, height <= 0 ? pref.height : height));
+        return b;
+    }
+
     @Override
     public void hideNotify() {
@@ -219,5 +216,5 @@
         if( chosenRelationPanel != null )
             chosenRelationPanel.setVisible(newRelation != null);
-        if( oldRelation != newRelation && Main.main.getCurrentDataSet() != null )
+        if( Main.main.getCurrentDataSet() != null )
             selectionChanged(Main.main.getCurrentDataSet().getSelected());
         updateRoleIndicator();
@@ -421,7 +418,12 @@
 
         public TogglePanelAction( JPanel panel ) {
-            super("R");
+            super();
             this.component = panel;
-        }
+            init();
+            if( getValue(Action.SMALL_ICON) == null )
+                putValue(Action.NAME, "R");
+        }
+
+        protected void init() {}
 
         public void actionPerformed( ActionEvent e ) {
@@ -451,5 +453,6 @@
     private class ApplyNewRoleAction extends AbstractAction {
         public ApplyNewRoleAction() {
-            super("OK");
+            super(null, ImageProvider.get("apply"));
+            putValue(Action.SHORT_DESCRIPTION, tr("Apply chosen role to selected relation members"));
         }
 
@@ -466,5 +469,8 @@
     private class EnterNewRoleAction extends AbstractAction {
         public EnterNewRoleAction() {
-            super("+");
+            super();
+            putValue(Action.NAME, "…");
+//            putValue(SMALL_ICON, ImageProvider.get("dialogs/mappaint", "pencil"));
+            putValue(SHORT_DESCRIPTION, tr("Enter new role for selected relation members"));
         }
 
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/AddRemoveMemberAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/AddRemoveMemberAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/AddRemoveMemberAction.java	(revision 25682)
@@ -5,5 +5,4 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
-import javax.swing.Action;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -11,4 +10,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.tools.ImageProvider;
 import relcontext.ChosenRelation;
 import relcontext.ChosenRelationListener;
@@ -26,5 +26,5 @@
 
     public AddRemoveMemberAction( ChosenRelation rel ) {
-        super("±", null, "Add/remove member from the chosen relation", null, false);
+        super(null, "relcontext/addremove", tr("Add/remove members from the chosen relation"), null, false);
         this.rel = rel;
         rel.addChosenRelationListener(this);
@@ -79,8 +79,8 @@
     protected void updateIcon() {
         // todo: change icon based on selection
-        String name = "";
+        int state = 0; // 0=unknown, 1=add, 2=remove, 3=both
         if( getCurrentDataSet() == null || getCurrentDataSet().getSelected() == null
-                || getCurrentDataSet().getSelected().size() == 0 || rel == null || rel.get() == null )
-            name = "?";
+                || getCurrentDataSet().getSelected().isEmpty() || rel == null || rel.get() == null )
+            state = 0;
         else {
             Collection<OsmPrimitive> toAdd = new ArrayList<OsmPrimitive>(getCurrentDataSet().getSelected());
@@ -88,16 +88,25 @@
             int selectedSize = toAdd.size();
             if( selectedSize == 0 )
-                name = "?";
+                state = 0;
             else {
                 toAdd.removeAll(rel.get().getMemberPrimitives());
                 if( toAdd.isEmpty() )
-                    name = "-";
+                    state = 2;
                 else if( toAdd.size() < selectedSize )
-                    name = "±";
+                    state = 3;
                 else
-                    name = "+";
+                    state = 1;
             }
         }
-        putValue(Action.NAME, name);
+//        String name = state == 0 ? "?" : state == 1 ? "+" : state == 2 ? "-" : "±";
+//        putValue(Action.NAME, name);
+        if( state == 0 ) {
+//            putValue(NAME, "?");
+            putValue(SMALL_ICON, ImageProvider.get("relcontext", "addremove"));
+        } else {
+            String iconName = state == 1 ? "add" : state == 2 ? "remove" : "addremove";
+            putValue(NAME, null);
+            putValue(SMALL_ICON, ImageProvider.get("relcontext", iconName));
+        }
     }
 }
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/ClearChosenRelationAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/ClearChosenRelationAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/ClearChosenRelationAction.java	(revision 25682)
@@ -3,5 +3,8 @@
 import java.awt.event.ActionEvent;
 import javax.swing.AbstractAction;
+import javax.swing.Action;
+import static org.openstreetmap.josm.tools.I18n.tr;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.tools.ImageProvider;
 import relcontext.ChosenRelation;
 import relcontext.ChosenRelationListener;
@@ -11,5 +14,8 @@
 
     public ClearChosenRelationAction( ChosenRelation rel ) {
-        super("X");
+        super();
+//        putValue(Action.NAME, "X");
+        putValue(Action.SMALL_ICON, ImageProvider.get("relcontext", "clear"));
+        putValue(Action.SHORT_DESCRIPTION, tr("Clear chosen relation"));
         this.rel = rel;
         rel.addChosenRelationListener(this);
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/CreateMultipolygonAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/CreateMultipolygonAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/CreateMultipolygonAction.java	(revision 25682)
@@ -29,5 +29,5 @@
 
     public CreateMultipolygonAction( ChosenRelation chRel ) {
-        super("Multi", null, "Create a multipolygon from selected objects", null, false);
+        super("Multi", "data/multipolygon", tr("Create a multipolygon from selected objects"), null, false);
         this.chRel = chRel;
         updateEnabledState();
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/CreateRelationAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/CreateRelationAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/CreateRelationAction.java	(revision 25682)
@@ -35,5 +35,5 @@
 
     public CreateRelationAction( ChosenRelation chRel ) {
-        super("+", null, "Create a relation from selected objects", null, false);
+        super(tr("New"), "data/relation", tr("Create a relation from selected objects"), null, false);
         this.chRel = chRel;
         updateEnabledState();
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/DownloadChosenRelationAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/DownloadChosenRelationAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/DownloadChosenRelationAction.java	(revision 25682)
@@ -1,4 +1,5 @@
 package relcontext.actions;
 
+import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.util.Collections;
@@ -12,4 +13,5 @@
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
+import org.openstreetmap.josm.tools.ImageProvider;
 import relcontext.ChosenRelation;
 import relcontext.ChosenRelationListener;
@@ -24,5 +26,8 @@
 
     public DownloadChosenRelationAction( ChosenRelation rel ) {
-        super("D");
+        super();
+//        putValue(NAME, "D");
+        putValue(SMALL_ICON, ImageProvider.get("relcontext", "download"));
+        putValue(SHORT_DESCRIPTION, tr("Download all incomplete members for chosen relation"));
         this.rel = rel;
         rel.addChosenRelationListener(this);
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/DownloadParentsAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/DownloadParentsAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/DownloadParentsAction.java	(revision 25682)
@@ -31,4 +31,5 @@
         super(tr("Download all referrers"));
         putValue(SMALL_ICON, ImageProvider.get("downloadreferrers"));
+        putValue(SHORT_DESCRIPTION, tr("Download referrers for the relation and its members"));
         this.rel = rel;
         rel.addChosenRelationListener(this);
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/EditChosenRelationAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/EditChosenRelationAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/EditChosenRelationAction.java	(revision 25682)
@@ -1,4 +1,5 @@
 package relcontext.actions;
 
+import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import javax.swing.AbstractAction;
@@ -6,4 +7,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
+import org.openstreetmap.josm.tools.ImageProvider;
 import relcontext.ChosenRelation;
 import relcontext.ChosenRelationListener;
@@ -18,5 +20,8 @@
 
     public EditChosenRelationAction( ChosenRelation rel ) {
-        super("E");
+        super();
+//        putValue(NAME, "E");
+        putValue(SMALL_ICON, ImageProvider.get("dialogs/mappaint", "pencil"));
+        putValue(SHORT_DESCRIPTION, tr("Open relation editor for chosen relation"));
         this.rel = rel;
         rel.addChosenRelationListener(this);
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/FindRelationAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/FindRelationAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/FindRelationAction.java	(revision 25682)
@@ -26,5 +26,5 @@
 
     public FindRelationAction( ChosenRelation chRel ) {
-        super("?", null, "Find a relation", null, false);
+        super("Find", "relcontext/find", "Find a relation", null, false);
         this.chRel = chRel;
     }
Index: /applications/editors/josm/plugins/relcontext/src/relcontext/actions/SortAndFixAction.java
===================================================================
--- /applications/editors/josm/plugins/relcontext/src/relcontext/actions/SortAndFixAction.java	(revision 25681)
+++ /applications/editors/josm/plugins/relcontext/src/relcontext/actions/SortAndFixAction.java	(revision 25682)
@@ -4,4 +4,5 @@
 import java.util.*;
 import javax.swing.AbstractAction;
+import javax.swing.Action;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import org.openstreetmap.josm.Main;
@@ -10,4 +11,5 @@
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.*;
+import org.openstreetmap.josm.tools.ImageProvider;
 import relcontext.ChosenRelation;
 import relcontext.ChosenRelationListener;
@@ -17,5 +19,8 @@
 
     public SortAndFixAction( ChosenRelation rel ) {
-        super("AZ");
+        super();
+//        putValue(Action.NAME, "AZ");
+        putValue(Action.SMALL_ICON, ImageProvider.get("data", "warning"));
+        putValue(Action.SHORT_DESCRIPTION, tr("Sort members and fix their roles"));
         this.rel = rel;
         rel.addChosenRelationListener(this);
