Index: /applications/editors/josm/plugins/multipoly-convert/.classpath
===================================================================
--- /applications/editors/josm/plugins/multipoly-convert/.classpath	(revision 26543)
+++ /applications/editors/josm/plugins/multipoly-convert/.classpath	(revision 26544)
@@ -3,6 +3,6 @@
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-6-openjdk"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/josm"/>
 	<classpathentry kind="lib" path="/usr/share/josm/josm.jar" sourcepath="/home2/brunner/workspace/josm-0.0.svn3094/src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
Index: /applications/editors/josm/plugins/multipoly-convert/build.xml
===================================================================
--- /applications/editors/josm/plugins/multipoly-convert/build.xml	(revision 26543)
+++ /applications/editors/josm/plugins/multipoly-convert/build.xml	(revision 26544)
@@ -30,41 +30,12 @@
 <project name="multipoly-convert" default="dist" basedir=".">
     <!-- enter the SVN commit message -->
-    <property name="commit.message" value="Changed the constructor signature of the plugin main class"/>
+    <property name="commit.message" value="preset maintenance (${ant.project.name})"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
     <property name="plugin.main.version" value="3835"/>
-    <!-- compilation properties -->
-    <property name="josm.build.dir" value="../../core"/>
-    <property name="josm.home.dir" value="${user.home}/.josm"/>
-    <property name="josm" location="../../core/dist/josm-custom.jar"/>
-    <property name="plugin.build.dir" value="build"/>
-    <property name="plugin.dist.dir" value="../../dist"/>
-    <property name="plugin.name" value="${ant.project.name}"/>
-    <property name="plugin.jar" value="${plugin.dist.dir}/${plugin.name}.jar"/>
-    <!-- There's no josm.jar in the svn, so point "josm" to a local copy of your JOSM binary -->
-    <property name="josm" location="../../core/dist/josm-custom.jar"/>
-    <property name="ant.build.javac.target" value="1.5"/>
-    <target name="init">
-        <mkdir dir="${plugin.build.dir}">
-        </mkdir>
-        <mkdir dir="${plugin.dist.dir}">
-        </mkdir>
-    </target>
-    <target name="compile" depends="init">
-        <echo message="creating ${plugin.jar}"/>
-        <javac srcdir="src" target="1.5" classpath="${josm}" destdir="build" debug="true">
-            <include name="**/*.java"/>
-        </javac>
-    </target>
-    <target name="revision">
-        <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="info"/>
-            <arg value="--xml"/>
-            <arg value="."/>
-        </exec>
-        <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
-        <delete file="REVISION"/>
-    </target>
+
+    <import file="../build-common.xml"/>
+
     <target name="dist" depends="compile,revision">
+        <echo message="creating ${ant.project.name}.jar ... "/>
         <copy todir="${plugin.build.dir}/images">
             <fileset dir="images"/>
@@ -73,126 +44,21 @@
             <fileset dir="data"/>
         </copy>
+        <copy todir="${plugin.build.dir}">
+            <fileset dir=".">
+                <include name="README"/>
+                <include name="LICENSE"/>
+            </fileset>
+        </copy>
         <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
             <manifest>
                 <attribute name="Author" value="Stéphane Brunner"/>
-                <attribute name="Plugin-Class" value="converttomultipoly.MultipolyPlugin"/>
-                <attribute name="Plugin-Description" value="Simply convert an area to a multipolygon."/>
-                <attribute name="Plugin-Icon" value="images/multipoly_convert.png"/>
+                <attribute name="Plugin-Class" value="mergeoverlap.MergeOverlapPlugin"/>
+                <attribute name="Plugin-Description" value="Merge overlapping part of ways."/>
+                <attribute name="Plugin-Icon" value="images/merge_overlap.png"/>
                 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
                 <attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
-                <attribute name="Plugin-Link" value="http://www.stephane-brunner.ch/mediawiki/index.php/Plugins"/>
                 <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
