git clone http://danamlund/git/eclipse-quick-launch/.git
Log | Files | Refs | LICENSE

commit 6095a8e234384eb4d9ba028998e1bdc1be147533
parent dabbe7a3d7c9041f91571a4e87db5e1bfc438d3d
Author: Dan Amlund <dan@danamlund.dk>
Date:   Thu, 19 Oct 2017 22:18:56 +0200

cleanup listeners if handler is ever disposed

Diffstat:
Mdk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickDebugLaunchConfigurationHandler.java | 8++++++++
Mdk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickLauncher.java | 17++++++++++++-----
Mdk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickRunLaunchConfigurationHandler.java | 8++++++++
3 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/dk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickDebugLaunchConfigurationHandler.java b/dk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickDebugLaunchConfigurationHandler.java @@ -16,4 +16,12 @@ public class QuickDebugLaunchConfigurationHandler extends AbstractHandler { quickLauncher.showQuickLaunchDialog(); return null; } + + @Override + public void dispose() { + super.dispose(); + if (quickLauncher != null) { + quickLauncher.dispose(); + } + } } diff --git a/dk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickLauncher.java b/dk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickLauncher.java @@ -13,21 +13,23 @@ import org.eclipse.debug.core.ILaunchManager; public class QuickLauncher { private final String runMode; private final QuickLaunchConfigurationDialog dialog; + private final ReloadLaunchersListener listener; public QuickLauncher(String runMode) { this.runMode = runMode; this.dialog = new QuickLaunchConfigurationDialog(runMode); - + reloadLaunchers(); - + ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); - launchManager.addLaunchConfigurationListener(new ReloadLaunchersListener()); + listener = new ReloadLaunchersListener(); + launchManager.addLaunchConfigurationListener(listener); } public void showQuickLaunchDialog() throws ExecutionException { dialog.open(); } - + private void reloadLaunchers() { try { ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); @@ -42,7 +44,7 @@ public class QuickLauncher { throw new IllegalStateException(e); } } - + private class ReloadLaunchersListener implements ILaunchConfigurationListener { @Override public void launchConfigurationAdded(ILaunchConfiguration configuration) { @@ -59,4 +61,9 @@ public class QuickLauncher { reloadLaunchers(); } } + + public void dispose() { + ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); + launchManager.removeLaunchConfigurationListener(listener); + } } diff --git a/dk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickRunLaunchConfigurationHandler.java b/dk.danamlund.quicklaunch/src/dk/danamlund/quicklaunch/QuickRunLaunchConfigurationHandler.java @@ -16,4 +16,12 @@ public class QuickRunLaunchConfigurationHandler extends AbstractHandler { quickLauncher.showQuickLaunchDialog(); return null; } + + @Override + public void dispose() { + super.dispose(); + if (quickLauncher != null) { + quickLauncher.dispose(); + } + } }