Index: trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 15212)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 15213)
@@ -88,4 +88,5 @@
 import org.openstreetmap.josm.gui.util.FileFilterAllFiles;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.ReorderableTableModel;
 import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
@@ -627,5 +628,5 @@
      * Table model of active sources.
      */
-    protected class ActiveSourcesModel extends AbstractTableModel {
+    protected class ActiveSourcesModel extends AbstractTableModel implements ReorderableTableModel<SourceEntry> {
         private transient List<SourceEntry> data;
         private final DefaultListSelectionModel selectionModel;
@@ -767,31 +768,17 @@
         }
 
-        public boolean canMove(int i) {
-            int[] sel = tblActiveSources.getSelectedRows();
-            if (sel.length == 0)
-                return false;
-            if (i < 0)
-                return sel[0] >= -i;
-                else if (i > 0)
-                    return sel[sel.length-1] <= getRowCount()-1 - i;
-                else
-                    return true;
-        }
-
-        public void move(int i) {
-            if (!canMove(i)) return;
-            int[] sel = tblActiveSources.getSelectedRows();
-            for (int row: sel) {
-                SourceEntry t1 = data.get(row);
-                SourceEntry t2 = data.get(row + i);
-                data.set(row, t2);
-                data.set(row + i, t1);
-            }
-            selectionModel.setValueIsAdjusting(true);
-            selectionModel.clearSelection();
-            for (int row: sel) {
-                selectionModel.addSelectionInterval(row + i, row + i);
-            }
-            selectionModel.setValueIsAdjusting(false);
+        @Override
+        public DefaultListSelectionModel getSelectionModel() {
+            return selectionModel;
+        }
+
+        @Override
+        public SourceEntry getValue(int index) {
+            return data.get(index);
+        }
+
+        @Override
+        public SourceEntry setValue(int index, SourceEntry value) {
+            return data.set(index, value);
         }
     }
@@ -1388,5 +1375,5 @@
             }
             final ImageSizes size = ImageSizes.TABLE;
-            setIcon(value.icon == null ? ImageProvider.getEmpty(size) : value.icon.getImageIcon(size.getImageDimension()));
+            setIcon(value.icon == null ? ImageProvider.getEmpty(size) : value.icon.getImageIconBounded(size.getImageDimension()));
             return this;
         }
