/** * @param model * @param manager */ public void clearModelToManager(MToolBar model, ToolBarManager manager) { for (MToolBarElement element : model.getChildren()) { if (element instanceof MToolBar) { clearModelToManager((MToolBar) element, getManager((MToolBar) element)); } IContributionItem ici = getContribution(element); clearModelToContribution(element, ici); } ToolBarManager removed = modelToManager.remove(model); if (manager == null) { managerToModel.remove(removed); } else { managerToModel.remove(manager); } if (Policy.DEBUG_RENDERER) { logger.debug("\nTBMR:clearModelToManager: modelToManager size = {0}, managerToModel size = {1}", //$NON-NLS-1$ modelToManager.size(), managerToModel.size()); } }
private void processHandledItem(ToolBarManager parentManager, MHandledToolItem itemModel) { IContributionItem ici = getContribution(itemModel); if (ici != null) { return; } itemModel.setRenderer(this); final IEclipseContext lclContext = getContext(itemModel); HandledContributionItem ci = ContextInjectionFactory.make(HandledContributionItem.class, lclContext); ci.setModel(itemModel); ci.setVisible(itemModel.isVisible()); addToManager(parentManager, itemModel, ci); linkModelToContribution(itemModel, ci); }
@Override public void childRendered(MElementContainer<MUIElement> parentElement, MUIElement element) { super.childRendered(parentElement, element); processContents(parentElement); ToolBar toolbar = (ToolBar) getUIContainer(element); if (toolbar != null && !toolbar.isDisposed()) { toolbar.requestLayout(); } }
/** * @param record * @param copy */ public void cleanUpCopy(ToolBarContributionRecord record, MToolBarElement copy) { modelContributionToRecord.remove(copy); IContributionItem ici = getContribution(copy); clearModelToContribution(copy, ici); if (ici != null) { record.getManagerForModel().remove(ici); } }
private void generateContributions(MToolBar toolbarModel, List<MToolBarContribution> toContribute) { ToolBarManager manager = getManager(toolbarModel); boolean done = toContribute.isEmpty(); while (!done) { ArrayList<MToolBarContribution> curList = new ArrayList<>(toContribute); int retryCount = toContribute.size(); toContribute.clear(); for (final MToolBarContribution contribution : curList) { if (!processAddition(toolbarModel, manager, contribution)) { toContribute.add(contribution); } } // We're done if the retryList is now empty (everything done) or // if the list hasn't changed at all (no hope) done = toContribute.isEmpty() || toContribute.size() == retryCount; } }
void processOpaqueItem(ToolBarManager parentManager, MOpaqueToolItem itemModel) { IContributionItem ici = getContribution(itemModel); if (ici != null) { return; } Object obj = itemModel.getOpaqueItem(); if (obj instanceof IContributionItem) { ici = (IContributionItem) obj; } else { return; } ici.setVisible(itemModel.isVisible()); addToManager(parentManager, itemModel, ici); linkModelToContribution(itemModel, ici); }
@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; }
for (int src = 0, dest = 0; src < items.length; src++, dest++) { IContributionItem item = items[src]; MToolBarElement element = getToolElement(item); if (element == null) { MOpaqueToolItem legacyItem = MenuFactoryImpl.eINSTANCE legacyItem.setVisible(item.isVisible()); legacyItem.setOpaqueItem(item); linkModelToContribution(legacyItem, item); modelChildren.add(dest, legacyItem); } else if (element instanceof MOpaqueToolItem) { modelChildren.removeAll(oldModelItems); for (MOpaqueToolItem model : oldModelItems) { clearModelToContribution(model, (IContributionItem) model.getOpaqueItem());
private ToolBar createToolbar(final MUIElement element, Composite parent) { int orientation = getOrientation(element); ToolBarManager manager = getManager((MToolBar) element); if (manager == null) { manager = new ToolBarManager(orientation | SWT.WRAP | SWT.FLAT linkModelToManager((MToolBar) element, manager);
@Override public void processContents(MElementContainer<MUIElement> container) { // I can either simply stop processing, or we can walk the model // ourselves like the "old" days // EMF gives us null lists if empty if (container == null) { return; } Object obj = container; ToolBarManager parentManager = getManager((MToolBar) obj); if (parentManager == null) { return; } // Process any contents of the newly created ME List<MUIElement> parts = container.getChildren(); if (parts != null) { MUIElement[] plist = parts.toArray(new MUIElement[parts.size()]); for (MUIElement childME : plist) { modelProcessSwitch(parentManager, (MToolBarElement) childME); } } parentManager.update(true); ToolBar toolbar = getToolbarFrom(container.getWidget()); if (toolbar != null) { toolbar.requestLayout(); } }
return; ToolBarManager parent = getManager((MToolBar) obj); if (itemModel.isToBeRendered()) { if (parent != null) { modelProcessSwitch(parent, itemModel); parent.update(true); ToolBar toolbar = parent.getControl(); IContributionItem ici = getContribution(itemModel); if (ici == null) { return;
/** * @param toolbarModel * @param elementId */ public void processContribution(MToolBar toolbarModel, String elementId) { ToolBarManager manager = getManager(toolbarModel); if (manager != null && manager.getControl() != null) { addCleanupDisposeListener(toolbarModel, manager.getControl()); } final ArrayList<MToolBarContribution> toContribute = new ArrayList<>(); ContributionsAnalyzer.XXXgatherToolBarContributions(toolbarModel, application.getToolBarContributions(), elementId, toContribute); generateContributions(toolbarModel, toContribute); }
@Inject @Optional private void subscribeTopicUpdateItems(@UIEventTopic(UIEvents.UILabel.TOPIC_ALL) Event event) { // Ensure that this event is for a MToolBarElement if (!(event.getProperty(UIEvents.EventTags.ELEMENT) instanceof MToolBarElement)) { return; } MToolBarElement itemModel = (MToolBarElement) event.getProperty(UIEvents.EventTags.ELEMENT); IContributionItem ici = getContribution(itemModel); if (ici == null) { return; } String attName = (String) event.getProperty(UIEvents.EventTags.ATTNAME); if (UIEvents.UILabel.LABEL.equals(attName) || UIEvents.UILabel.LOCALIZED_LABEL.equals(attName)|| UIEvents.UILabel.ICONURI.equals(attName) || UIEvents.UILabel.TOOLTIP.equals(attName)|| UIEvents.UILabel.LOCALIZED_TOOLTIP.equals(attName)) { ici.update(); } }
public ToolBarManager getManagerForModel() { return renderer.getManager(toolbarModel); }
ToolBarManagerRenderer renderer = (ToolBarManagerRenderer) obj; mToolBar.setRenderer(renderer); renderer.reconcileManagerToModel(toolbar, mToolBar); renderer.processContribution(mToolBar, uri.getPath()); renderer.processContents((MElementContainer<MUIElement>) ((Object) mToolBar));
private void releaseToolbar(IRendererFactory rendererFactory, ToolBarImpl tb) { AbstractPartRenderer apr = rendererFactory.getRenderer(tb, null); if (apr instanceof ToolBarManagerRenderer) { ToolBarManagerRenderer tbmr = (ToolBarManagerRenderer) apr; ToolBarManager tbm = tbmr.getManager(tb); tbmr.clearModelToManager(tb, null); if (tbm != null) { tbm.dispose(); tbm.removeAll(); } } } }
return; ToolBarManager parent = getManager((MToolBar) obj); if (itemModel.isToBeRendered()) { if (parent != null) { IContributionItem ici = getContribution(itemModel); if (ici == null) { return;
continue; MToolBarElement toolBarElem = renderer.getToolElement(item); if (toolBarElem != null) { if (container.isVisible()) { renderer.linkModelToContribution(toolItem, ci); container.getChildren().add(toolItem); } else { renderer.linkModelToContribution(toolItem, item); container.getChildren().add(toolItem);
@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; }
protected MToolBar getToolbarModel(MApplicationElement model, ToolBarManager toolbarManager, MenuLocationURI location) { final IRendererFactory factory = e4Context.get(IRendererFactory.class); final AbstractPartRenderer obj = factory.getRenderer( MenuFactoryImpl.eINSTANCE.createToolBar(), null); if (!(obj instanceof ToolBarManagerRenderer)) { return null; } ToolBarManagerRenderer renderer = (ToolBarManagerRenderer) obj; MToolBar mToolBar = renderer.getToolBarModel(toolbarManager); if (mToolBar != null) { String tag = "toolbar:" + location.getPath(); //$NON-NLS-1$ if (!mToolBar.getTags().contains(tag)) { mToolBar.getTags().add(tag); } return mToolBar; } if (mToolBar == null) { mToolBar = MenuFactoryImpl.eINSTANCE.createToolBar(); mToolBar.setElementId(location.getPath()); mToolBar.getTags().add(ContributionsAnalyzer.MC_TOOLBAR); String tag = "toolbar:" + location.getPath(); //$NON-NLS-1$ mToolBar.getTags().add(tag); addToolbar(model, mToolBar, ((MContext) model).getContext()); } renderer.linkModelToManager(mToolBar, toolbarManager); return mToolBar; }