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.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/PartSashFactory.java
if (part instanceof org.eclipse.e4.ui.model.application.MSashForm<?>) {
			org.eclipse.e4.ui.model.application.MSashForm<?> sashModel = (org.eclipse.e4.ui.model.application.MSashForm<?>) part;
			int orientation = (sashModel.getPolicy() != null && sashModel
					.getPolicy().startsWith("Horizontal")) ? SWT.HORIZONTAL 
					: SWT.VERTICAL;
			SashForm newSash = new SashForm((Composite) parentWidget,
					SWT.SMOOTH | orientation);
			bindWidget(part, newSash);
			
			newSash.setVisible(true);
			return newSash;
		}
		return null;
	}
	public void postProcess(MPart<?> part) {
		if (part instanceof org.eclipse.e4.ui.model.application.MSashForm<?>) {
			
			EList<MPart<?>> kids = (EList<MPart<?>>) part.getChildren();
			if (kids.size() == 0)
				return;
			
			int visCount = 0;
			for (Iterator iterator = kids.iterator(); iterator.hasNext();) {
				MPart<?> mPart = (MPart<?>) iterator.next();
				if (mPart.getWidget() != null)
					visCount++;
			}
			
			final SashForm sashForm = (SashForm) part.getWidget();
			org.eclipse.e4.ui.model.application.MSashForm<?> sashPart = (org.eclipse.e4.ui.model.application.MSashForm<?>) part;