Index: trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 11880)
+++ trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 11881)
@@ -291,5 +291,10 @@
             }
         } else {
-            this.defaultLayer = (WMTSDefaultLayer) info.getDefaultLayers().iterator().next();
+            DefaultLayer defLayer = info.getDefaultLayers().iterator().next();
+            if (defLayer instanceof WMTSDefaultLayer) {
+                this.defaultLayer = (WMTSDefaultLayer) defLayer;
+            } else {
+                this.defaultLayer = null;
+            }
         }
         if (this.layers.isEmpty())
Index: trunk/src/org/openstreetmap/josm/gui/SplashScreen.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 11880)
+++ trunk/src/org/openstreetmap/josm/gui/SplashScreen.java	(revision 11881)
@@ -6,4 +6,5 @@
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.GridBagConstraints;
@@ -17,4 +18,5 @@
 
 import javax.swing.BorderFactory;
+import javax.swing.JComponent;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
@@ -57,7 +59,9 @@
 
         // Add a nice border to the main splash screen
-        JPanel contentPane = (JPanel) this.getContentPane();
+        Container contentPane = this.getContentPane();
         Border margin = new EtchedBorder(1, Color.white, Color.gray);
-        contentPane.setBorder(margin);
+        if (contentPane instanceof JComponent) {
+            ((JComponent) contentPane).setBorder(margin);
+        }
 
         // Add a margin from the border to the content
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 11880)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 11881)
@@ -9,6 +9,4 @@
 import java.awt.Font;
 import java.awt.GraphicsEnvironment;
-import java.awt.Point;
-import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.InputEvent;
@@ -33,5 +31,4 @@
 import javax.swing.JLabel;
 import javax.swing.JTable;
-import javax.swing.JViewport;
 import javax.swing.KeyStroke;
 import javax.swing.ListSelectionModel;
@@ -73,4 +70,5 @@
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
+import org.openstreetmap.josm.gui.widgets.ScrollableTable;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
@@ -1096,5 +1094,5 @@
      * This component displays a list of layers and provides the methods needed by {@link LayerListModel}.
      */
-    static class LayerList extends JTable {
+    static class LayerList extends ScrollableTable {
 
         LayerList(LayerListModel dataModel) {
@@ -1108,14 +1106,4 @@
         }
 
-        public void scrollToVisible(int row, int col) {
-            if (!(getParent() instanceof JViewport))
-                return;
-            JViewport viewport = (JViewport) getParent();
-            Rectangle rect = getCellRect(row, col, true);
-            Point pt = viewport.getViewPosition();
-            rect.setLocation(rect.x - pt.x, rect.y - pt.y);
-            viewport.scrollRectToVisible(rect);
-        }
-
         @Override
         public LayerListModel getModel() {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 11880)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 11881)
@@ -10,6 +10,4 @@
 import java.awt.GridBagLayout;
 import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -41,5 +39,4 @@
 import javax.swing.JTabbedPane;
 import javax.swing.JTable;
-import javax.swing.JViewport;
 import javax.swing.ListSelectionModel;
 import javax.swing.SingleSelectionModel;
@@ -54,5 +51,4 @@
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableModel;
 
 import org.openstreetmap.josm.Main;
@@ -77,4 +73,5 @@
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
+import org.openstreetmap.josm.gui.widgets.ScrollableTable;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageOverlay;
@@ -91,5 +88,5 @@
 public class MapPaintDialog extends ToggleDialog {
 
-    protected StylesTable tblStyles;
+    protected ScrollableTable tblStyles;
     protected StylesModel model;
     protected final DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
@@ -138,5 +135,5 @@
         cbWireframe.setBorder(new EmptyBorder(new Insets(1, 1, 1, 1)));
 
-        tblStyles = new StylesTable(model);
+        tblStyles = new ScrollableTable(model);
         tblStyles.setSelectionModel(selectionModel);
         tblStyles.addMouseListener(new PopupMenuHandler());
@@ -176,21 +173,4 @@
                 new SideButton(PREFERENCE_ACTION, false)
         ));
