Index: applications/editors/josm/plugins/smed/build.xml
===================================================================
--- applications/editors/josm/plugins/smed/build.xml	(revision 29418)
+++ applications/editors/josm/plugins/smed/build.xml	(revision 29423)
@@ -1,16 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-** This is a template build file for a JOSM  plugin.
-**
-** Maintaining versions
-** ====================
-** See README.template
-**
-** Usage
-** =====
-** Call "ant help" to get possible build targets.
-**
+***** Please do not update this file!!!! *****
+** It is an 'oddball' build, therefore the standard template will not work **
 -->
-<project name="SeaMapEditor" default="dist" basedir=".">
+<project name="SeaMapEditor" basedir=".">
     <!-- enter the SVN commit message -->
     <property name="commit.message" value="New release"/>
@@ -18,20 +10,210 @@
     <property name="plugin.main.version" value="4394"/>
     <!-- should not be necessary to change the following properties -->
-
-    <property name="plugin.author" value="Werner, Malcolm"/>
-    <property name="plugin.class" value="smed.Smed"/>
-    <property name="plugin.description" value="Create and edit seamaps for OpenSeaMap"/>
-    <property name="plugin.icon" value="images/Smed.png"/>
-    <property name="plugin.link" value="http://openseamap.org/"/>
-
-    <!-- ** include targets that all plugins have in common ** -->
-    <import file="../build-common.xml"/>
-
-    <target name="setup-dist">
-        <antcall target="setup-dist-default" />
+    <property name="josm" location="../../core/dist/josm-custom.jar"/>
+    <property name="plugin.build.dir" value="build/"/>
+    <property name="plugin.src.dir" value="src/"/>
+    <property name="smed.dist.dir" value="dist/"/>
+    <!-- this is the directory where the plugin jar is copied to -->
+    <property name="plugin.dist.dir" value="../../dist/"/>
+    <property name="smed_core.dist.dir" value="core/dist/"/>
+    <property name="ant.build.javac.target" value="1.5"/>
+    <property name="plugin.jar" value="${plugin.dist.dir}${ant.project.name}.jar"/>
+    <!--
+    **********************************************************
+    ** init - initializes the build
+    **********************************************************
+    -->
+    <target name="init">
+        <mkdir dir="${plugin.build.dir}"/>
+        <mkdir dir="${smed_core.dist.dir}"/>
+        <mkdir dir="${smed.dist.dir}"/>
+    </target>
+    <!--
+    **********************************************************
+    ** compile - complies the source tree
+    **********************************************************
+    -->
+    <target name="compile" depends="init">
+        <echo message="compiling sources for  ${plugin.jar} ... "/>
+        <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}">
+            <compilerarg value="-Xlint:deprecation"/>
+            <compilerarg value="-Xlint:unchecked"/>
+        </javac>
+    </target>
+    <!--
+    **********************************************************
+    ** dist - creates the plugin jar
+    **********************************************************
+    -->
+    <target name="dist" depends="compile, revision">
+        <echo message="creating ${ant.project.name}.jar ... "/>
+        <copy todir="${plugin.build.dir}/images">
+            <fileset dir="images"/>
+        </copy>
+        <copy todir="${plugin.build.dir}/data">
+            <fileset dir="data"/>
+        </copy>
         <copy todir="${plugin.build.dir}/smed/msg">
             <fileset dir="${plugin.src.dir}/smed/msg"/>
         </copy>
