Index: /trunk/src/org/openstreetmap/josm/actions/CopyAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 10409)
@@ -13,5 +13,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -26,5 +25,5 @@
 public final class CopyAction extends JosmAction {
 
-    // regular expression that matches text clipboard contents after copying
+    /** regular expression that matches text clipboard contents after copying */
     public static final String CLIPBOARD_REGEXP = "((node|way|relation)\\s\\d+,)*(node|way|relation)\\s\\d+";
 
@@ -57,5 +56,5 @@
      */
     public static void copy(OsmDataLayer source, Collection<OsmPrimitive> primitives) {
-        /* copy ids to the clipboard */
+        // copy ids to the clipboard
         String ids = getCopyString(primitives);
         Utils.copyToClipboard(ids);
@@ -75,10 +74,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java	(revision 10409)
@@ -25,5 +25,4 @@
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -290,10 +289,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 10409)
@@ -10,5 +10,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -38,10 +37,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/DistributeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DistributeAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/DistributeAction.java	(revision 10409)
@@ -20,5 +20,4 @@
 import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -301,10 +300,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java	(revision 10409)
@@ -11,5 +11,4 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadReferrersTask;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -62,10 +61,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java	(revision 10409)
@@ -11,5 +11,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy;
@@ -36,10 +35,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java	(revision 10409)
@@ -16,5 +16,4 @@
 import org.openstreetmap.josm.command.SelectCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -36,4 +35,7 @@
 public class FollowLineAction extends JosmAction {
 
+    /**
+     * Constructs a new {@code FollowLineAction}.
+     */
     public FollowLineAction() {
         super(
@@ -48,10 +50,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 10409)
@@ -1548,10 +1548,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 10409)
@@ -25,5 +25,4 @@
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.coor.EastNorth;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -209,10 +208,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/JosmAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/JosmAction.java	(revision 10409)
@@ -171,5 +171,5 @@
         }
     }
-    
+
     /**
      * Installs the listeners to this action.
@@ -351,4 +351,18 @@
 
     /**
+     * Updates enabled state according to primitives currently selected in edit data set, if any.
+     * Can be called in {@link #updateEnabledState()} implementations.
+     * @since 10409
+     */
+    protected final void updateEnabledStateOnCurrentSelection() {
+        DataSet ds = getLayerManager().getEditDataSet();
+        if (ds == null) {
+            setEnabled(false);
+        } else {
+            updateEnabledState(ds.getSelected());
+        }
+    }
+
+    /**
      * Adapter for layer change events. Runs updateEnabledState() whenever the active layer changed.
      */
Index: /trunk/src/org/openstreetmap/josm/actions/MirrorAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MirrorAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/MirrorAction.java	(revision 10409)
@@ -18,5 +18,4 @@
 import org.openstreetmap.josm.command.MoveCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -87,10 +86,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/MoveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/MoveAction.java	(revision 10409)
@@ -152,10 +152,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 10409)
@@ -276,10 +276,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 10409)
@@ -32,5 +32,4 @@
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -658,10 +657,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java	(revision 10409)
@@ -18,5 +18,4 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.RemoveNodesCommand;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -187,10 +186,5 @@
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 10409)
@@ -253,5 +253,5 @@
         }
 
