Index: /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/actions/FullscreenToggleAction.java	(revision 9576)
@@ -9,5 +9,4 @@
 import java.awt.GraphicsEnvironment;
 import java.awt.Rectangle;
-import java.awt.Toolkit;
 import java.awt.Window;
 import java.awt.event.ActionEvent;
@@ -21,4 +20,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -84,5 +84,5 @@
         if (selected) {
             prevBounds = frame.getBounds();
-            frame.setBounds(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
+            frame.setBounds(new Rectangle(GuiHelper.getScreenSize()));
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 9576)
@@ -9,5 +9,4 @@
 import java.awt.GridBagLayout;
 import java.awt.Insets;
-import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -438,5 +437,5 @@
      */
     protected Dimension findMaxDialogSize() {
-        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        Dimension screenSize = GuiHelper.getScreenSize();
         Dimension x = new Dimension(screenSize.width*2/3, screenSize.height*2/3);
         if (parent != null) {
@@ -626,5 +625,5 @@
         JMultilineLabel lbl = new JMultilineLabel(msg);
         // Make it not wider than 1/2 of the screen
-        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        Dimension screenSize = GuiHelper.getScreenSize();
         lbl.setMaxWidth(screenSize.width/2);
         // Disable default Enter key binding to allow dialog's one (then enables to hit default button from here)
Index: /trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 9576)
@@ -414,5 +414,5 @@
         private Popup popupCreatePopup(Component content, MouseState ms) {
             Point p = mv.getLocationOnScreen();
-            Dimension scrn = Toolkit.getDefaultToolkit().getScreenSize();
+            Dimension scrn = GuiHelper.getScreenSize();
 
             // Create a JScrollPane around the content, in case there's not enough space
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 9576)
@@ -14,5 +14,4 @@
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
-import java.awt.Toolkit;
 import java.awt.datatransfer.Clipboard;
 import java.awt.datatransfer.Transferable;
@@ -505,5 +504,5 @@
         private void selectACComboBoxSavingUnixBuffer(AutoCompletingComboBox cb) {
             // select combobox with saving unix system selection (middle mouse paste)
-            Clipboard sysSel = Toolkit.getDefaultToolkit().getSystemSelection();
+            Clipboard sysSel = GuiHelper.getSystemSelection();
             if (sysSel != null) {
                 Transferable old = Utils.getTransferableContent(sysSel);
Index: /trunk/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/download/SlippyMapChooser.java	(revision 9576)
@@ -5,5 +5,4 @@
 
 import java.awt.Dimension;
-import java.awt.Toolkit;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
@@ -15,4 +14,5 @@
 import org.openstreetmap.josm.gui.bbox.BBoxChooser;
 import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 
 /**
@@ -59,5 +59,5 @@
 
             // retrieve the size of the display
-            Dimension iScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
+            Dimension iScreenSize = GuiHelper.getScreenSize();
 
             if (iDownloadDialogDimension == null) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java	(revision 9576)
@@ -6,8 +6,8 @@
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.Font;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
-import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 import java.awt.Image;
@@ -84,4 +84,5 @@
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.WMSLayerImporter;
 import org.openstreetmap.josm.tools.GBC;
@@ -670,11 +671,7 @@
 
     protected int estimateTileCacheSize() {
-        // Default screen size in headless mode, for unit tests
-        int height = 800;
-        int width = 600;
-        if (!GraphicsEnvironment.isHeadless()) {
-            height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
-            width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
-        }
+        Dimension screenSize = GuiHelper.getScreenSize();
+        int height = screenSize.height;
+        int width = screenSize.width;
         int tileSize = 256; // default tile size
         if (tileSource != null) {
Index: /trunk/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java	(revision 9576)
@@ -7,5 +7,4 @@
 import java.awt.Font;
 import java.awt.GridBagLayout;
-import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -21,4 +20,5 @@
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
@@ -90,5 +90,5 @@
         if (Main.isDisplayingMapView() && showAgain.get() && !infoToAdd.isGeoreferenceValid()) {
             if (Main.map.getTopPanel(AlignImageryPanel.class) == null) {
-                double w = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
+                double w = GuiHelper.getScreenSize().getWidth();
                 AlignImageryPanel p = new AlignImageryPanel(w > 1300, showAgain, infoToAdd);
                 Main.map.addTopPanel(p);
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 9576)
@@ -7,5 +7,4 @@
 import java.awt.Component;
 import java.awt.Dimension;
-import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.util.LinkedList;
@@ -83,5 +82,5 @@
         JScrollPane scrollpane = GuiHelper.embedInVerticalScrollPane(panel);
         scrollpane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
-        int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
+        int screenHeight = GuiHelper.getScreenSize().height;
         if (screenHeight < 700) {
             // to fit on screen 800x600
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 9576)
@@ -4,9 +4,9 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
@@ -103,7 +103,9 @@
 
     protected AbstractTileSourceLayer askedLayer() {
-        Collection<AbstractTileSourceLayer> targetLayers = Main.map.mapView.getLayersOfType(AbstractTileSourceLayer.class);
+        List<AbstractTileSourceLayer> targetLayers = Main.map.mapView.getLayersOfType(AbstractTileSourceLayer.class);
         if (targetLayers.isEmpty()) {
-            warnNoImageryLayers();
+            if (!GraphicsEnvironment.isHeadless()) {
+                warnNoImageryLayers();
+            }
             return null;
         }
@@ -114,4 +116,8 @@
         pnl.add(new JLabel(tr("Please select the imagery layer.")), GBC.eol());
         pnl.add(layerList, GBC.eol());
+        if (GraphicsEnvironment.isHeadless()) {
+            // return first layer in headless mode, for unit tests
+            return targetLayers.get(0);
+        }
         ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Select imagery layer"), new String[]{tr("Download"), tr("Cancel")});
         ed.setButtonIcons(new String[]{"dialogs/down", "cancel"});
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java	(revision 9576)
@@ -11,5 +11,4 @@
 import java.awt.GridBagLayout;
 import java.awt.Insets;
-import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -32,4 +31,5 @@
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.ValidationListener;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -84,5 +84,5 @@
         // set the maximum width to the current screen. If the dialog is opened on a
         // smaller screen than before, this will reset the stored preference.
-        this.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
+        this.setMaximumSize(GuiHelper.getScreenSize());
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java	(revision 9576)
@@ -3,6 +3,4 @@
 
 import java.awt.Component;
-import java.awt.GraphicsEnvironment;
-import java.awt.Toolkit;
 import java.awt.datatransfer.Clipboard;
 import java.awt.datatransfer.Transferable;
@@ -26,4 +24,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.tools.Utils;
@@ -133,5 +132,5 @@
             final JTextComponent editorComponent = comboBox.getEditorComponent();
             // save unix system selection (middle mouse paste)
-            Clipboard sysSel = GraphicsEnvironment.isHeadless() ? null : Toolkit.getDefaultToolkit().getSystemSelection();
+            Clipboard sysSel = GuiHelper.getSystemSelection();
             if (sysSel != null) {
                 Transferable old = Utils.getTransferableContent(sysSel);
@@ -198,5 +197,5 @@
                         }
                         // save unix system selection (middle mouse paste)
-                        Clipboard sysSel = Toolkit.getDefaultToolkit().getSystemSelection();
+                        Clipboard sysSel = GuiHelper.getSystemSelection();
                         if (sysSel != null) {
                             Transferable old = Utils.getTransferableContent(sysSel);
Index: /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 9576)
@@ -11,4 +11,5 @@
 import java.awt.Dimension;
 import java.awt.Font;
+import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 import java.awt.Image;
@@ -16,4 +17,5 @@
 import java.awt.Toolkit;
 import java.awt.Window;
+import java.awt.datatransfer.Clipboard;
 import java.awt.event.ActionListener;
 import java.awt.event.HierarchyEvent;
@@ -383,3 +385,26 @@
         c.setForeground(ColorHelper.getForegroundColor(background));
     }
+
+    /**
+     * Gets the size of the screen. On systems with multiple displays, the primary display is used.
+     * This method returns always 800x600 in headless mode (useful for unit tests).
+     * @return the size of this toolkit's screen, in pixels, or 800x600
+     * @see Toolkit#getScreenSize
+     * @since 9576
+     */
+    public static Dimension getScreenSize() {
+        return GraphicsEnvironment.isHeadless() ? new Dimension(800, 600) : Toolkit.getDefaultToolkit().getScreenSize();
+    }
+
+    /**
+     * Gets the singleton instance of the system selection as a <code>Clipboard</code> object.
+     * This allows an application to read and modify the current, system-wide selection.
+     * @return the system selection as a <code>Clipboard</code>, or <code>null</code> if the native platform does not
+     *         support a system selection <code>Clipboard</code> or if GraphicsEnvironment.isHeadless() returns true
+     * @see Toolkit#getSystemSelection
+     * @since 9576
+     */
+    public static Clipboard getSystemSelection() {
+        return GraphicsEnvironment.isHeadless() ? null : Toolkit.getDefaultToolkit().getSystemSelection();
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/JosmComboBox.java	(revision 9576)
@@ -4,6 +4,4 @@
 import java.awt.Component;
 import java.awt.Dimension;
-import java.awt.GraphicsEnvironment;
-import java.awt.Toolkit;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
@@ -24,4 +22,6 @@
 import javax.swing.plaf.basic.ComboPopup;
 import javax.swing.text.JTextComponent;
+
+import org.openstreetmap.josm.gui.util.GuiHelper;
 
 /**
@@ -167,5 +167,5 @@
         if (prototype != null) {
             setPrototypeDisplayValue(prototype);
-            int screenHeight = GraphicsEnvironment.isHeadless() ? 600 : Toolkit.getDefaultToolkit().getScreenSize().height;
+            int screenHeight = GuiHelper.getScreenSize().height;
             // Compute maximum number of visible items based on the preferred size of the combo box.
             // This assumes that items have the same height as the combo box, which is not granted by the look and feel
Index: /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/tools/OsmUrlToBounds.java	(revision 9576)
@@ -4,6 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.HeadlessException;
-import java.awt.Toolkit;
+import java.awt.Dimension;
 import java.util.HashMap;
 import java.util.Map;
@@ -13,4 +12,5 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Ellipsoid;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 
 public final class OsmUrlToBounds {
@@ -191,17 +191,10 @@
     public static Bounds positionToBounds(final double lat, final double lon, final int zoom) {
         int tileSizeInPixels = 256;
-        int height;
-        int width;
-        try {
-            height = Toolkit.getDefaultToolkit().getScreenSize().height;
-            width = Toolkit.getDefaultToolkit().getScreenSize().width;
-            if (Main.isDisplayingMapView()) {
-                height = Main.map.mapView.getHeight();
-                width = Main.map.mapView.getWidth();
-            }
-        } catch (HeadlessException he) {
-            // in headless mode, when running tests
-            height = 480;
-            width = 640;
+        Dimension screenSize = GuiHelper.getScreenSize();
+        int height = screenSize.height;
+        int width = screenSize.width;
+        if (Main.isDisplayingMapView()) {
+            height = Main.map.mapView.getHeight();
+            width = Main.map.mapView.getWidth();
         }
         double scale = (1 << zoom) * tileSizeInPixels / (2 * Math.PI * Ellipsoid.WGS84.a);
Index: /trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java	(revision 9575)
+++ /trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java	(revision 9576)
@@ -12,5 +12,4 @@
 import java.awt.Point;
 import java.awt.Rectangle;
-import java.awt.Toolkit;
 import java.awt.Window;
 import java.util.regex.Matcher;
@@ -20,4 +19,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 
 /**
@@ -468,5 +468,5 @@
      */
     public static Rectangle getFullScreenInfo() {
-        return new Rectangle(new Point(0, 0), Toolkit.getDefaultToolkit().getScreenSize());
+        return new Rectangle(new Point(0, 0), GuiHelper.getScreenSize());
     }
 
