Ticket #18556: 18556.2.patch

File 18556.2.patch, 6.8 KB (added by taylor.smock, 4 years ago)

Fix issue with menu item not being removed

  • .settings/org.eclipse.jdt.core.prefs

     
    77org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
    88org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
    99org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
    10 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
     10org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
    1111org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
    12 org.eclipse.jdt.core.compiler.compliance=1.7
     12org.eclipse.jdt.core.compiler.compliance=1.8
    1313org.eclipse.jdt.core.compiler.debug.lineNumber=generate
    1414org.eclipse.jdt.core.compiler.debug.localVariable=generate
    1515org.eclipse.jdt.core.compiler.debug.sourceFile=generate
     
    112112org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
    113113org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
    114114org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
    115 org.eclipse.jdt.core.compiler.source=1.7
     115org.eclipse.jdt.core.compiler.source=1.8
  • build.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    2 <project name="continuosDownload" default="dist" basedir=".">
     2<project name="continuosDownload-test" default="dist" basedir=".">
    33
    44    <!-- enter the SVN commit message -->
    55    <property name="commit.message" value="Commit message"/>
     
    1414    <property name="plugin.description" value="Downloads new data when you pan/zoom"/>
    1515    <property name="plugin.icon" value="images/continuous-download.png"/>
    1616    <property name="plugin.link" value="https://github.com/JOSM/JOSM-continuos-download"/>
    17    
     17    <property name="plugin.canloadatruntime" value="true"/>
     18
    1819        <property name="josm" location="../../core/dist/josm-custom.jar"/>
    1920        <property name="plugin.dist.dir" value="../../dist"/>
    20        
     21
    2122    <target name="additional-manifest">
    2223        <manifest file="MANIFEST" mode="update">
    2324            <attribute name="7588_Plugin-Url" value="v1.1.01;https://github.com/Gnonthgol/JOSM-continuos-download/releases/download/v1.1.01/continuosDownload.jar" />
     
    3334
    3435    <!-- ** include targets that all plugins have in common ** -->
    3536    <import file="../build-common.xml"/>
    36  
     37
    3738</project>
  • src/org/openstreetmap/josm/plugins/continuosDownload/DownloadPlugin.java

     
    3030import org.openstreetmap.josm.plugins.Plugin;
    3131import org.openstreetmap.josm.plugins.PluginInformation;
    3232import org.openstreetmap.josm.spi.preferences.Config;
     33import org.openstreetmap.josm.tools.Destroyable;
    3334import org.openstreetmap.josm.tools.Logging;
    3435import org.openstreetmap.josm.tools.Shortcut;
    3536
    36 public class DownloadPlugin extends Plugin implements ZoomChangeListener {
     37public class DownloadPlugin extends Plugin implements ZoomChangeListener, Destroyable {
    3738
    3839    /**
    3940     * The worker that runs all our downloads, it have more threads than
     
    5253    private Bounds lastBbox;
    5354    private boolean active;
    5455
     56    private DownloadPreference preference;
     57    private JCheckBoxMenuItem menuItem;
     58
    5559    /**
    5660     * Constructs a new {@code DownloadPlugin}.
    5761     * @param info plugin info
     
    6468        NavigatableComponent.addZoomChangeListener(this);
    6569
    6670        ToggleAction toggle = new ToggleAction();
    67         JCheckBoxMenuItem menuItem = MainMenu.addWithCheckbox(MainApplication.getMenu().fileMenu, toggle,
     71        menuItem = MainMenu.addWithCheckbox(MainApplication.getMenu().fileMenu, toggle,
    6872                MainMenu.WINDOW_MENU_GROUP.ALWAYS);
    6973        menuItem.setState(active);
    7074        toggle.addButtonModel(menuItem.getModel());
     
    7276
    7377    @Override
    7478    public PreferenceSetting getPreferenceSetting() {
    75         return new DownloadPreference();
     79        if (preference == null)
     80            preference = new DownloadPreference();
     81        return preference;
    7682    }
    7783
    7884    @Override
     
    172178    public static List<String> getStrategies() {
    173179        return new ArrayList<>(strats.keySet());
    174180    }
     181
     182    @Override
     183    public void destroy() {
     184        NavigatableComponent.removeZoomChangeListener(this);
     185        worker.shutdown();
     186        MainApplication.getMenu().fileMenu.remove(menuItem);
     187        if (preference != null)
     188            preference.destroy();
     189    }
    175190}
  • src/org/openstreetmap/josm/plugins/continuosDownload/DownloadPreference.java

     
    55
    66import java.awt.GridBagConstraints;
    77import java.awt.GridBagLayout;
     8import java.util.HashMap;
     9import java.util.Map;
    810
    911import javax.swing.Box;
    1012import javax.swing.JCheckBox;
     
    1618import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    1719import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
    1820import org.openstreetmap.josm.spi.preferences.Config;
     21import org.openstreetmap.josm.tools.Destroyable;
    1922import org.openstreetmap.josm.tools.GBC;
    2023
    2124/**
    2225 * Plugin preferences.
    2326 */
    24 public class DownloadPreference extends DefaultTabPreferenceSetting {
     27public class DownloadPreference extends DefaultTabPreferenceSetting implements Destroyable {
    2528
    2629    private final JCheckBox activeDefault = new JCheckBox(tr("Activate continuous downloads at startup."));
    2730    private final JTextField maxThreads = new JTextField(4);
     
    3235    private final JComboBox<String> strategy = new JComboBox<>();
    3336    private final JCheckBox quietDownload = new JCheckBox(tr("Supress the default modal progress monitor when downloading."));
    3437
     38    private final Map<PreferenceTabbedPane, JPanel> guiPanes = new HashMap<>();
    3539    /**
    3640     * Constructs a new {@code DownloadPreference}.
    3741     */
     
    101105
    102106        panel.add(Box.createVerticalGlue(), GBC.eol().fill(GridBagConstraints.VERTICAL));
    103107        createPreferenceTabWithScrollPane(gui, panel);
     108        guiPanes.put(gui, panel);
    104109    }
    105110
    106111    @Override
     
    117122        Config.getPref().putBoolean("plugin.continuos_download.quiet_download", quietDownload.isSelected());
    118123        return r;
    119124    }
     125
     126    @Override
     127    public void destroy() {
     128        guiPanes.forEach((gui, panel) -> gui.remove(panel));
     129    }
    120130}