Index: trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java	(revision 9704)
+++ trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java	(revision 9705)
@@ -154,5 +154,5 @@
                     first = false;
                 }
-                menuItem.setIcon(ImageProvider.getPadded(relation, new Rectangle(16, 16)));
+                menuItem.setIcon(ImageProvider.getPadded(relation, ImageProvider.ImageSizes.MENU.getImageDimension()));
                 add(menuItem);
             }
Index: trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java	(revision 9704)
+++ trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java	(revision 9705)
@@ -3,5 +3,4 @@
 
 import java.awt.Component;
-import java.awt.Rectangle;
 
 import javax.swing.DefaultListCellRenderer;
@@ -76,5 +75,5 @@
             ImageIcon icon = ImageProvider.getPadded(value,
                 // Height of component no yet known, assume the default 16px.
-                new Rectangle(16, 16));
+                    ImageProvider.ImageSizes.SMALLICON.getImageDimension());
             if (icon != null) {
                 ((JLabel) def).setIcon(icon);
Index: trunk/src/org/openstreetmap/josm/gui/SideButton.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 9704)
+++ trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 9705)
@@ -25,5 +25,5 @@
  */
 public class SideButton extends JButton implements Destroyable {
-    private static final int iconHeight = ImageProvider.getImageSizes(ImageProvider.ImageSizes.SIDEBUTTON).height;
+    private static final int iconHeight = ImageProvider.ImageSizes.SIDEBUTTON.getImageSize();
 
     private transient PropertyChangeListener propertyChangeListener;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java	(revision 9704)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableMemberCellRenderer.java	(revision 9705)
@@ -3,5 +3,5 @@
 
 import java.awt.Component;
-import java.awt.Rectangle;
+import java.awt.Dimension;
 
 import javax.swing.JTable;
@@ -23,5 +23,5 @@
     }
 
