private boolean isShared(MPart part) { return getWindow().getSharedElements().contains(part); }
@Override public void hostElement(MUIElement element, MWindow hostWindow, Object uiContainer, IEclipseContext hostContext) { // This is subtle; unless the element is hooked into the model it won't fire events hostWindow.getSharedElements().add(element); element.getTags().add(HOSTED_ELEMENT); IPresentationEngine renderer = hostWindow.getContext().get(IPresentationEngine.class); renderer.createGui(element, uiContainer, hostContext); }
@Override public boolean isHostedElement(MUIElement element, MWindow hostWindow) { MUIElement curElement = element; while (curElement != null && !curElement.getTags().contains(HOSTED_ELEMENT)) { if (curElement.getCurSharedRef() != null) { curElement = curElement.getCurSharedRef(); } else { curElement = curElement.getParent(); } } if (curElement == null) { return false; } return hostWindow.getSharedElements().contains(curElement); }
@Override public MPlaceholder createSharedPart(String id, boolean force) { MWindow sharedWindow = getWindow(); // Do we already have the part to share? MPart sharedPart = null; // check for existing parts if necessary if (!force) { for (MUIElement element : sharedWindow.getSharedElements()) { if (element.getElementId().equals(id)) { sharedPart = (MPart) element; break; } } } if (sharedPart == null) { MPartDescriptor descriptor = modelService.getPartDescriptor(id); sharedPart = createPart(descriptor); if (sharedPart == null) { return null; } // Replace the id to ensure that multi-instance parts work correctly sharedPart.setElementId(id); sharedWindow.getSharedElements().add(sharedPart); } return createSharedPart(sharedPart); }
@Override public void handleEvent(Event event) { final MUIElement changedElement = (MUIElement) event.getProperty(EventTags.ELEMENT); if (!changedElement.getTags().contains(HOSTED_ELEMENT)) { return; } if (changedElement.getWidget() != null) { return; } EObject eObj = (EObject) changedElement; if (!(eObj.eContainer() instanceof MWindow)) { return; } MWindow hostingWindow = (MWindow) eObj.eContainer(); hostingWindow.getSharedElements().remove(changedElement); changedElement.getTags().remove(HOSTED_ELEMENT); } };
@Override public boolean isPartOrPlaceholderInPerspective(String elementId, MPerspective perspective) { List<MPart> findElements = modelService.findElements(perspective, elementId, MPart.class, null); if (!findElements.isEmpty()) { MPart part = findElements.get(0); // if that is a shared part, check the placeholders if (workbenchWindow.getSharedElements().contains(part)) { List<MPlaceholder> placeholders = modelService.findElements(perspective, elementId, MPlaceholder.class, null); for (MPlaceholder mPlaceholder : placeholders) { if (mPlaceholder.isVisible() && mPlaceholder.isToBeRendered()) { return true; } } return false; } // not a shared part return part.isVisible() && part.isToBeRendered(); } return false; }
private MPlaceholder addPartToStickyFolder(String partId, MPartStack stickyFolder) { MPart part = null; MWindow window = modelService.getTopLevelWindowFor(stickyFolder); for (MUIElement element : window.getSharedElements()) { if (element.getElementId().equals(partId)) { part = (MPart) element; break; } } if (part == null) { part = modelService.createModelElement(MPart.class); part.setElementId(partId); part.setContributionURI(CompatibilityPart.COMPATIBILITY_VIEW_URI); part.getTags().add(ViewRegistry.VIEW_TAG); window.getSharedElements().add(part); } MPlaceholder placeholder = null; placeholder = modelService.createModelElement(MPlaceholder.class); placeholder.setElementId(partId); placeholder.setRef(part); placeholder.setToBeRendered(false); part.setCurSharedRef(placeholder); stickyFolder.getChildren().add(placeholder); return placeholder; }
for (MUIElement se : sharedElements) { if (ph.getElementId().equals(se.getElementId())) { ph.setRef(se); ph.setRef(sharedArea); return; if (newReferencedPart != null) { refWin.getSharedElements().add(newReferencedPart); ph.setRef(newReferencedPart); return;
tags.add(IPresentationEngine.WINDOW_MAXIMIZED_TAG); sharedElements = window.getSharedElements();
List<MUIElement> sharedElements = window.getSharedElements(); for (MUIElement element : sharedElements) { if (element.getElementId().equals(getEditorArea())) { sharedArea.setElementId(getEditorArea()); window.getSharedElements().add(sharedArea); } else { List<MPartStack> stacks = modelService.findElements(sharedArea, null, MPartStack.class);
updateLocalization(mainMenu.getChildren()); updateLocalization(window.getSharedElements()); updateLocalization(window.getWindows());