Index: applications/editors/josm/plugins/smed/plugs/oseam/build.xml
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/build.xml	(revision 23389)
+++ applications/editors/josm/plugins/smed/plugs/oseam/build.xml	(revision 23389)
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+** This is a template build file for a JOSM  plugin.
+**
+** Maintaining versions
+** ====================
+** see README.template
+**
+** Usage
+** =====
+** To build it run
+**
+**    > ant  dist
+**
+** To install the generated plugin locally (in you default plugin directory) run
+**
+**    > ant  install
+**
+** The generated plugin jar is not automatically available in JOSMs plugin configuration
+** dialog. You have to check it in first.
+**
+** Use the ant target 'publish' to check in the plugin and make it available to other
+** JOSM users:
+**    set the properties commit.message and plugin.main.version
+** and run
+**    > ant  publish
+**
+**
+-->
+<project name="OSeaM" default="dist" basedir=".">
+
+	<!-- enter the SVN commit message -->
+	<property name="commit.message" value="New release" />
+	<!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+	<property name="plugin.main.version" value="3329" />
+
+	<!-- Declaring	time-stamps-->
+	<tstamp/>
+
+	<!--
+      ************************************************
+      ** should not be necessary to change the following properties
+     -->
+	<property name="josm"                   location="../../../../core/dist/josm-custom.jar"/>
+	<property name="smed"					location="../../../../dist/smed.jar/"/>
+	<property name="plugin.build.dir"       value="build"/>
+	<property name="plugin.src.dir"         value="src"/>
+	<!-- this is the directory where the plugin jar is copied to -->
+	<property name="plugin.dist.dir"        value="../../dist"/>
+	<property name="ant.build.javac.target" value="1.5"/>
+	<property name="plugin.dist.dir"        value="../../dist"/>
+	<property name="plugin.jar"             value="${plugin.dist.dir}/00_${DSTAMP}_${TSTAMP}_${ant.project.name}.jar"/>
+
+	<!--
+    **********************************************************
+    ** init - initializes the build
+    **********************************************************
+    -->
+	<target name="init">
+		<mkdir dir="${plugin.build.dir}"/>
+	</target>
+
+	<!--
+    **********************************************************
+    ** compile - complies the source tree
+    **********************************************************
+    -->
+	<target name="compile" depends="init">
+		<echo message="compiling sources for  ${plugin.jar} ... "/>
+		<javac srcdir="src" classpath="${josm}:${smed}" 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="${plugin.src.dir}/images"/>
+        </copy>
+
+		<copy todir="${plugin.build.dir}/images">
+			<fileset dir="images"/>
+		</copy>
+		<copy todir="${plugin.build.dir}/oseam/msg">
+			<fileset dir="${plugin.src.dir}/oseam/msg"/>
+		</copy>
+		<copy todir="${plugin.build.dir}">
+			<fileset dir=".">
+                <include name="copyright.txt" />
+                <include name="LICENSE.txt" />
+			</fileset>
+		</copy>
+		
+		<delete>
+			<fileset dir="${plugin.dist.dir}">
+	    		<include name="*OSeaM.jar"/>
+			</fileset>
+		</delete>
+
+		
+		<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="toms.Toms"/>
+				<attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
+				<attribute name="Plugin-Description" value="Create and edit seamarks for OpenSeaMap"/>
+				<attribute name="Plugin-Icon" value="images/Smp.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}"/>
+				<attribute name="Class-Path" value="./tplug/ifc.jar"/>
+			</manifest>
+		</jar>
+	</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 file="${plugin.jar}"/>
+		<delete>
+			<fileset dir="${plugin.dist.dir}">
+	    		<include name="*OSeaM.jar"/>
+			</fileset>
+		</delete>
+	</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/splug" else="${user.home}/.josm/plugins/splug">
+			<and>
+				<os family="windows"/>
+			</and>
+		</condition>
+		
+		<delete>
+			<fileset dir="${josm.plugins.dir}">
+	    		<include name="*OSeaM.jar"/>
+			</fileset>
+		</delete>
+
+		<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/src/smed/menu/file/TabManager.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/menu/file/TabManager.java	(revision 23388)
+++ applications/editors/josm/plugins/smed/src/smed/menu/file/TabManager.java	(revision 23389)
@@ -67,9 +67,11 @@
 		splugDir = new SmedFile(pluginDirName + "/splug");
 		