-        protected OsmDataLayer addNewLayerIfRequired(String newLayerName, Bounds bounds) {
+        protected OsmDataLayer addNewLayerIfRequired(String newLayerName) {
             int numDataLayers = getNumDataLayers();
             if (newLayer || numDataLayers == 0 || (numDataLayers > 1 && getEditLayer() == null)) {
@@ -268,5 +268,5 @@
 
         protected void loadData(String newLayerName, Bounds bounds) {
-            OsmDataLayer layer = addNewLayerIfRequired(newLayerName, bounds);
+            OsmDataLayer layer = addNewLayerIfRequired(newLayerName);
             if (layer == null) {
                 layer = getEditLayer();
Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 10409)
@@ -690,13 +690,13 @@
         if (selectedWay != null) {
             int posn0 = selectedWay.getNodes().indexOf(currentNode);
+            // CHECKSTYLE.OFF: SingleSpaceSeparator
             if (posn0 != -1 && // n0 is part of way
-                  // CHECKSTYLE.OFF: SingleSpaceSeparator
-                  (posn0 >= 1                             && targetNode.equals(selectedWay.getNode(posn0-1))) || // previous node
-                  (posn0 < selectedWay.getNodesCount()-1) && targetNode.equals(selectedWay.getNode(posn0+1))) {  // next node
-                  // CHECKSTYLE.ON: SingleSpaceSeparator
+               (posn0 >= 1                             && targetNode.equals(selectedWay.getNode(posn0-1))) || // previous node
+               (posn0 < selectedWay.getNodesCount()-1) && targetNode.equals(selectedWay.getNode(posn0+1))) {  // next node
                 getLayerManager().getEditDataSet().setSelected(targetNode);
                 lastUsedNode = targetNode;
                 return true;
             }
+            // CHECKSTYLE.ON: SingleSpaceSeparator
         }
 
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/Highways.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/Highways.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/Highways.java	(revision 10409)
@@ -46,6 +46,6 @@
      * Classified highways in order of importance
      */
+    // CHECKSTYLE.OFF: SingleSpaceSeparator
     private static final List<String> CLASSIFIED_HIGHWAYS = Arrays.asList(
-            // CHECKSTYLE.OFF: SingleSpaceSeparator
             "motorway",  "motorway_link",
             "trunk",     "trunk_link",
@@ -56,5 +56,5 @@
             "residential",
             "living_street");
-            // CHECKSTYLE.ON: SingleSpaceSeparator
+    // CHECKSTYLE.ON: SingleSpaceSeparator
 
     private static final Set<String> KNOWN_SOURCE_MAXSPEED_CONTEXTS = new HashSet<>(Arrays.asList(
Index: /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10409)
@@ -141,5 +141,5 @@
     // The only events that may move/resize this map view are window movements or changes to the map view size.
     // We can clean this up more by only recalculating the state on repaint.
-    private final HierarchyListener hierarchyListener = new HierarchyListener() {
+    private final transient HierarchyListener hierarchyListener = new HierarchyListener() {
         @Override
         public void hierarchyChanged(HierarchyEvent e) {
@@ -151,5 +151,5 @@
     };
 
-    private final ComponentAdapter componentListener = new ComponentAdapter() {
+    private final transient ComponentAdapter componentListener = new ComponentAdapter() {
         @Override
         public void componentShown(ComponentEvent e) {
@@ -170,5 +170,5 @@
      * The current state (scale, center, ...) of this map view.
      */
-    private MapViewState state;
+    private transient MapViewState state;
 
     /**
Index: /trunk/src/org/openstreetmap/josm/gui/util/GuiSizesHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/GuiSizesHelper.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/gui/util/GuiSizesHelper.java	(revision 10409)
@@ -3,5 +3,5 @@
 
 import java.awt.Dimension;
-import java.awt.HeadlessException;
+import java.awt.GraphicsEnvironment;
 import java.awt.Toolkit;
 
@@ -20,9 +20,9 @@
     }
 
-
     /** cache value for screen resolution */
     private static float screenDPI = -1;
 
-    /** Request the screen resolution (cached)
+    /**
+     * Request the screen resolution (cached)
      * @return screen resolution in DPI
      */
@@ -35,7 +35,7 @@
                         screenDPI = 96f * scalePref;
                     } else {
-                        try {
+                        if (!GraphicsEnvironment.isHeadless()) {
                             screenDPI = Toolkit.getDefaultToolkit().getScreenResolution();
-                        } catch (HeadlessException e) {
+                        } else {
                             screenDPI = 96;
                         }
@@ -53,6 +53,5 @@
      */
     public static float getPixelDensity() {
-        float pixelPerInch = getScreenDPI();
-        return pixelPerInch / 96f;
+        return getScreenDPI() / 96f;
     }
 
@@ -72,6 +71,5 @@
     public static int getSizeDpiAdjusted(int size) {
         if (size <= 0) return size;
-        float pixelPerInch = getScreenDPI();
-        return Math.round(size * pixelPerInch / 96);
+        return Math.round(size * getScreenDPI() / 96);
     }
 
@@ -83,6 +81,5 @@
     public static float getSizeDpiAdjusted(float size) {
         if (size <= 0f) return size;
-        float pixelPerInch = getScreenDPI();
-        return size * pixelPerInch / 96;
+        return size * getScreenDPI() / 96;
     }
 
@@ -94,6 +91,5 @@
     public static double getSizeDpiAdjusted(double size) {
         if (size <= 0d) return size;
-        float pixelPerInch = getScreenDPI();
-        return size * pixelPerInch / 96;
+        return size * getScreenDPI() / 96;
     }
 
@@ -105,5 +101,6 @@
     public static Dimension getDimensionDpiAdjusted(Dimension dim) {
         float pixelPerInch = getScreenDPI();
-        int width = dim.width, height = dim.height;
+        int width = dim.width;
+        int height = dim.height;
         if (dim.width > 0) {
             width = Math.round(dim.width * pixelPerInch / 96);
Index: /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 10409)
@@ -707,4 +707,15 @@
 
     /**
+     * Load an image with a given file name.
+     *
+     * @param name The icon name (base name with or without '.png' or '.svg' extension)
+     * @return the requested image or null if the request failed
+     * @see #get(String, String)
+     */
+    public static ImageIcon get(String name) {
+        return new ImageProvider(name).get();
+    }
+
+    /**
      * Load an empty image with a given size.
      *
@@ -717,15 +728,4 @@
         return new ImageIcon(new BufferedImage(iconRealSize.width, iconRealSize.height,
             BufferedImage.TYPE_INT_ARGB));
-    }
-
-    /**
-     * Load an image with a given file name.
-     *
-     * @param name The icon name (base name with or without '.png' or '.svg' extension)
-     * @return the requested image or null if the request failed
-     * @see #get(String, String)
-     */
-    public static ImageIcon get(String name) {
-        return new ImageProvider(name).get();
     }
 
Index: /trunk/src/org/openstreetmap/josm/tools/ImageResource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ImageResource.java	(revision 10408)
+++ /trunk/src/org/openstreetmap/josm/tools/ImageResource.java	(revision 10409)
@@ -13,6 +13,7 @@
 import javax.swing.ImageIcon;
 
+import org.openstreetmap.josm.gui.util.GuiSizesHelper;
+
 import com.kitfox.svg.SVGDiagram;
-import org.openstreetmap.josm.gui.util.GuiSizesHelper;
 
 /**
@@ -50,9 +51,6 @@
     public ImageResource(Image img) {
         CheckParameterUtil.ensureParameterNotNull(img);
-        this.baseImage = img;
-
-        img = scaleBaseImageIfNeeded(img);
-
-        imgCache.put(DEFAULT_DIMENSION, img);
+        baseImage = img;
+        imgCache.put(DEFAULT_DIMENSION, scaleBaseImageIfNeeded(img));
     }
 
@@ -71,5 +69,5 @@
             BufferedImage bimg = new BufferedImage(realWidth, realHeight, BufferedImage.TYPE_INT_ARGB);
             bimg.getGraphics().drawImage(realImage, 0, 0, null);
-            img = bimg;
+            return bimg;
         }
         return img;
@@ -98,12 +96,4 @@
 
     /**
-     * Returns the image icon at default dimension.
-     * @return the image icon at default dimension
-     */
-    public ImageIcon getImageIcon() {
-        return getImageIcon(DEFAULT_DIMENSION);
-    }
-
-    /**
      * Set both icons of an Action
      * @param a The action for the icons
@@ -135,8 +125,15 @@
 
     /**
+     * Returns the image icon at default dimension.
+     * @return the image icon at default dimension
+     */
+    public ImageIcon getImageIcon() {
+        return getImageIcon(DEFAULT_DIMENSION);
+    }
+
+    /**
      * Get an ImageIcon object for the image of this resource
-     * @param   dim The requested dimensions. Use (-1,-1) for the original size
-     *          and (width, -1) to set the width, but otherwise scale the image
-     *          proportionally.
+     * @param  dim The requested dimensions. Use (-1,-1) for the original size and (width, -1)
+     *         to set the width, but otherwise scale the image proportionally.
      * @return ImageIcon object for the image of this resource, scaled according to dim
      */
Index: /trunk/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java	(revision 10408)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java	(revision 10409)
@@ -60,3 +60,14 @@
         assertNotNull(ImageProvider.get("wiki://OpenJDK_logo.svg"));
     }
+
+    /**
+     * Test fetching an image using {@code data:} URL.
+     */
+    @Test
+    public void testDataUrl() {
+        // Red dot image, taken from https://en.wikipedia.org/wiki/Data_URI_scheme#HTML
+        assertNotNull(ImageProvider.get("data:image/png;base64," +
+                "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4"+
+                "//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="));
+    }
 }