-    protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) {
+    protected void renderPrimitive(OsmPrimitive primitive, Dimension cellSize) {
         // Make icon the full height of the table cell. Icon background is square.
         setIcon(ImageProvider.getPadded(primitive, cellSize));
@@ -38,5 +38,5 @@
             return this;
 
-        Rectangle cellSize = table.getCellRect(row, column, false);
+        Dimension cellSize = table.getCellRect(row, column, false).getSize();
 
         OsmPrimitive primitive = (OsmPrimitive) value;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java	(revision 9704)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableCellRenderer.java	(revision 9705)
@@ -4,5 +4,5 @@
 import java.awt.Color;
 import java.awt.Component;
-import java.awt.Rectangle;
+import java.awt.Dimension;
 
 import javax.swing.JLabel;
@@ -60,5 +60,5 @@
     }
 
-    protected void renderPrimitive(OsmPrimitive primitive, Rectangle cellSize) {
+    protected void renderPrimitive(OsmPrimitive primitive, Dimension cellSize) {
         setIcon(ImageProvider.getPadded(primitive, cellSize));
         setText(primitive.getDisplayName(DefaultNameFormatter.getInstance()));
@@ -74,5 +74,5 @@
             return this;
 
-        Rectangle cellSize = table.getCellRect(row, column, false);
+        Dimension cellSize = table.getCellRect(row, column, false).getSize();
 
         renderBackground((OsmPrimitive) value);
Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 9704)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 9705)
@@ -12,5 +12,4 @@
 import java.awt.Image;
 import java.awt.Point;
-import java.awt.Rectangle;
 import java.awt.RenderingHints;
 import java.awt.Toolkit;
@@ -134,33 +133,60 @@
     public enum ImageSizes {
         /** SMALL_ICON value of on Action */
-        SMALLICON,
+        SMALLICON(Main.pref.getInteger("iconsize.smallicon", 16)),
         /** LARGE_ICON_KEY value of on Action */
-        LARGEICON,
+        LARGEICON(Main.pref.getInteger("iconsize.largeicon", 24)),
         /** map icon */
-        MAP,
+        MAP(Main.pref.getInteger("iconsize.map", 16)),
         /** map icon maximum size */
-        MAPMAX,
+        MAPMAX(Main.pref.getInteger("iconsize.mapmax", 48)),
         /** cursor icon size */
-        CURSOR,
+        CURSOR(Main.pref.getInteger("iconsize.cursor", 32)),
         /** cursor overlay icon size */
-        CURSOROVERLAY,
+        CURSOROVERLAY(CURSOR.imageSize),
         /** menu icon size */
-        MENU,
+        MENU(SMALLICON.imageSize),
         /** menu icon size in popup menus
          * @since 8323
          */
-        POPUPMENU,
+        POPUPMENU(LARGEICON.imageSize),
         /** Layer list icon size
          * @since 8323
          */
-        LAYER,
+        LAYER(Main.pref.getInteger("iconsize.layer", 16)),
         /** Toolbar button icon size
          * @since 9253
          */
-        TOOLBAR,
+        TOOLBAR(LARGEICON.imageSize),
         /** Side button maximum height
          * @since 9253
          */
-        SIDEBUTTON
+        SIDEBUTTON(Main.pref.getInteger("iconsize.sidebutton", 20)),
+        /**
+         * The default image size
+         * @since 9705
+         */
+        DEFAULT(Main.pref.getInteger("iconsize.default", 24));
+
+        private final int imageSize;
+
+        ImageSizes(int imageSize) {
+            this.imageSize = imageSize;
+        }
+
+        /**
+         * Returns the image size in pixels
+         * @return the image size in pixels
+         */
+        public int getImageSize() {
+            return imageSize;
+        }
+
+        /**
+         * Returns the image size as dimension
+         * @return the image size as dimension
+         */
+        public Dimension getImageDimension() {
+            return new Dimension(imageSize, imageSize);
+        }
     }
 
@@ -354,22 +380,9 @@
      * @return dimension of image in pixels
      * @since 7687
-     */
+     * @deprecated Use {@link ImageSizes#getImageDimension()} instead
+     */
+    @Deprecated
     public static Dimension getImageSizes(ImageSizes size) {
-        int sizeval;
-        switch(size) {
-        case MAPMAX: sizeval = Main.pref.getInteger("iconsize.mapmax", 48); break;
-        case MAP: sizeval = Main.pref.getInteger("iconsize.mapmax", 16); break;
-        case SIDEBUTTON: sizeval = Main.pref.getInteger("iconsize.sidebutton", 20); break;
-        case TOOLBAR: /* TOOLBAR is LARGELICON - only provided in case of future changes */
-        case POPUPMENU: /* POPUPMENU is LARGELICON - only provided in case of future changes */
-        case LARGEICON: sizeval = Main.pref.getInteger("iconsize.largeicon", 24); break;
-        case MENU: /* MENU is SMALLICON - only provided in case of future changes */
-        case SMALLICON: sizeval = Main.pref.getInteger("iconsize.smallicon", 16); break;
-        case CURSOROVERLAY: /* same as cursor - only provided in case of future changes */
-        case CURSOR: sizeval = Main.pref.getInteger("iconsize.cursor", 32); break;
-        case LAYER: sizeval = Main.pref.getInteger("iconsize.layer", 16); break;
-        default: sizeval = Main.pref.getInteger("iconsize.default", 24); break;
-        }
-        return new Dimension(sizeval, sizeval);
+        return (size == null ? ImageSizes.DEFAULT : size).getImageDimension();
     }
 
@@ -398,5 +411,5 @@
      */
     public ImageProvider setSize(ImageSizes size) {
-        return setSize(getImageSizes(size));
+        return setSize(size.getImageDimension());
     }
 
@@ -474,5 +487,5 @@
      */
     public ImageProvider setMaxSize(ImageSizes size) {
-        return setMaxSize(getImageSizes(size));
+        return setMaxSize(size.getImageDimension());
     }
 
@@ -1305,5 +1318,5 @@
      * @since 8903
      */
-    public static ImageIcon getPadded(OsmPrimitive primitive, Rectangle iconSize) {
+    public static ImageIcon getPadded(OsmPrimitive primitive, Dimension iconSize) {
         // Check if the current styles have special icon for tagged nodes.
         if (primitive instanceof org.openstreetmap.josm.data.osm.Node) {
@@ -1314,5 +1327,5 @@
                     MapImage icon = nodeStyle.mapImage;
                     if (icon != null) {
-                        int backgroundWidth = iconSize.height;
+                        int backgroundWidth = iconSize.width;
                         int backgroundHeight = iconSize.height;
                         int iconWidth = icon.getWidth();
@@ -1769,5 +1782,5 @@
 
     /**
-     * Determines if the given {@code BufferedImage} has a transparent color determiend by a previous call to {@link #read}.
+     * Determines if the given {@code BufferedImage} has a transparent color determined by a previous call to {@link #read}.
      * @param bi The {@code BufferedImage} to test
      * @return {@code true} if {@code bi} has a transparent color determined by a previous call to {@code read}.
Index: trunk/src/org/openstreetmap/josm/tools/ImageResource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageResource.java	(revision 9704)
+++ trunk/src/org/openstreetmap/josm/tools/ImageResource.java	(revision 9705)
@@ -88,7 +88,7 @@
      */
     public void getImageIcon(AbstractAction a) {
-        ImageIcon icon = getImageIconBounded(ImageProvider.getImageSizes(ImageProvider.ImageSizes.SMALLICON));
+        ImageIcon icon = getImageIconBounded(ImageProvider.ImageSizes.SMALLICON.getImageDimension());
         a.putValue(Action.SMALL_ICON, icon);
-        icon = getImageIconBounded(ImageProvider.getImageSizes(ImageProvider.ImageSizes.LARGEICON));
+        icon = getImageIconBounded(ImageProvider.ImageSizes.LARGEICON.getImageDimension());
         a.putValue(Action.LARGE_ICON_KEY, icon);
     }
