private ToolBarContributionItemExtension(IToolBarManager toolBarManager, MToolBar tb) { super(toolBarManager, tb.getElementId()); this.tb = tb; }
@Override public IContributionItem[] getItems() { ArrayList<IContributionItem> items = new ArrayList<>(); List<MToolBar> toolBars = modelService.findElements(window, null, MToolBar.class); for (final MToolBar tb : toolBars) { if (tb.getTransientData().get(OBJECT) != null) { items.add((IContributionItem) tb.getTransientData().get(OBJECT)); } else { ToolBarManagerRenderer renderer = (ToolBarManagerRenderer) rendererFactory.getRenderer(tb, null); final ToolBarManager manager = renderer.getManager(tb); if (manager != null) { ToolBarContributionItemExtension toolBarContributionItem = new ToolBarContributionItemExtension( manager, tb); tb.getTransientData().put(OBJECT, toolBarContributionItem); toolbarExtensions.add(toolBarContributionItem); items.add(toolBarContributionItem); } else if (tb.getTags().contains(TOOLBAR_SEPARATOR)) { if (tb.getTransientData().get(OBJECT) != null) { items.add((IContributionItem) tb.getTransientData().get(OBJECT)); } items.add(new GroupMarker(tb.getElementId())); } } } return items.toArray(new IContributionItem[items.size()]); }
@Override public void processContents(MElementContainer<MUIElement> container) { // We've delegated further rendering to the ContributionManager // it's their fault the menu items don't show up! IEclipseContext ctx = getContext(container); ExpressionContext eContext = new ExpressionContext(ctx); ArrayList<MToolBarContribution> toContribute = new ArrayList<MToolBarContribution>(); MElementContainer<?> toolbarObj = container; MToolBar toolbarModel = (MToolBar) toolbarObj; ContributionsAnalyzer.gatherToolBarContributions(toolbarModel, application.getToolBarContributions(), toolbarModel.getElementId(), toContribute, eContext); ToolBarRenderer.addToolBarContributions(toolbarModel, toContribute, ctx, eContext, pendingCleanup); }
@Override public IContributionItem remove(IContributionItem item) { final List<MToolBar> children = modelService.findElements(window, null, MToolBar.class, null); for (int i = 0; i < children.size(); i++) { final MToolBar child = children.get(i); final Object obj = child.getTransientData().get(OBJECT); if (obj != null && obj.equals(item)) { if (child instanceof MToolBarElement) { renderer.clearModelToContribution((MToolBarElement) child, item); } if (item instanceof IToolBarContributionItem) { IToolBarManager parent = ((IToolBarContributionItem) item).getToolBarManager(); if (parent instanceof ToolBarManager) { renderer.clearModelToManager(child, (ToolBarManager) parent); } } workbenchTrimElements.remove(child); child.setToBeRendered(false); child.getParent().getChildren().remove(child); return (IContributionItem) obj; } if (item.getId() != null && item.getId().equals(child.getElementId())) { throw new IllegalStateException(); } } return null; }
@Override public IContributionItem find(String id) { List<MToolBar> toolbars = modelService.findElements(window, id, MToolBar.class); if (toolbars.isEmpty()) { return null; } final MToolBar model = toolbars.get(0); if (model.getTransientData().get(OBJECT) != null) { return (IContributionItem) model.getTransientData().get(OBJECT); } ToolBarManagerRenderer renderer = (ToolBarManagerRenderer) rendererFactory.getRenderer(model, null); final ToolBarManager manager = renderer.getManager(model); if (manager != null) { final ToolBarContributionItemExtension toolBarContributionItem = new ToolBarContributionItemExtension( manager, model); model.getTransientData().put(OBJECT, toolBarContributionItem); toolbarExtensions.add(toolBarContributionItem); return toolBarContributionItem; } else if (model.getTags().contains(TOOLBAR_SEPARATOR)) { if (model.getTransientData().get(OBJECT) != null) { return (IContributionItem) model.getTransientData().get(OBJECT); } return new GroupMarker(model.getElementId()); } return null; }
@Override public void processContents(MElementContainer<MUIElement> container) { super.processContents(container); IEclipseContext ctx = getContext(container); ExpressionContext eContext = new ExpressionContext(ctx); ArrayList<MToolBarContribution> toContribute = new ArrayList<MToolBarContribution>(); MElementContainer<?> toolbarObj = container; MToolBar toolbarModel = (MToolBar) toolbarObj; ContributionsAnalyzer.gatherToolBarContributions(toolbarModel, application.getToolBarContributions(), toolbarModel.getElementId(), toContribute, eContext); addToolBarContributions(toolbarModel, toContribute, ctx, eContext, pendingCleanup); }
private void processTrimChildren(ArrayList<MTrimContribution> trimContributions, ArrayList<MToolBarContribution> toolBarContributions, IConfigurationElement element) { IConfigurationElement[] toolbars = element .getChildren(IWorkbenchRegistryConstants.TAG_TOOLBAR); if (toolbars.length == 0) { return; } MTrimContribution trimContribution = MenuFactoryImpl.eINSTANCE.createTrimContribution(); String idContrib = MenuHelper.getId(configElement); if (idContrib != null && idContrib.length() > 0) { trimContribution.setElementId(idContrib); } String query = location.getQuery(); boolean hasAdditions = AFTER_ADDITIONS.equals(query); processTrimLocation(trimContribution); trimContribution.getTags().add("scheme:" + location.getScheme()); //$NON-NLS-1$ for (IConfigurationElement toolbar : toolbars) { MToolBar item = MenuFactoryImpl.eINSTANCE.createToolBar(); item.setElementId(MenuHelper.getId(toolbar)); item.getTransientData().put("Name", MenuHelper.getLabel(toolbar)); //$NON-NLS-1$ processToolbarChildren(toolBarContributions, toolbar, item.getElementId(), AFTER_ADDITIONS, false); trimContribution.getChildren().add(item); } if (hasAdditions) { trimContributions.add(0, trimContribution); } else { trimContributions.add(trimContribution); } }
@Override public Object createWidget(final MUIElement element, Object parent) { if (!(element instanceof MToolBar) || !(parent instanceof Composite)) { return null; } final MToolBar toolbarModel = (MToolBar) element; ToolBar newTB = createToolbar(toolbarModel, (Composite) parent); bindWidget(element, newTB); processContribution(toolbarModel, toolbarModel.getElementId()); Control renderedCtrl = newTB; MUIElement parentElement = element.getParent(); if (parentElement instanceof MTrimBar) { if (!element.getTags().contains(IPresentationEngine.NO_MOVE)) { element.getTags().add(IPresentationEngine.DRAGGABLE); } setCSSInfo(element, newTB); boolean vertical = false; MTrimBar bar = (MTrimBar) parentElement; vertical = bar.getSide() == SideValue.LEFT || bar.getSide() == SideValue.RIGHT; IEclipseContext parentContext = getContextForParent(element); CSSRenderingUtils cssUtils = parentContext.get(CSSRenderingUtils.class); if (cssUtils != null) { MUIElement modelElement = (MUIElement) newTB.getData(AbstractPartRenderer.OWNING_ME); boolean draggable = ((modelElement != null) && (modelElement.getTags().contains(IPresentationEngine.DRAGGABLE))); renderedCtrl = cssUtils.frameMeIfPossible(newTB, null, vertical, draggable); } } return renderedCtrl; }
@Override public Object createWidget(final MUIElement element, Object parent) { if (!(element instanceof MToolBar) || !(parent instanceof Composite)) return null; final MToolBar toolbarModel = (MToolBar) element; ToolBar newTB = createToolbar(toolbarModel, (Composite) parent); bindWidget(element, newTB); processContribution(toolbarModel, toolbarModel.getElementId()); Control renderedCtrl = newTB; MUIElement parentElement = element.getParent(); if (parentElement instanceof MTrimBar) { element.getTags().add("Draggable"); //$NON-NLS-1$ setCSSInfo(element, newTB); boolean vertical = false; MTrimBar bar = (MTrimBar) parentElement; vertical = bar.getSide() == SideValue.LEFT || bar.getSide() == SideValue.RIGHT; IEclipseContext parentContext = getContextForParent(element); CSSRenderingUtils cssUtils = parentContext .get(CSSRenderingUtils.class); if (cssUtils != null) { renderedCtrl = (Composite) cssUtils.frameMeIfPossible(newTB, null, vertical, true); } } return renderedCtrl; }