Bug 317312 [Compatibility] Update launch config and pick Run causes NPEs
bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/ShellActivationListener.java
Object tmp = parentContext.getLocal(IContextConstants.ACTIVE_CHILD);
		shell.setData(ECLIPSE_CONTEXT_PREV_CHILD, tmp);
		parentContext.set(IContextConstants.ACTIVE_CHILD, shellContext);
	}
	private void deactivate(Shell shell) {
		final IEclipseContext tmp = (IEclipseContext) shell
				.getData(ECLIPSE_CONTEXT_PREV_CHILD);
		if (tmp == null) {
			return;
		}
		shell.setData(ECLIPSE_CONTEXT_PREV_CHILD, null);
		final IEclipseContext parentContext = getParentContext(shell);
		parentContext.set(IContextConstants.ACTIVE_CHILD, tmp);
	}
	private IEclipseContext getShellContext(final Shell shell,
			IEclipseContext parentContext) {
		IEclipseContext shellContext = (IEclipseContext) shell
				.getData(ECLIPSE_CONTEXT_DIALOG_ID);
		if (shellContext != null) {
			return shellContext;
		}
		final IEclipseContext context = parentContext
				.createChild(EBindingService.DIALOG_CONTEXT_ID);
		context.set(E4Workbench.LOCAL_ACTIVE_SHELL, shell);
		
		shell.setData(ECLIPSE_CONTEXT_DIALOG_ID, context);
		EContextService contextService = context.get(EContextService.class);
		contextService.activateContext(EBindingService.DIALOG_CONTEXT_ID);
		shell.addDisposeListener(new DisposeListener() {
			public void widgetDisposed(DisposeEvent e) {