package at.bestsolution.e4.ui.workbench.renderers.swing; import javax.annotation.PostConstruct; import org.eclipse.e4.core.contexts.ContextInjectionFactory; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.ui.model.application.ui.MUIElement; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer; import org.eclipse.e4.ui.model.application.ui.basic.MPartStack; import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar; import org.eclipse.e4.ui.model.application.ui.basic.MWindow; import org.eclipse.e4.ui.model.application.ui.menu.MToolBar; import org.eclipse.e4.ui.model.application.ui.menu.MToolItem; import at.bestsolution.e4.ui.workbench.swing.AbstractPartRenderer; import at.bestsolution.e4.ui.workbench.swing.IRendererFactory; @SuppressWarnings("restriction") public class WorkbenchRendererFactory implements IRendererFactory { private IEclipseContext context; private WBWRenderer windowRenderer; private SashRenderer sashRenderer; private StackRenderer stackRenderer; private ContributedPartRender contributedPartRenderer; private TrimBarRenderer trimbarRenderer; private ToolbarRenderer toolbarRenderer; private ToolItemRenderer toolitemRenderer; public AbstractPartRenderer getRenderer(MUIElement uiElement, Object parent) { if( uiElement instanceof MToolItem ) { if( toolitemRenderer == null ) { toolitemRenderer = ContextInjectionFactory.make(ToolItemRenderer.class, context); } return toolitemRenderer; } if( uiElement instanceof MToolBar ) { if( toolbarRenderer == null ) { toolbarRenderer = ContextInjectionFactory.make(ToolbarRenderer.class, context); } return toolbarRenderer; } if( uiElement instanceof MTrimBar ) { if( trimbarRenderer == null ) { trimbarRenderer = ContextInjectionFactory.make(TrimBarRenderer.class, context); } return trimbarRenderer; } if( uiElement instanceof MPart ) { if( contributedPartRenderer == null ) { contributedPartRenderer = ContextInjectionFactory.make(ContributedPartRender.class, context); } return contributedPartRenderer; } if( uiElement instanceof MPartStack ) { if( stackRenderer == null ) { stackRenderer = ContextInjectionFactory.make(StackRenderer.class, context); } return stackRenderer; } if( uiElement instanceof MPartSashContainer ) { if( sashRenderer == null ) { sashRenderer = ContextInjectionFactory.make(SashRenderer.class, context); } return sashRenderer; } if( uiElement instanceof MWindow ) { if( windowRenderer == null ) { windowRenderer = ContextInjectionFactory.make(WBWRenderer.class, context); } return windowRenderer; } return null; } @PostConstruct void init(IEclipseContext context) { this.context = context; } }