-                <!--attribute name="2830_Plugin-Url" value="20583;http://trac.openstreetmap.org/browser/applications/editors/josm/dist/multipoly-convert.jar?rev=20584&amp;format=raw" /-->
             </manifest>
         </jar>
     </target>
-    <target name="clean">
-        <delete dir="${plugin.build.dir}"/>
-        <delete file="${plugin.jar}"/>
-    </target>
-    <target name="clean_install">
-        <delete file="${plugins}/multipoly-convert.jar"/>
-    </target>
-    <target name="install" depends="dist">
-        <property environment="env"/>
-        <condition property="josm.plugins.dir" value="${env.APPDATA}/JOSM/plugins" else="${user.home}/.josm/plugins">
-            <and>
-                <os family="windows"/>
-            </and>
-        </condition>
-        <copy file="${plugin.jar}" todir="${josm.plugins.dir}"/>
-    </target>
-    <!--
-    ************************** Publishing the plugin *********************************** 
-    -->
-    <!--
-        ** extracts the JOSM release for the JOSM version in ../core and saves it in the 
-        ** property ${coreversion.info.entry.revision}
-        **
-        -->
-    <target name="core-info">
-        <exec append="false" output="core.info.xml" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="info"/>
-            <arg value="--xml"/>
-            <arg value="../../core"/>
-        </exec>
-        <xmlproperty file="core.info.xml" prefix="coreversion" keepRoot="true" collapseAttributes="true"/>
-        <echo>Building against core revision ${coreversion.info.entry.revision}.</echo>
-        <echo>Plugin-Mainversion is set to ${plugin.main.version}.</echo>
-        <delete file="core.info.xml"/>
-    </target>
-    <!--
-        ** commits the source tree for this plugin
-        -->
-    <target name="commit-current">
-        <echo>Commiting the plugin source with message '${commit.message}' ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="commit"/>
-            <arg value="-m '${commit.message}'"/>
-            <arg value="."/>
-        </exec>
-    </target>
-    <!--
-        ** updates (svn up) the source tree for this plugin
-        -->
-    <target name="update-current">
-        <echo>Updating plugin source ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="up"/>
-            <arg value="."/>
-        </exec>
-        <echo>Updating ${plugin.jar} ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="up"/>
-            <arg value="../dist/${plugin.jar}"/>
-        </exec>
-    </target>
-    <!--
-        ** commits the plugin.jar 
-        -->
-    <target name="commit-dist">
-        <echo>
-    ***** Properties of published ${plugin.jar} *****
-    Commit message    : '${commit.message}'                 
-    Plugin-Mainversion: ${plugin.main.version}
-    JOSM build version: ${coreversion.info.entry.revision}
-    Plugin-Version    : ${version.entry.commit.revision}
-    ***** / Properties of published ${plugin.jar} *****                 
-                        
-    Now commiting ${plugin.jar} ...
-    </echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="-m '${commit.message}'"/>
-            <arg value="commit"/>
-            <arg value="${plugin.jar}"/>
-        </exec>
-    </target>
-    <!-- ** make sure svn is present as a command line tool ** -->
-    <target name="ensure-svn-present">
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false" failonerror="false" resultproperty="svn.exit.code">
-            <env key="LANG" value="C"/>
-            <arg value="--version"/>
-        </exec>
-        <fail message="Fatal: command 'svn --version' failed. Please make sure svn is installed on your system.">
-            <!-- return code not set at all? Most likely svn isn't installed -->
-            <condition>
-                <not>
-                    <isset property="svn.exit.code"/>
-                </not>
-            </condition>
-        </fail>
-        <fail message="Fatal: command 'svn --version' failed. Please make sure a working copy of svn is installed on your system.">
-            <!-- error code from SVN? Most likely svn is not what we are looking on this system -->
-            <condition>
-                <isfailure code="${svn.exit.code}"/>
-            </condition>
-        </fail>
-    </target>
-    <target name="publish" depends="ensure-svn-present,core-info,commit-current,update-current,clean,dist,commit-dist">
-    </target>
 </project>