-		for(SmedPluggable p : plugins){
-			if(splugDir.isVisible(p.getFileName()) && !splugDir.isDeleted(p.getFileName())) model.addElement (p.getName());
-			else if(splugDir.isDeleted(p.getFileName())) model.addElement("delete - " + p.getName());
-			else model.addElement("invisible - " + p.getName());
-		}
+		if(plugins != null) {
+			for(SmedPluggable p : plugins){
+				if(splugDir.isVisible(p.getFileName()) && !splugDir.isDeleted(p.getFileName())) model.addElement (p.getName());
+				else if(splugDir.isDeleted(p.getFileName())) model.addElement("delete - " + p.getName());
+				else model.addElement("invisible - " + p.getName());
+			}
+		} else model.addElement("no plugin loaded");
 		
 		modelSize = model.getSize();
@@ -334,28 +336,30 @@
 			Icon icon = null;
 			
-			for(SmedPluggable p : plugins) {
-				String str = model.get(i).toString();
-
-				if(str.length() > 9 && str.substring(0,9).equals("invisible")) { 
-					splugDir.setVisible(p.getFileName(),false);
-				} else splugDir.setVisible(p.getFileName(),true);
+			if(plugins != null) {
+				for(SmedPluggable p : plugins) {
+					String str = model.get(i).toString();
+
+					if(str.length() > 9 && str.substring(0,9).equals("invisible")) { 
+						splugDir.setVisible(p.getFileName(),false);
+					} else splugDir.setVisible(p.getFileName(),true);
 				
-				if(str.length() > 6 && str.substring(0,6).equals("delete")) {
-					splugDir.setDeleted(p.getFileName(),true);
-				} else splugDir.setDeleted(p.getFileName(),false);
+					if(str.length() > 6 && str.substring(0,6).equals("delete")) {
+						splugDir.setDeleted(p.getFileName(),true);
+					} else splugDir.setDeleted(p.getFileName(),false);
 				
-				i++;
-			}
+					i++;
+				}
 			
-			tabbedPane.removeAll();
+				tabbedPane.removeAll();
  
-			JComponent panel = null;
+				JComponent panel = null;
 			
-			for(SmedPluggable p : plugins) {
-				if(splugDir.isVisible(p.getFileName()) && !splugDir.isDeleted(p.getFileName())) {
-        			panel = p.getComponent();
+				for(SmedPluggable p : plugins) {
+					if(splugDir.isVisible(p.getFileName()) && !splugDir.isDeleted(p.getFileName())) {
+						panel = p.getComponent();
         			
-        			tabbedPane.addTab(p.getName(),icon, panel, p.getInfo());
-        		}
+						tabbedPane.addTab(p.getName(),icon, panel, p.getInfo());
+					}
+				}
 			}
 
@@ -390,7 +394,9 @@
 		int i = 0;
 		
-		for(SmedPluggable p : plugins) { 
-			if(selModel.isSelectedIndex(i)) model.set(i,s + p.getName());
-			i++;
+		if(plugins != null) {
+			for(SmedPluggable p : plugins) { 
+				if(selModel.isSelectedIndex(i)) model.set(i,s + p.getName());
+				i++;
+			}
 		}
 	}
Index: applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java	(revision 23388)
+++ applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java	(revision 23389)
@@ -4,4 +4,5 @@
 
 import java.awt.BorderLayout;
+import java.awt.Dimension;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -58,5 +59,6 @@
 
         //Display the window.
-        frame.pack();
+        frame.setSize(new Dimension(420, 460));
+        // frame.pack();
         frame.setVisible(true);
     }
