Index: src/org/openstreetmap/josm/gui/preferences/PluginPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 1091)
+++ src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(working copy)
@@ -11,6 +11,7 @@
 import java.awt.event.ActionListener;
 import java.io.File;
 import java.io.FileReader;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -285,6 +286,25 @@
 			pluginMap.put(plugin, enabled);
 			pluginCheck.addActionListener(new ActionListener(){
 				public void actionPerformed(ActionEvent e) {
+					// if user enabled a plugin, it is not loaded but found somewhere on disk: offer to delete jar
+					if (pluginCheck.isSelected()) {
+						PluginInformation plinfo = PluginInformation.findPlugin(plugin.name);
+				
+						if ((PluginInformation.getLoaded(plugin.name) == null) && (plinfo != null)) {
+							try	{
+								int answer = JOptionPane.showConfirmDialog(Main.parent, tr("Plugin archive already available. Do you want to download current version by deleting existing archive?\n\n{0}",
+										plinfo.file.getCanonicalPath()), tr("Plugin already exists"), JOptionPane.OK_CANCEL_OPTION);
+								if (answer == JOptionPane.OK_OPTION) {
+									if (!plinfo.file.delete()) {
+										JOptionPane.showMessageDialog(Main.parent, tr("Error deleting plugin file: {0}", plinfo.file.getCanonicalPath()));
+									}
+								}
+							} catch (IOException e1) {
+								e1.printStackTrace();
+								JOptionPane.showMessageDialog(Main.parent, tr("Error deleting plugin file: {0}", e1.getMessage()));
+							}
+						}
+					}
 					pluginMap.put(plugin, pluginCheck.isSelected());
 				}
 			});