-    }
-
-    protected static class StylesTable extends JTable {
-
-        public StylesTable(TableModel dm) {
-            super(dm);
-        }
-
-        public void scrollToVisible(int row, int col) {
-            if (!(getParent() instanceof JViewport))
-                return;
-            JViewport viewport = (JViewport) getParent();
-            Rectangle rect = getCellRect(row, col, true);
-            Point pt = viewport.getViewPosition();
-            rect.setLocation(rect.x - pt.x, rect.y - pt.y);
-            viewport.scrollRectToVisible(rect);
-        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java	(revision 11880)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java	(revision 11881)
@@ -92,6 +92,10 @@
             int dropLocation;
             if (support.isDrop()) {
-                JTable.DropLocation dl = (JTable.DropLocation) support.getDropLocation();
-                dropLocation = dl.getRow();
+                DropLocation dl = support.getDropLocation();
+                if (dl instanceof JTable.DropLocation) {
+                    dropLocation = ((JTable.DropLocation) dl).getRow();
+                } else {
+                    dropLocation = 0;
+                }
             } else {
                 dropLocation = layers.getLayers().get(0).getDefaultLayerPosition().getPosition(layers.getManager());
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java	(revision 11880)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java	(revision 11881)
@@ -61,5 +61,10 @@
         final int insertRow;
         if (support.isDrop()) {
-            insertRow = ((JTable.DropLocation) support.getDropLocation()).getRow();
+            DropLocation dl = support.getDropLocation();
+            if (dl instanceof JTable.DropLocation) {
+                insertRow = ((JTable.DropLocation) dl).getRow();
+            } else {
+                insertRow = 0;
+            }
         } else {
             int selection = destination.getSelectedRow();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java	(revision 11880)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationDialogManager.java	(revision 11881)
@@ -3,4 +3,5 @@
 
 import java.awt.Point;
+import java.awt.Window;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
@@ -194,9 +195,12 @@
     @Override
     public void windowClosed(WindowEvent e) {
-        RelationEditor editor = (RelationEditor) e.getWindow();
-        for (Iterator<Entry<DialogContext, RelationEditor>> it = openDialogs.entrySet().iterator(); it.hasNext();) {
-            if (editor.equals(it.next().getValue())) {
-                it.remove();
-                break;
+        Window w = e.getWindow();
+        if (w instanceof RelationEditor) {
+            RelationEditor editor = (RelationEditor) w;
+            for (Iterator<Entry<DialogContext, RelationEditor>> it = openDialogs.entrySet().iterator(); it.hasNext();) {
+                if (editor.equals(it.next().getValue())) {
+                    it.remove();
+                    break;
+                }
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/widgets/ScrollableTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/ScrollableTable.java	(revision 11881)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/ScrollableTable.java	(revision 11881)
@@ -0,0 +1,46 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.widgets;
+
+import java.awt.Container;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import javax.swing.JTable;
+import javax.swing.JViewport;
+import javax.swing.table.TableModel;
+
+/**
+ * Table offering easier scroll to a given row/column.
+ * @since 11881
+ */
+public class ScrollableTable extends JTable {
+
+    /**
+     * Constructs a <code>ScrollableTable</code> that is initialized with
+     * <code>dm</code> as the data model, a default column model,
+     * and a default selection model.
+     *
+     * @param dm the data model for the table
+     * @see #createDefaultColumnModel
+     * @see #createDefaultSelectionModel
+     */
+    public ScrollableTable(TableModel dm) {
+        super(dm);
+    }
+
+    /**
+     * Scrolls this table to make sure the (row,col) is visible.
+     * @param row row index
+     * @param col column index
+     */
+    public void scrollToVisible(int row, int col) {
+        Container parent = getParent();
+        if (parent instanceof JViewport) {
+            JViewport viewport = (JViewport) parent;
+            Rectangle rect = getCellRect(row, col, true);
+            Point pt = viewport.getViewPosition();
+            rect.setLocation(rect.x - pt.x, rect.y - pt.y);
+            viewport.scrollRectToVisible(rect);
+        }
+    }
+}
