Bug 207829 [Contributions] Unnecessary plugin activation on shutdown
I20071029-0010 On shutdown, PluginActionCoolBarContributionItem.handleWidgetDispose makes a call to getMenuCreator() that loads the search plugin. SearchPlugin.<init>() line: 95 NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method] NativeConstructorAccessorImpl.newInstance(Object[]) line: 39 DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27 Constructor.newInstance(Object[]) line: 274 Class.newInstance0() line: 308 Class.newInstance() line: 261 BundleHost(AbstractBundle).loadBundleActivator() line: 137 BundleContextImpl.start() line: 970 BundleHost.startWorker(int) line: 346 BundleHost(AbstractBundle).start(int) line: 261 SecureAction.start(Bundle, int) line: 400 EclipseLazyStarter.postFindLocalClass(String, Class, ClasspathManager) line: 111 ClasspathManager.findLocalClass(String) line: 419 DefaultClassLoader.findLocalClass(String) line: 189 BundleLoader.findLocalClass(String) line: 344 BundleLoader.findClassInternal(String, boolean, ClassLoader) line: 412 BundleLoader.findClass(String, boolean) line: 373 BundleLoader.findClass(String) line: 361 DefaultClassLoader.loadClass(String, boolean) line: 83 DefaultClassLoader(ClassLoader).loadClass(String) line: 235 BundleLoader.loadClass(String) line: 289 BundleHost.loadClass(String, boolean) line: 227 BundleHost(AbstractBundle).loadClass(String) line: 1269 EquinoxRegistryStrategy(RegistryStrategyOSGI).createExecutableExtension(RegistryContributor, String, String) line: 160 ExtensionRegistry.createExecutableExtension(RegistryContributor, String, String) line: 819 ConfigurationElement.createExecutableExtension(String) line: 243 ConfigurationElementHandle.createExecutableExtension(String) line: 51 WorkbenchPlugin$1.run() line: 244 BusyIndicator.showWhile(Display, Runnable) line: 67 WorkbenchPlugin.createExtension(IConfigurationElement, String) line: 240 WWinPluginPulldown(PluginAction).createDelegate() line: 122 WWinPluginPulldown(PluginAction).getMenuCreator() line: 380 PluginActionCoolBarContributionItem(ActionContributionItem).handleWidgetDispose(Event) line: 469 ActionContributionItem.access$1(ActionContributionItem, Event) line: 464 ActionContributionItem$6.handleEvent(Event) line: 445 EventTable.sendEvent(Event) line: 66 ToolItem(Widget).sendEvent(Event) line: 1105 ToolItem(Widget).sendEvent(int, Event, boolean) line: 1129 ToolItem(Widget).sendEvent(int) line: 1110 ToolItem(Widget).release(boolean) line: 974 ToolBar.releaseChildren(boolean) line: 402 ToolBar(Widget).release(boolean) line: 977 ToolBar(Control).release(boolean) line: 3156 CoolBar(Composite).releaseChildren(boolean) line: 1175 CoolBar(Widget).release(boolean) line: 977 CoolBar(Control).release(boolean) line: 3156 Composite.releaseChildren(boolean) line: 1175 Composite(Widget).release(boolean) line: 977 Composite(Control).release(boolean) line: 3156 CBanner(Composite).releaseChildren(boolean) line: 1175 CBanner(Widget).release(boolean) line: 977 CBanner(Control).release(boolean) line: 3156 Shell(Composite).releaseChildren(boolean) line: 1175 Shell(Canvas).releaseChildren(boolean) line: 196 Shell(Decorations).releaseChildren(boolean) line: 465 Shell.releaseChildren(boolean) line: 1822 Shell(Widget).release(boolean) line: 977 Shell(Control).release(boolean) line: 3156 Shell(Widget).dispose() line: 434 Shell.dispose() line: 1767 WorkbenchWindow(Window).close() line: 335
bundles/org.eclipse.jface/src/org/eclipse/jface/action/ActionContributionItem.java
switch (event.type) {
					case SWT.Dispose:
						handleWidgetDispose(event);
						break;
					case SWT.Selection:
						Widget ew = event.widget;
						if (ew != null) {
							handleWidgetSelection(event, ((Button) ew)
									.getSelection());
						}
						break;
					}
				}
			};
		}
		return buttonListener;
	}
	/**
	 * Returns the listener for SWT menu item widget events.
	 * 
	 * @return a listener for menu item events
	 */
	private Listener getMenuItemListener() {
		if (menuItemListener == null) {
			menuItemListener = new Listener() {
				public void handleEvent(Event event) {
					switch (event.type) {
					case SWT.Dispose:
						handleWidgetDispose(event);
						break;