Ticket #17040: ChangesetDetail.patch

File ChangesetDetail.patch, 2.5 KB (added by GerdP, 7 years ago)

Please review, I am always unsure whether to use destroy() or dispose(). Removes two listeners added for each ChangesetManager (Ctrl+Alt+C)

  • src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java

     
    6464import org.openstreetmap.josm.io.ChangesetQuery;
    6565import org.openstreetmap.josm.io.NetworkManager;
    6666import org.openstreetmap.josm.io.OnlineResource;
     67import org.openstreetmap.josm.tools.Destroyable;
    6768import org.openstreetmap.josm.tools.ImageProvider;
    6869import org.openstreetmap.josm.tools.InputMapUtils;
    6970import org.openstreetmap.josm.tools.Logging;
     
    103104        if (instance != null) {
    104105            instance.setVisible(true);
    105106            instance.dispose();
     107            for (Component c : instance.pnlChangesetDetailTabs.getComponents()) {
     108                if (c instanceof Destroyable) {
     109                    ((Destroyable) c).destroy();
     110                }
     111            }
    106112            instance = null;
    107113        }
    108114    }
  • src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java

     
    4545import org.openstreetmap.josm.gui.widgets.JosmTextField;
    4646import org.openstreetmap.josm.io.NetworkManager;
    4747import org.openstreetmap.josm.io.OnlineResource;
     48import org.openstreetmap.josm.tools.Destroyable;
    4849import org.openstreetmap.josm.tools.ImageProvider;
    4950import org.openstreetmap.josm.tools.Utils;
    5051import org.openstreetmap.josm.tools.date.DateUtils;
     
    5455 * {@link ChangesetCacheManager}.
    5556 * @since 2689
    5657 */
    57 public class ChangesetDetailPanel extends JPanel implements PropertyChangeListener, ChangesetAware {
     58public class ChangesetDetailPanel extends JPanel implements PropertyChangeListener, ChangesetAware, Destroyable {
    5859
    5960    // CHECKSTYLE.OFF: SingleSpaceSeparator
    6061    private final JosmTextField tfID        = new JosmTextField(10);
     
    476477    public Changeset getCurrentChangeset() {
    477478        return currentChangeset;
    478479    }
     480
     481    @Override
     482    public void destroy() {
     483        MainApplication.getLayerManager().removeActiveLayerChangeListener(actSelectInCurrentLayer);
     484        MainApplication.getLayerManager().removeActiveLayerChangeListener(actZoomInCurrentLayerAction);
     485    }
    479486}