public void widgetDisposed(DisposeEvent e) { ContextInjectionFactory.uninject(tcImpl, parentContext); model.setObject(null); } });
@SuppressWarnings("null") @Override protected void doProcessContent(MToolControl element) { WToolControl<N> widget = getWidget(element); if( widget == null ) { getLogger().error("Could not find widget for '"+element+"'"); //$NON-NLS-1$ //$NON-NLS-2$ return; } Class<?> cl = widget.getWidget().getClass(); IEclipseContext modelContext = getModelContext(element); if( modelContext == null ) { getLogger().error("The model context is null - impossible to proceed"); //$NON-NLS-1$ return; } IEclipseContext context = modelContext.createChild("ToolControl"); //$NON-NLS-1$ do { context.set(cl.getName(), widget.getWidget()); cl = cl.getSuperclass(); } while (!cl.getName().equals("java.lang.Object")); //$NON-NLS-1$ populateModelInterfaces(element, context, MToolControl.class); IContributionFactory contributionFactory = (IContributionFactory) context.get(IContributionFactory.class.getName()); Object newPart = contributionFactory.create(element.getContributionURI(), context); element.setObject(newPart); element.getTransientData().put(LOCAL_CONTEXT, context); }
@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, newComposite); localContext.set(MToolControl.class, 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(e -> { ContextInjectionFactory.uninject(tcImpl, parentContext); model.setObject(null); }); } model.setWidget(newComposite); newComposite.setData(AbstractPartRenderer.OWNING_ME, model); newComposite.setData(this); return newComposite; }
@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; }
toolControl.setObject(tcImpl); Control[] kids = parentComp.getChildren();
toolControl.setObject(tcImpl); Control[] kids = parentComp.getChildren();