-    </target>
-
+        <copy todir="${plugin.build.dir}">
+            <fileset dir="${smed.dist.dir}"/>
+        </copy>
+        <copy todir="${plugin.build.dir}">
+            <fileset dir=".">
+                <include name="*.txt"/>
+            </fileset>
+        </copy>
+        <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
+            <!--
+        ************************************************
+        ** configure these properties. Most of them will be copied to the plugins
+        ** manifest file. Property values will also show up in the list available
+        ** plugins: http://josm.openstreetmap.de/wiki/Plugins.
+        **
+        ************************************************
+    -->
+            <manifest>
+                <attribute name="Author" value="Werner, Malcolm"/>
+                <attribute name="Plugin-Class" value="smed.Smed"/>
+                <attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
+                <attribute name="Plugin-Description" value="Create and edit seamaps for OpenSeaMap"/>
+                <attribute name="Plugin-Icon" value="images/Smed.png"/>
+                <attribute name="Plugin-Link" value="http://openseamap.org/"/>
+                <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
+                <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
+            </manifest>
+        </jar>
+        <!-- install interface -->
+        <copy file="${plugin.jar}" todir="${smed_core.dist.dir}"/>
+    </target>
+    <!--
+    **********************************************************
+    ** revision - extracts the current revision number for the
+    **    file build.number and stores it in the XML property
+    **    version.*
+    **********************************************************
+    -->
+    <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>
+    <!--
+    **********************************************************
+    ** clean - clean up the build environment
+    **********************************************************
+    -->
+    <target name="clean">
+        <delete dir="${plugin.build.dir}"/>
+        <delete dir="${smed_core.dist.dir}"/>
+        <delete dir="${smed.dist.dir}"/>
+        <delete file="${plugin.jar}"/>
+    </target>
+    <!--
+    **********************************************************
+    ** install - install the plugin in your local JOSM installation
+    **********************************************************
+    -->
+    <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>
+        <delete dir="${josm.plugins.dir}/splug"/>
+        <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/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 29418)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 29423)
@@ -21,25 +21,23 @@
 	public PanelMain panelMain = null;
 
-	public Node node = null;
+	public OsmPrimitive node = null;
 	private Collection<? extends OsmPrimitive> Selection = null;
 
 	public SelectionChangedListener SmpListener = new SelectionChangedListener() {
 		public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-			Node nextNode = null;
+			OsmPrimitive nextNode = null;
 			Selection = newSelection;
 
 			for (OsmPrimitive osm : Selection) {
-				if (osm instanceof Node) {
-					nextNode = (Node) osm;
-					if (Selection.size() == 1) {
-						if (nextNode.compareTo(node) != 0) {
-							node = nextNode;
-							panelMain.mark.parseMark(node);
-						}
-					} else {
-						node = null;
-						panelMain.mark.clrMark();
-						manager.showVisualMessage(Messages.getString("OneNode"));
+				nextNode = (OsmPrimitive) osm;
+				if (Selection.size() == 1) {
+					if (nextNode.compareTo(node) != 0) {
+						node = nextNode;
+						panelMain.mark.parseMark(node);
 					}
+				} else {
+					node = null;
+					panelMain.mark.clrMark();
+					manager.showVisualMessage(Messages.getString("OneNode"));
 				}
 			}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 29418)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 29423)
@@ -65,7 +65,7 @@
 CircleDay=Circular daymark
 
-SelectNode=Please select a node
-OneNode=Please select only one node
-NoMark=No seamark recognised at this node
+SelectNode=Please select a feature
+OneNode=Please select only one feature
+NoMark=No seamark recognised on this feature
 
 NoChar=No character
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties	(revision 29418)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties	(revision 29423)
@@ -65,7 +65,7 @@
 CircleDay=Kreis Tagzeichen
 
-SelectNode=Bitte einen Knoten auswählen
-OneNode=Bitte nur einen Knoten auswählen
-NoMark=Knoten nicht als Seezeichen identifiziert
+SelectNode=Bitte einen Kartenobjekt auswählen
+OneNode=Bitte nur einen Kartenobjekt auswählen
+NoMark=Kartenobjekt nicht als Seezeichen identifiziert
 
 NoChar=Keinen Charakter
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties	(revision 29418)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties	(revision 29423)
@@ -65,7 +65,7 @@
 CircleDay=Circular daymark
 
-SelectNode=Please select a node
-OneNode=Please select only one node
-NoMark=No seamark recognised at this node
+SelectNode=Please select a feature
+OneNode=Please select only one feature
+NoMark=No seamark recognised on this feature
 
 NoChar=No character
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 29418)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 29423)
@@ -9,5 +9,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.*;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 
@@ -1396,5 +1396,5 @@
 	}
 
-	public void parseMark(Node node) {
+	public void parseMark(OsmPrimitive node) {
 		dlg.manager.showVisualMessage("");
 		String str = Main.pref.get("smedplugin.IALA");
@@ -2536,5 +2536,5 @@
 	}
 
-	public void saveSign(Node node) {
+	public void saveSign(OsmPrimitive node) {
 		
 		if (getObject() != Obj.UNKOBJ) {
