Ignore:
Timestamp:
2013-02-06T17:32:26+01:00 (11 years ago)
Author:
bastik
Message:

make window size & layout persistent

Location:
applications/editors/josm/plugins/roadsigns
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/roadsigns/build.xml

    r27852 r29232  
    3030    <property name="commit.message" value="preset maintenance (Fahrradstraße)"/>
    3131    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
    32     <property name="plugin.main.version" value="4980"/>
     32    <property name="plugin.main.version" value="5698"/>
    3333
    3434    <!--
  • applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignInputDialog.java

    r29230 r29232  
    1414import java.awt.event.MouseAdapter;
    1515import java.awt.event.MouseEvent;
     16import java.beans.XMLDecoder;
     17import java.beans.XMLEncoder;
     18import java.io.BufferedInputStream;
     19import java.io.BufferedOutputStream;
     20import java.io.File;
     21import java.io.FileInputStream;
     22import java.io.FileNotFoundException;
     23import java.io.FileOutputStream;
    1624import java.io.IOException;
    1725import java.util.ArrayList;
     
    6068import org.openstreetmap.josm.gui.ExtendedDialog;
    6169import org.openstreetmap.josm.gui.MultiSplitLayout;
     70import org.openstreetmap.josm.gui.MultiSplitLayout.Node;
    6271import org.openstreetmap.josm.gui.MultiSplitPane;
    6372import org.openstreetmap.josm.plugins.roadsigns.RoadSignsPlugin.PresetMetaData;
     
    6776import org.openstreetmap.josm.tools.OpenBrowser;
    6877import org.openstreetmap.josm.tools.Pair;
     78import org.openstreetmap.josm.tools.WindowGeometry;
    6979
    7080/**
     
    93103    protected JEditorPane info;
    94104    protected JScrollPane scrollInfo;
     105   
     106    private MultiSplitPane multiSplitPane;
    95107
    96108    public RoadSignInputDialog() {
    97109        super(Main.parent, tr("Road Sign Plugin"), new String[] {tr("OK"), tr("Cancel")}, false /* modal */);
     110        setRememberWindowGeometry(getClass().getName() + ".geometry",
     111            WindowGeometry.centerInWindow(Main.parent, new Dimension(750, 550)));
     112
    98113        this.signs = RoadSignsPlugin.signs;
    99114        sel = new SignSelection();
     
    129144    }
    130145
     146    @Override
     147    public void setVisible(boolean visible) {
     148        if (!visible) {
     149            if (multiSplitPane != null) {
     150                Node model = multiSplitPane.getMultiSplitLayout().getModel();
     151                File f = new File(RoadSignsPlugin.pluginDir(), "roadsigns-layout.xml");
     152                try {
     153                    XMLEncoder xmlenc = new XMLEncoder(
     154                            new BufferedOutputStream(new FileOutputStream(f))
     155                    );
     156                    xmlenc.writeObject(model);
     157                    xmlenc.close();
     158                } catch (FileNotFoundException ex) {
     159                    Main.warn("unable to write dialog layout: "+ex);
     160                }
     161            }
     162        }
     163        super.setVisible(visible);
     164    }
     165
     166
    131167    private Command createCommand(Collection<OsmPrimitive> selPrim) {
    132168        List<Command> cmds = new LinkedList<Command>();
     
    150186                "(ROW weight=0.5 (LEAF name=middleleft weight=0.5) (LEAF name=middleright weight=0.5)) "+
    151187                "(LEAF name=bottom weight=0.2))";
    152         MultiSplitLayout.Node modelRoot = MultiSplitLayout.parseModel(layoutDef);
    153188
    154189        FlowLayout fLayout = new FlowLayout(FlowLayout.LEFT);
     
    162197        fillSigns();
    163198
    164         MultiSplitPane multiSplitPane = new MultiSplitPane();
    165         multiSplitPane.setPreferredSize(new Dimension(700, 500));
    166         multiSplitPane.getMultiSplitLayout().setModel(modelRoot);
     199        multiSplitPane = new MultiSplitPane();
     200        try {
     201            File f = new File(RoadSignsPlugin.pluginDir(), "roadsigns-layout.xml");
     202            XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(new FileInputStream(f)));
     203            Node model = (Node) decoder.readObject();
     204            decoder.close();
     205            multiSplitPane.getMultiSplitLayout().setModel(model);
     206            multiSplitPane.getMultiSplitLayout().setFloatingDividers(false);
     207        }
     208        catch (Exception ex) {
     209            Node modelRoot = MultiSplitLayout.parseModel(layoutDef);
     210            multiSplitPane.getMultiSplitLayout().setModel(modelRoot);
     211        }
    167212        multiSplitPane.add(new JScrollPane(pnlSignSelection), "upperleft");
    168213        multiSplitPane.add(buildPreviewPanel(), "upperright");
  • applications/editors/josm/plugins/roadsigns/src/org/openstreetmap/josm/plugins/roadsigns/RoadSignsPlugin.java

    r29230 r29232  
    4242    public static List<String> iconDirs;
    4343
     44    public static RoadSignsPlugin plugin;
     45
    4446    public final static PresetMetaData PRESET_DE = new PresetMetaData("DE", tr("Germany"), "resource://data/roadsignpresetDE.xml", "resource://images/DE/");
    4547    public final static PresetMetaData PRESET_PL = new PresetMetaData("PL", tr("Poland"), "resource://data/roadsignpresetPL.xml", "resource://images/PL/");
     
    4951    public RoadSignsPlugin(PluginInformation info) {
    5052        super(info);
     53        plugin = this;
    5154        registerAction();
     55    }
     56
     57    public static File pluginDir() {
     58        File dir = new File(plugin.getPluginDir());
     59        if (!dir.exists()) {
     60            dir.mkdirs();
     61        }
     62        return dir;
    5263    }
    5364
Note: See TracChangeset for help on using the changeset viewer.