Index: /applications/editors/josm/plugins/roadsigns/build.xml
===================================================================
--- /applications/editors/josm/plugins/roadsigns/build.xml	(revision 29231)
+++ /applications/editors/josm/plugins/roadsigns/build.xml	(revision 29232)
@@ -30,5 +30,5 @@
     <property name="commit.message" value="preset maintenance (Fahrradstraße)"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="4980"/>
+    <property name="plugin.main.version" value="5698"/>
 
     <!--
Index: /applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignInputDialog.java
===================================================================
--- /applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignInputDialog.java	(revision 29231)
+++ /applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignInputDialog.java	(revision 29232)
@@ -14,4 +14,12 @@
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.beans.XMLDecoder;
+import java.beans.XMLEncoder;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -60,4 +68,5 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.MultiSplitLayout;
+import org.openstreetmap.josm.gui.MultiSplitLayout.Node;
 import org.openstreetmap.josm.gui.MultiSplitPane;
 import org.openstreetmap.josm.plugins.roadsigns.RoadSignsPlugin.PresetMetaData;
@@ -67,4 +76,5 @@
 import org.openstreetmap.josm.tools.OpenBrowser;
 import org.openstreetmap.josm.tools.Pair;
+import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
@@ -93,7 +103,12 @@
     protected JEditorPane info;
     protected JScrollPane scrollInfo;
+    
+    private MultiSplitPane multiSplitPane;
 
     public RoadSignInputDialog() {
         super(Main.parent, tr("Road Sign Plugin"), new String[] {tr("OK"), tr("Cancel")}, false /* modal */);
+        setRememberWindowGeometry(getClass().getName() + ".geometry",
+            WindowGeometry.centerInWindow(Main.parent, new Dimension(750, 550)));
+
         this.signs = RoadSignsPlugin.signs;
         sel = new SignSelection();
@@ -129,4 +144,25 @@
     }
 
+    @Override
+    public void setVisible(boolean visible) {
+        if (!visible) {
+            if (multiSplitPane != null) {
+                Node model = multiSplitPane.getMultiSplitLayout().getModel();
+                File f = new File(RoadSignsPlugin.pluginDir(), "roadsigns-layout.xml");
+                try {
+                    XMLEncoder xmlenc = new XMLEncoder(
+                            new BufferedOutputStream(new FileOutputStream(f))
+                    );
+                    xmlenc.writeObject(model);
+                    xmlenc.close();
+                } catch (FileNotFoundException ex) {
+                    Main.warn("unable to write dialog layout: "+ex);
+                }
+            }
+        }
+        super.setVisible(visible);
+    }
+
+
     private Command createCommand(Collection<OsmPrimitive> selPrim) {
         List<Command> cmds = new LinkedList<Command>();
@@ -150,5 +186,4 @@
                 "(ROW weight=0.5 (LEAF name=middleleft weight=0.5) (LEAF name=middleright weight=0.5)) "+
                 "(LEAF name=bottom weight=0.2))";
-        MultiSplitLayout.Node modelRoot = MultiSplitLayout.parseModel(layoutDef);
 
         FlowLayout fLayout = new FlowLayout(FlowLayout.LEFT);
@@ -162,7 +197,17 @@
         fillSigns();
 
-        MultiSplitPane multiSplitPane = new MultiSplitPane();
-        multiSplitPane.setPreferredSize(new Dimension(700, 500));
-        multiSplitPane.getMultiSplitLayout().setModel(modelRoot);
+        multiSplitPane = new MultiSplitPane();
+        try {
+            File f = new File(RoadSignsPlugin.pluginDir(), "roadsigns-layout.xml");
+            XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(new FileInputStream(f)));
+            Node model = (Node) decoder.readObject();
+            decoder.close();
+            multiSplitPane.getMultiSplitLayout().setModel(model);
+            multiSplitPane.getMultiSplitLayout().setFloatingDividers(false);
+        }
+        catch (Exception ex) {
+            Node modelRoot = MultiSplitLayout.parseModel(layoutDef);
+            multiSplitPane.getMultiSplitLayout().setModel(modelRoot);
+        }
         multiSplitPane.add(new JScrollPane(pnlSignSelection), "upperleft");
         multiSplitPane.add(buildPreviewPanel(), "upperright");
Index: /applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsPlugin.java
===================================================================
--- /applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsPlugin.java	(revision 29231)
+++ /applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsPlugin.java	(revision 29232)
@@ -42,4 +42,6 @@
     public static List<String> iconDirs;
 
+    public static RoadSignsPlugin plugin;
+
     public final static PresetMetaData PRESET_DE = new PresetMetaData("DE", tr("Germany"), "resource://data/roadsignpresetDE.xml", "resource://images/DE/");
     public final static PresetMetaData PRESET_PL = new PresetMetaData("PL", tr("Poland"), "resource://data/roadsignpresetPL.xml", "resource://images/PL/");
@@ -49,5 +51,14 @@
     public RoadSignsPlugin(PluginInformation info) {
         super(info);
+        plugin = this;
         registerAction();
+    }
+
+    public static File pluginDir() {
+        File dir = new File(plugin.getPluginDir());
+        if (!dir.exists()) {
+            dir.mkdirs();
+        }
+        return dir;
     }
 
