Ignore:
Timestamp:
2012-08-26T02:47:21+02:00 (12 years ago)
Author:
donvip
Message:

[josm_mapdust] See #josm7980 - Fix memory leak + fix wrong "you should update" message when local plugin version is newer than dist version

Location:
applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/MapdustPlugin.java

    r27852 r28630  
    2727 */
    2828package org.openstreetmap.josm.plugins.mapdust;
    29 
    3029
    3130import static org.openstreetmap.josm.tools.I18n.tr;
     
    6463import org.openstreetmap.josm.tools.Shortcut;
    6564
    66 
    6765/**
    6866 * This is the main class of the MapDust plug-in. Defines the MapDust plug-in
     
    8482    private CreateBugDialog dialog;
    8583
    86     /** The JOSM user identity manager, it is used for obtaining the user name */
    87     private final JosmUserIdentityManager userIdentityManager;
    88 
    8984    /** The list of <code>MapdustBug</code> objects */
    9085    private List<MapdustBug> mapdustBugList;
     
    9287    /** The bounding box from where the MapDust bugs are down-loaded */
    9388    private BoundingBox bBox;
     89   
     90    /** The shortcut to access MapDust GUI */
     91    private Shortcut shortcut;
    9492
    9593    /**
     
    110108    public MapdustPlugin(PluginInformation info) {
    111109        super(info);
    112         this.userIdentityManager = JosmUserIdentityManager.getInstance();
    113110        this.filter = null;
    114111        this.bBox = null;
     
    123120     */
    124121    private void initializePlugin() {
    125         /* create MapDust GUI */
    126         Shortcut shortcut = Shortcut.registerShortcut("MapDust", tr("Toggle: {0}", tr("Open MapDust")),
     122        /* create MapDust Shortcut */
     123        this.shortcut = Shortcut.registerShortcut("MapDust", tr("Toggle: {0}", tr("Open MapDust")),
    127124                KeyEvent.VK_0, Shortcut.ALT_SHIFT);
    128         String name = "MapDust bug reports";
    129         String tooltip = "Activates the MapDust bug reporter plugin";
    130         mapdustGUI = new MapdustGUI(tr(name), "mapdust_icon.png", tr(tooltip),
    131                 shortcut, 150, this);
    132125        /* add default values for static variables */
    133126        Main.pref.put("mapdust.pluginState", MapdustPluginState.ONLINE.getValue());
     
    136129        Main.pref.put("mapdust.version", getPluginInformation().version);
    137130        Main.pref.put("mapdust.localVersion",getPluginInformation().localversion);
     131        Main.pref.addPreferenceChangeListener(this);
    138132    }
    139133
     
    148142    @Override
    149143    public void mapFrameInitialized(MapFrame oldMapFrame, MapFrame newMapFrame) {
    150         if (newMapFrame == null) {
     144        if (newMapFrame != null) {
     145            /* add MapDust dialog window */
     146            mapdustGUI = new MapdustGUI(tr("MapDust bug reports"), "mapdust_icon.png",
     147                        tr("Activates the MapDust bug reporter plugin"), shortcut, 150, this);
     148            /* add MapdustGUI */
     149            mapdustGUI.setBounds(newMapFrame.getBounds());
     150            mapdustGUI.addObserver(this);
     151            newMapFrame.addToggleDialog(mapdustGUI);
     152            /* add Listeners */
     153            NavigatableComponent.addZoomChangeListener(this);
     154            MapView.addLayerChangeListener(this);
     155            newMapFrame.mapView.addMouseListener(this);
     156            /* put username to preferences */
     157            Main.pref.put("mapdust.josmUserName", JosmUserIdentityManager.getInstance().getUserName());
     158        } else {
    151159            /* if new MapFrame is null, remove listener */
     160            oldMapFrame.mapView.removeMouseListener(this);
    152161            MapView.removeLayerChangeListener(this);
    153162            NavigatableComponent.removeZoomChangeListener(this);
    154         } else {
    155             /* add MapDust dialog window */
    156             if (Main.map != null && Main.map.mapView != null) {
    157                 /* add MapdustGUI */
    158                 mapdustGUI.setBounds(newMapFrame.getBounds());
    159                 mapdustGUI.addObserver(this);
    160                 newMapFrame.addToggleDialog(mapdustGUI);
    161                 /* add Listeners */
    162                 NavigatableComponent.addZoomChangeListener(this);
    163                 MapView.addLayerChangeListener(this);
    164                 Main.map.mapView.addMouseListener(this);
    165                 Main.pref.addPreferenceChangeListener(this);
    166                 /* put username to preferences */
    167                 Main.pref.put("mapdust.josmUserName",
    168                         userIdentityManager.getUserName());
    169             }
     163            mapdustGUI.removeObserver(this);
     164            mapdustGUI = null;
    170165        }
    171166    }
     
    183178    @Override
    184179    public void preferenceChanged(PreferenceChangeEvent event) {
    185         if (mapdustGUI.isShowing() && !wasError && mapdustLayer != null
     180        if (mapdustGUI != null && mapdustGUI.isShowing() && !wasError && mapdustLayer != null
    186181                && mapdustLayer.isVisible()) {
    187182            if (event.getKey().equals("osm-server.username")) {
    188                 String newUserName = userIdentityManager.getUserName();
     183                String newUserName = JosmUserIdentityManager.getInstance().getUserName();
    189184                String oldUserName = Main.pref.get("mapdust.josmUserName");
    190185                String nickname = Main.pref.get("mapdust.nickname");
     
    458453            NavigatableComponent.removeZoomChangeListener(this);
    459454            Main.map.mapView.removeLayer(layer);
    460             Main.map.remove(mapdustGUI);
    461455            if (mapdustGUI != null) {
     456                Main.map.remove(mapdustGUI);
    462457                mapdustGUI.destroy();
    463458            }
     
    476471    @Override
    477472    public void zoomChanged() {
    478         if (mapdustGUI.isShowing() && !wasError) {
     473        if (mapdustGUI != null && mapdustGUI.isShowing() && !wasError) {
    479474            boolean download = true;
    480475            BoundingBox curentBBox = getBBox();
     
    510505                this.filter = filter;
    511506            }
    512             if (mapdustGUI.isShowing() && !wasError) {
     507            if (mapdustGUI != null && mapdustGUI.isShowing() && !wasError) {
    513508                updatePluginData();
    514509            }
  • applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/component/panel/MapdustHelpPanel.java

    r25591 r28630  
    9898     */
    9999    private String buildText() {
    100         String version = Main.pref.get("mapdust.version");
    101         String localVersion = Main.pref.get("mapdust.localVersion");
     100        Integer version = Integer.decode(Main.pref.get("mapdust.version"));
     101        Integer localVersion = Integer.decode(Main.pref.get("mapdust.localVersion"));
    102102        String txt = "<html>";
    103103        txt += "<font style='font-size:10px' face='Times New Roman'>";
    104104        txt += "<b>You are using MapDust version ";
    105105        txt += "<i style='color:red;font-size:10px'>";
    106         if (version.equals(localVersion)) {
     106        if (version <= localVersion) {
    107107            txt += version + "</i>.</b><br>";
    108108        } else {
Note: See TracChangeset for help on using the changeset viewer.