@Override
protected Control createControl(Composite parent) {
IEclipseContext localContext = EclipseContextFactory.create();
final Composite newComposite = new Composite(parent, SWT.NONE);
newComposite.setLayout(new FillLayout());
localContext.set(Composite.class.getName(), newComposite);
localContext.set(MToolControl.class.getName(), model);
final IEclipseContext parentContext = modelService
.getContainingContext(model);
if (model.getObject() == null) {
final Object tcImpl = contribFactory.create(
model.getContributionURI(), parentContext, localContext);
model.setObject(tcImpl);
newComposite.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
ContextInjectionFactory.uninject(tcImpl, parentContext);
model.setObject(null);
}
});
}
model.setWidget(newComposite);
newComposite.setData(AbstractPartRenderer.OWNING_ME, model);
newComposite.setData(this);
return newComposite;
}