Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPlugin.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPlugin.java	(revision 12187)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPlugin.java	(revision 12321)
@@ -10,4 +10,5 @@
 import java.util.Map;
 import java.util.TreeSet;
+import java.util.TreeMap;
 import java.io.*;
 
@@ -40,4 +41,5 @@
 
 	static ArrayList<WMSInfo> wmsList = new ArrayList<WMSInfo>();
+	static TreeMap<String,String> wmsListDefault = new TreeMap<String,String>();
 
 	// remember state of menu item to restore on changed preferences
@@ -102,10 +104,11 @@
 				wmsList.add(new WMSInfo(name, url, prefid));
 		}
-		setDefault(tr("Landsat"), "http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&"+
+		setDefault(true, tr("Landsat"), "http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&"+
 		"layers=global_mosaic&styles=&srs=EPSG:4326&format=image/jpeg");
-		setDefault(tr("NPE Maps"), "http://nick.dev.openstreetmap.org/openpaths/freemap.php?layers=npe&");
-		setDefault(tr("YAHOO (GNOME)"), "yahoo://gnome-web-photo --mode=photo --format=png {0} /dev/stdout");
-		setDefault(tr("YAHOO (GNOME Fix)"), "yahoo://gnome-web-photo-fixed {0}");
-		setDefault(tr("YAHOO (WebKit)"), "yahoo://webkit-image {0}");
+		setDefault(true, tr("NPE Maps"), "http://nick.dev.openstreetmap.org/openpaths/freemap.php?layers=npe&");
+		setDefault(false, tr("YAHOO (GNOME)"), "yahoo://gnome-web-photo --mode=photo --format=png {0} /dev/stdout");
+		setDefault(false, tr("YAHOO (GNOME Fix)"), "yahoo://gnome-web-photo-fixed {0}");
+		setDefault(true, tr("YAHOO (WebKit)"), "yahoo://webkit-image {0}");
+		setDefault(false, tr("YAHOO (WebKit GTK)"), "yahoo://webkit-image-gtk {0}");
 
 		Collections.sort(wmsList);
@@ -140,8 +143,10 @@
 
 	/* add a default entry in case the URL does not yet exist */
-	private static void setDefault(String name, String url)
+	private static void setDefault(Boolean force, String name, String url)
 	{
 		String testurl = url.replaceAll("=", "_");
-		if(!Main.pref.getBoolean("wmsplugin.default."+testurl))
+		wmsListDefault.put(name, url);
+
+		if(force && !Main.pref.getBoolean("wmsplugin.default."+testurl))
 		{
 			Main.pref.put("wmsplugin.default."+testurl, true);
Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPreferenceEditor.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPreferenceEditor.java	(revision 12187)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPreferenceEditor.java	(revision 12321)
@@ -31,5 +31,5 @@
 	private DefaultTableModel model;
 	private HashMap<Integer, WMSInfo> oldValues = new HashMap<Integer, WMSInfo>();
-	
+
 	public void addGui(final PreferenceDialog gui) {
 		JPanel p = gui.createPreferenceTab("wms", tr("WMS Plugin Preferences"), tr("Modify list of WMS servers displayed in the WMS plugin menu"));
@@ -39,5 +39,5 @@
 		JScrollPane scroll = new JScrollPane(list);
 		p.add(scroll, GBC.eol().fill(GBC.BOTH));
-		scroll.setPreferredSize(new Dimension(400,200));
+		scroll.setPreferredSize(new Dimension(200,200));
 		
 		for (WMSInfo i : WMSPlugin.wmsList) {
@@ -45,5 +45,18 @@
 			model.addRow(new String[]{i.name, i.url});
 		}
-		
+
+		final DefaultTableModel modeldef = new DefaultTableModel(
+		new String[]{tr("Menu Name (Default)"), tr("WMS URL (Default)")}, 0);
+		final JTable listdef = new JTable(modeldef){
+			public boolean isCellEditable(int row,int column){return false;}
+		};;
+		JScrollPane scrolldef = new JScrollPane(listdef);
+		p.add(scrolldef, GBC.eol().insets(0,5,0,0).fill(GBC.BOTH));
+		scrolldef.setPreferredSize(new Dimension(200,200));
+
+		for (Map.Entry<String,String> i : WMSPlugin.wmsListDefault.entrySet()) {
+			modeldef.addRow(new String[]{i.getKey(), i.getValue()});
+		}
+
 		JButton add = new JButton(tr("Add"));
 		p.add(Box.createHorizontalGlue(), GBC.std().fill(GBC.HORIZONTAL));
@@ -76,4 +89,19 @@
 					while ((i = list.getSelectedRow()) != -1)
 						model.removeRow(i);
+				}
+			}
+		});
+		
+		JButton copy = new JButton(tr("Copy Default"));
+		p.add(copy, GBC.std().insets(0,5,0,0));
+		copy.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent e) {
+				Integer line = listdef.getSelectedRow();
+				if (line == -1)
+					JOptionPane.showMessageDialog(gui, tr("Please select the row to copy."));
+				else
+				{
+					model.addRow(new String[]{modeldef.getValueAt(line, 0).toString(),
+					modeldef.getValueAt(line, 1).toString()});
 				}
 			}
