element.getContext().set(cl.getName(), sash.getWidget()); cl = cl.getSuperclass(); } while (cl != Object.class); if( element.getContributionURI() != null ) { IContributionFactory contributionFactory = element.getContext().get(IContributionFactory.class); Object newPart = contributionFactory.create(element.getContributionURI(), element.getContext()); element.setObject(newPart); for (MPartSashContainerElement e : element.getChildren()) { if (e.isToBeRendered()) { WLayoutedWidget<MPartSashContainerElement> widget = engineCreateWidget(e); MToolBar mToolBar = element.getToolbar(); if (mToolBar != null) { WToolBar<N> toolbar = engineCreateWidget(mToolBar); for (MMenu m : element.getMenus()) { if (m.getTags().contains(BasePartRenderer.VIEW_MENU_TAG)) { final WMenu<N> menu = engineCreateWidget(m);
@Override public void hideChild(MCompositePart container, MUIElement changedObj) { WCompositePart<N> sash = getWidget(container); if (sash == null) { return; } @SuppressWarnings("unchecked") WLayoutedWidget<MPartSashContainerElement> widget = (WLayoutedWidget<MPartSashContainerElement>) changedObj.getWidget(); if (widget != null) { sash.removeItem(widget); } if( container.getSelectedElement() == changedObj && (widget != null && widget.getWidgetState() != WidgetState.IN_TEAR_DOWN) ) { container.setSelectedElement(null); } }
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; }
void splitPart(MPart partToSplit, boolean horizontal) { MElementContainer<MUIElement> parent = partToSplit.getParent(); int index = parent.getChildren().indexOf(partToSplit); MPart editorClone = (MPart) ms.cloneElement(partToSplit, null); MCompositePart compPart = createCompositePart(partToSplit); // Add the new composite part to the model compPart.getChildren().add(editorClone); compPart.setSelectedElement(editorClone); parent.getChildren().add(index, compPart); parent.setSelectedElement(compPart); // Now, add the original part into the composite int orientation = horizontal ? EModelService.ABOVE : EModelService.LEFT_OF; ms.insert(partToSplit, editorClone, orientation, 0.5f); ps.activate(partToSplit); } }
@Override public void handleEvent(Event event) { Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT); if (changedObj instanceof MCompositePart) { MCompositePart parent = (MCompositePart) changedObj; if (BaseCompositePartRenderer.this == parent.getRenderer()) { String eventType = (String) event.getProperty(UIEvents.EventTags.TYPE); if (UIEvents.EventTypes.SET.equals(eventType)) { MUIElement newValue = (MUIElement) event.getProperty(UIEvents.EventTags.NEW_VALUE); MUIElement oldValue = (MUIElement) event.getProperty(UIEvents.EventTags.OLD_VALUE); handleSelectedElement(parent, (MPartSashContainerElement) oldValue, (MPartSashContainerElement) newValue); } } } } });
private void unsplitPart(MCompositePart compositePart) { if (compositePart == null) { return; } List<MPart> innerElements = ms.findElements(compositePart, null, MPart.class, null); if (innerElements.size() < 3) { return; } MPart originalEditor = innerElements.get(1); // '0' is the composite part // Close the cloned editor *before* removing it from the model MPart clonedEditor = innerElements.get(2); clonedEditor.setToBeRendered(false); MElementContainer<MUIElement> compParent = compositePart.getParent(); int index = compParent.getChildren().indexOf(compositePart); compParent.getChildren().remove(compositePart); originalEditor.getParent().getChildren().remove(originalEditor); compParent.getChildren().add(index, originalEditor); if (ps.getActivePart() == originalEditor) { ps.activate(null); } ps.activate(originalEditor); }
@Override public void handleEvent(Event event) { Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT); if (changedObj instanceof MCompositePart) { MCompositePart parent = (MCompositePart) changedObj; if (BaseCompositePartRenderer.this == parent.getRenderer()) { if (UIEvents.isADD(event)) { handleChildrenAddition(parent, Util.<MPartSashContainerElement> asCollection(event, UIEvents.EventTags.NEW_VALUE)); } else if (UIEvents.isREMOVE(event)) { handleChildrenRemove(parent, Util.<MPartSashContainerElement> asCollection(event, UIEvents.EventTags.OLD_VALUE)); } } } } });