Bug 331582 binding context processing should be done in binding Contexts addon
org.eclipse.e4.ui.model.application.commands.MBindings.getBindingContexts() is currently processed in E4Workbench but should be done by the binding contexts model processing add on, and should add the event broker to listen to additions. PW
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/E4Workbench.java
"createWorkbenchContext: initialize the workbench context with needed services", null); 
		final IEclipseContext mainContext = applicationContext.createChild("WorkbenchContext"); 
		mainContext.set(Logger.class.getName(),
				ContextInjectionFactory.make(WorkbenchLogger.class, mainContext));
		
		if (contributionFactory != null) {
			mainContext.set(IContributionFactory.class.getName(), contributionFactory);
		}
		mainContext.set(IServiceConstants.ACTIVE_PART, new ActivePartLookupFunction());
		
		
		mainContext.set(IExceptionHandler.class.getName(), exceptionHandler);
		mainContext.set(IExtensionRegistry.class.getName(), registry);
		mainContext.set(IServiceConstants.ACTIVE_SHELL, new ActiveChildLookupFunction(
				IServiceConstants.ACTIVE_SHELL, null));
		initializeNullStyling(mainContext);
		return mainContext;
	}
	public static void processHierarchy(Object me) {
		if (me instanceof MHandlerContainer) {
			MContext contextModel = (MContext) me;
			MHandlerContainer container = (MHandlerContainer) contextModel;
			IEclipseContext context = contextModel.getContext();
			if (context != null) {
				IContributionFactory cf = (IContributionFactory) context
						.get(IContributionFactory.class.getName());
				EHandlerService hs = (EHandlerService) context.get(EHandlerService.class.getName());
				List<MHandler> handlers = container.getHandlers();
				for (MHandler handler : handlers) {
					String commandId = handler.getCommand().getElementId();