Bug 282875 [UI] Allow parts of models to be rendered
We need to change the rendering protocol to allow a 'createGui' to specify the container it should be created under (in SWT-land this would be a Composite). This is necessary to facilitate unit tests and to allow the ad-hoc rendering of chunks of a model within an arbitrary container (i.e. a Dialog or Wizard). In order to do this we'll have to make an API change to the PartFactory's 'createWidget' so that it will get the parent container as a parameter. In order to 'upgrade' an existing PartFactory you would simply replace the code you're currently using to find the correct container with the new parameter's value.
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/Workbench.java
} else {
			context = EclipseContextFactory
					.create(parentContext, UISchedulerStrategy.getInstance());
			context.set(IContextConstants.DEBUG_STRING, "PartContext(" + part + ')'); 
		}
		Activator.trace(Policy.DEBUG_CONTEXTS, "initializeContext(" 
				+ parentContext.toString() + ", " + part + ")", null); 
		
		
		final Class[] interfaces = part.getClass().getInterfaces();
		for (Class intf : interfaces) {
			Activator.trace(Policy.DEBUG_CONTEXTS, "Adding " + intf.getName() + " for " 
					+ part.getClass().getName(), null);
			context.set(intf.getName(), part);
		}
		part.setContext(context);
		
		for (MPart<?> child : (EList<MPart<?>>) part.getChildren()) {
			initializeContext(context, child);
		}
		part.eAdapters().add(new AdapterImpl() {
			@Override
			public void notifyChanged(Notification msg) {
				if (ApplicationPackage.Literals.MPART__CHILDREN.equals(msg.getFeature())
						&& msg.getEventType() == Notification.ADD) {
					MPart<?> added = (MPart<?>) msg.getNewValue();
					initializeContext(context, added);
				}
			}
		});