Index: /applications/editors/josm/plugins/multipoly-convert/src/converttomultipoly/MultipolyAction.java
===================================================================
--- /applications/editors/josm/plugins/multipoly-convert/src/converttomultipoly/MultipolyAction.java	(revision 26543)
+++ /applications/editors/josm/plugins/multipoly-convert/src/converttomultipoly/MultipolyAction.java	(revision 26544)
@@ -9,5 +9,4 @@
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedList;
 
@@ -17,4 +16,5 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.AddCommand;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
@@ -60,5 +60,5 @@
             for (RelationMember rm : r.getMembers()) {
                 OsmPrimitive m = rm.getMember();
-                if (m instanceof Way) {
+                if (m instanceof Way && rm.getRole().compareTo("inner") != 0) {
                     relationsInMulti.add(m);
                 }
@@ -68,5 +68,4 @@
         // List of selected ways
         ArrayList<Way> selectedWays = new ArrayList<Way>();
-
 
         // For every selected way
@@ -95,23 +94,23 @@
         // Add ways to it
         for (int i = 0; i < selectedWays.size(); i++) {
-                Way way = selectedWays.get(i);
+            Way way = selectedWays.get(i);
 
-                // Create new relation
-                    Relation rel = new Relation();
-                    rel.put("type", "multipolygon");
+            // Create new relation
+            Relation rel = new Relation();
+            rel.put("type", "multipolygon");
 
             RelationMember rm = new RelationMember("outer", way);
             rel.addMember(rm);
 
-            for (Iterator<String> keyi = way.getKeys().keySet().iterator() ; keyi.hasNext() ; ) {
-                    String key = keyi.next();
+            for (String key : way.getKeys().keySet()) {
+                if (!key.equals("area") || !way.get(key).equals("yes")) {
                     rel.put(key, way.get(key));
-                    System.out.println(key);
-                    if (key.compareTo("source") != 0) {
-                            way.remove(key);
-                    }
+                }
+                if (!key.equals("source")) {
+                    cmds.add(new ChangePropertyCommand(way, key, null));
+                }
             }
-                    // Add relation
-                    cmds.add(new AddCommand(rel));
+            // Add relation
+            cmds.add(new AddCommand(rel));
         }
         // Commit
@@ -132,7 +131,28 @@
     /** Enable this action only if something is selected */
     @Override
-    protected void updateEnabledState(
-            Collection<? extends OsmPrimitive> selection) {
-        setEnabled(selection != null && !selection.isEmpty());
+    protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
+        if (selection == null) {
+            setEnabled(false);
+            return;
+        }
+        for (OsmPrimitive primitive: selection) {
+            if (!(primitive instanceof Way)) {
+                setEnabled(false);
+                return;
+            }
+            if (!((Way)primitive).isClosed()) {
+                setEnabled(false);
+                return;
+            }
+            for (Relation r: OsmPrimitive.getFilteredList(primitive.getReferrers(), Relation.class)) {
+                for (RelationMember rm: r.getMembers()) {
+                    if (rm.getMember() == primitive && !"inner".equals(rm.getRole())) {
+                        setEnabled(false);
+                        return;
+                    }
+                }
+            }
+        }
+        setEnabled(selection.size() >= 1);
     }
 }
Index: /applications/editors/josm/plugins/multipoly-convert/src/converttomultipoly/MultipolyPlugin.java
===================================================================
--- /applications/editors/josm/plugins/multipoly-convert/src/converttomultipoly/MultipolyPlugin.java	(revision 26543)
+++ /applications/editors/josm/plugins/multipoly-convert/src/converttomultipoly/MultipolyPlugin.java	(revision 26544)
@@ -17,5 +17,4 @@
     protected String name;
 
-//        public MultipolyPlugin(PluginInformation info) {
         public MultipolyPlugin(PluginInformation info) {
         super(info);
