@Override public boolean savePart(MPart part, boolean confirm) { if (!part.isDirty()) { return true; } if (saveHandler != null) { return saveHandler.save(part, confirm); } Object client = part.getObject(); try { ContextInjectionFactory.invoke(client, Persist.class, part.getContext()); } catch (InjectionException e) { log("Failed to persist contents of part", "Failed to persist contents of part ({0})", //$NON-NLS-1$ //$NON-NLS-2$ part.getElementId(), e); return false; } catch (RuntimeException e) { log("Failed to persist contents of part via DI", //$NON-NLS-1$ "Failed to persist contents of part ({0}) via DI", part.getElementId(), e); //$NON-NLS-1$ return false; } return true; }
private MCompositePart createCompositePart(MPart originalPart) { MCompositePart compPart = ms.createModelElement(MCompositePart.class); compPart.setElementId("Split Host(" + originalPart.getLabel() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ compPart.setLabel(originalPart.getLabel()); compPart.setTooltip(originalPart.getTooltip()); compPart.setIconURI(originalPart.getIconURI()); compPart.setCloseable(true); compPart.setContributionURI("bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.splitteraddon.SplitHost"); //$NON-NLS-1$ // Check if icon from MPart was overridden Object overriddenImage = originalPart.getTransientData().get(IPresentationEngine.OVERRIDE_ICON_IMAGE_KEY); if (overriddenImage != null) { compPart.getTransientData().put(IPresentationEngine.OVERRIDE_ICON_IMAGE_KEY, overriddenImage); } // Always remove the composite part from the model compPart.getTags().add(EPartService.REMOVE_ON_HIDE_TAG); return compPart; }
private MPart createPart(MPartDescriptor descriptor) { if (descriptor == null) { return null; } MPart part = modelService.createModelElement(MPart.class); part.setElementId(descriptor.getElementId()); part.getMenus().addAll(EcoreUtil.copyAll(descriptor.getMenus())); if (descriptor.getToolbar() != null) { part.setToolbar((MToolBar) EcoreUtil.copy((EObject) descriptor.getToolbar())); } part.setContributorURI(descriptor.getContributorURI()); part.setCloseable(descriptor.isCloseable()); part.setContributionURI(descriptor.getContributionURI()); part.setLabel(descriptor.getLabel()); part.setIconURI(descriptor.getIconURI()); part.setTooltip(descriptor.getTooltip()); part.getHandlers().addAll(EcoreUtil.copyAll(descriptor.getHandlers())); part.getTags().addAll(descriptor.getTags()); part.getVariables().addAll(descriptor.getVariables()); part.getProperties().putAll(descriptor.getProperties()); part.getPersistedState().putAll(descriptor.getPersistedState()); part.getBindingContexts().addAll(descriptor.getBindingContexts()); return part; }
protected boolean isClosable(MPart part) { // if it's a shared part check its current ref if (part.getCurSharedRef() != null) { return !(part.getCurSharedRef().getTags().contains(IPresentationEngine.NO_CLOSE)); } return part.isCloseable(); }
private MUIElement getParentModel() { MElementContainer<MUIElement> parent = part.getParent(); if (parent == null) { MPlaceholder placeholder = part.getCurSharedRef(); return placeholder == null ? null : placeholder.getParent(); } return parent; }
void callingAllParts(Class<? extends Annotation> clz) { List<MPart> parts = ms.findElements(myPart, null, MPart.class); for (MPart part : parts) { if (part == myPart) { continue; } Control ctrl = (Control) part.getWidget(); if (part.getObject() != null && ctrl != null && !ctrl.isDisposed()) { ContextInjectionFactory.invoke(part.getObject(), clz, part.getContext(), null); } } }
part.setCloseable(true); part.setLabel(URI.create(uri).lastSegment()); String editorBundleURI = editorUrlProvider .stream() .orElse("bundleclass://org.eclipse.fx.code.editor.fx/org.eclipse.fx.code.editor.fx.TextEditor"); part.setContributionURI(editorBundleURI); part.setContributorURI("platform:/plugin/org.eclipse.fx.code.editor.fx.e4"); String iconUri = fileIconProvider .stream() .map( f -> f.getFileIconUri(uri)) .orElse("platform:/plugin/org.eclipse.fx.code.editor.fx.e4/icons/file_16.png"); part.setIconURI(iconUri); part.getPersistedState().put(Constants.DOCUMENT_URL, uri); part.getTags().add(EPartService.REMOVE_ON_HIDE_TAG); MPopupMenu menu = contextMenuService.getContextMenu(modelService, application, part, Type.CONTENT); if( menu != null ) { part.getMenus().add(menu); if( menu != null ) { menu.getTags().add(BaseStackRenderer.TAG_TAB_CONTEXT_MENU); part.getMenus().add(menu);
@Override public void doProcessContent(@NonNull MPart element) { WPart<N, T, M> widget = getWidget(element); if (widget == null) { getLogger().error("No widget found for '" + element + "'"); //$NON-NLS-1$//$NON-NLS-2$ return; } MToolBar mToolBar = element.getToolbar(); if (mToolBar != null) { WToolBar<T> toolbar = engineCreateWidget(mToolBar); widget.setToolbar(toolbar); } for (MMenu m : element.getMenus()) { if (m.getTags().contains(VIEW_MENU_TAG)) { WMenu<M> menu = engineCreateWidget(m); widget.setMenu(menu); break; } } Class<?> cl = widget.getWidget().getClass(); do { element.getContext().set(cl.getName(), widget.getWidget()); cl = cl.getSuperclass(); } while (!cl.getName().equals("java.lang.Object")); //$NON-NLS-1$ IContributionFactory contributionFactory = element.getContext().get(IContributionFactory.class); Object newPart = contributionFactory.create(element.getContributionURI(), element.getContext()); element.setObject(newPart); }
if (part.getLabel() == null) { part.setLabel(desc.getLocalizedLabel()); if (part.getTooltip() == null) { part.setTooltip(desc.getLocalizedTooltip()); if (part.getIconURI() == null) { part.setIconURI(desc.getIconURI()); part.setCloseable(desc.isCloseable());
try { memento.save(writer); editor.getPersistedState().put(WorkbenchPartReference.MEMENTO_KEY, writer.toString()); } catch (IOException e) { editor.setLabel(references[i].getTitle()); editor.setTooltip(references[i].getTitleToolTip()); editor.setIconURI(getEditorImageURI((EditorReference) references[i])); ((PartServiceImpl) partService).addPart(editor); } else { editorToActivate = ee.getModel(); if (ee.getModel().getWidget() == null) { try { momento.save(writer); ee.getModel().getPersistedState() .put(WorkbenchPartReference.MEMENTO_KEY, writer.toString()); } catch (IOException e) { && ee.getModel().getObject() instanceof CompatibilityEditor) { CompatibilityEditor ce = (CompatibilityEditor) ee.getModel() .getObject(); if (ce.getEditor() instanceof IPersistableEditor) { IPersistableEditor pe = (IPersistableEditor) ce.getEditor();
@Override protected boolean createPartControl(IWorkbenchPart legacyPart, Composite parent) { clearMenuItems(); part.getContext().set(IViewPart.class, (IViewPart) legacyPart); final IEclipseContext partContext = getModel().getContext(); IRendererFactory rendererFactory = partContext.get(IRendererFactory.class); String partId = part.getElementId(); int colonIndex = partId.indexOf(':'); String descId = colonIndex == -1 ? partId : partId.substring(0, colonIndex); part.getMenus().add(menu); MToolBar toolbar = part.getToolbar(); if (toolbar == null) { toolbar = modelService.createModelElement(MToolBar.class); String partId = part.getElementId(); int colonIndex = partId.indexOf(':'); String descId = colonIndex == -1 ? partId : partId.substring(0, colonIndex); toolbar.setElementId(descId); part.setToolbar(toolbar); } else {
EModelService.PRESENTATION).stream().filter((p) -> !(p.getObject() instanceof SplitHost)) .collect(Collectors.toList()); Long firstPartActivationTime = (Long) firstPart.getTransientData() .getOrDefault(PartServiceImpl.PART_ACTIVATION_TIME, Long.MIN_VALUE); Long secondPartActivationTime = (Long) secondPart.getTransientData() .getOrDefault(PartServiceImpl.PART_ACTIVATION_TIME, Long.MIN_VALUE); if (!partService.isPartOrPlaceholderInPerspective(part.getElementId(), currentPerspective)) { return; if (part.getTags().contains("Editor")) { //$NON-NLS-1$ if (includeEditor.getAndSet(false)) { addExistingReference(refs, part);
public Object getSelection(String partId) { MPart part = partService.findPart(partId); if (part == null) { return null; } IEclipseContext partContext = part.getContext(); if (partContext == null) { return null; } return partContext.get(OUT_SELECTION); }
private MPart createView(ViewReader viewReader) { MPart view = modelService.createModelElement(MPart.class); view.setElementId(viewReader.getId()); view.setContributionURI(CompatibilityPart.COMPATIBILITY_VIEW_URI); view.setLabel(viewReader.getLabel()); view.getTags().add(ViewRegistry.VIEW_TAG); view.getPersistedState().put(Workbench.MEMENTO_KEY, new MementoSerializer(viewReader.getViewState()).serialize()); return view; }
@Override public void destroyWidget(MPlaceholder element) { MUIElement refElement = element.getRef(); Set<MPlaceholder> set = this.renderedMap.get(refElement); if (set == null || !set.remove(element)) { // super.destroyWidget(element); // return; } // Last reference removed so we can destroy it if (set == null || set.isEmpty()) { if (refElement instanceof MPart) { MPart thePart = (MPart) refElement; String imageURI = thePart.getIconURI(); thePart.setIconURI(null); thePart.setIconURI(imageURI); } refElement.setCurSharedRef(null); getPresentationEngine().removeGui(refElement); } else { MPlaceholder currentRef = refElement.getCurSharedRef(); if( currentRef == element ) { refElement.setCurSharedRef(null); } } super.destroyWidget(element); }
@Override void disposeSite(PartSite site) { IEclipseContext context = getModel().getContext(); IRendererFactory rendererFactory = context.get(IRendererFactory.class); IActionBars actionBars = site.getActionBars(); for (MMenu menu : part.getMenus()) { if (menu.getTags().contains(StackRenderer.TAG_VIEW_MENU)) { AbstractPartRenderer apr = rendererFactory.getRenderer(menu, null); MToolBar toolbar = part.getToolbar(); if (toolbar != null) { AbstractPartRenderer apr = rendererFactory.getRenderer(toolbar, null);
IEclipseContext localContext = part.getContext(); localContext.set(Composite.class.getName(), newComposite); Object newPart = contributionFactory.create(part.getContributionURI(), localContext); part.setObject(newPart);
if (part != curPart && curPart != null && curPart.getToolbar() != null) { curPart.getToolbar().setVisible(false); Control[] kids = trComp.getChildren(); boolean needsTB = part != null && part.getToolbar() != null && part.getToolbar().isToBeRendered(); if (needsTB && part != null && part.getObject() != null) { part.getToolbar().setVisible(true); newViewTB = (ToolBar) renderer.createGui(part.getToolbar(), tabFolder.getTopRight(), part.getContext());
@Override public void disposeWidget(MUIElement element) { if (element instanceof MPart) { MPart part = (MPart) element; MToolBar toolBar = part.getToolbar(); if (toolBar != null) { Widget widget = (Widget) toolBar.getWidget(); if (widget != null) { unbindWidget(toolBar); widget.dispose(); } } for (MMenu menu : part.getMenus()) { engine.removeGui(menu); } } super.disposeWidget(element); } }
private void createModelFor(String id) { if (id == null) { id = getClass().getName() + '.' + System.identityHashCode(this); } menuModel = null; for (MMenu item : modelPart.getMenus()) { if (id.equals(item.getElementId()) && item instanceof MPopupMenu && item.getTags().contains("popup")) { //$NON-NLS-1$ menuModel = (MPopupMenu) item; break; } } if (menuModel == null) { menuModel = MenuFactoryImpl.eINSTANCE.createPopupMenu(); menuModel.setElementId(id); menuModel.getTags().add(ContributionsAnalyzer.MC_POPUP); modelPart.getMenus().add(menuModel); } IRendererFactory factory = modelPart.getContext().get(IRendererFactory.class); AbstractPartRenderer obj = factory.getRenderer(menuModel, null); if (obj instanceof MenuManagerRenderer) { ((MenuManagerRenderer) obj).linkModelToManager(menuModel, menu); } registerE4Support(); cleanUpContributionCache(); }