private List<MStackElement> getRenderedViews(MPartStack stack) { List<MStackElement> renderedViews = new ArrayList<>(); for (MStackElement element : stack.getChildren()) { if (element.isToBeRendered()) { renderedViews.add(element); } } return renderedViews; }
@Override public void addPlaceholder(String viewId) { boolean containsWildcards = viewId.indexOf('?') != -1; if (containsWildcards) { E4Util.unsupported("IPageLayout.addPlacehoder(): wildcard in view id: " + viewId); //$NON-NLS-1$ return; } MStackElement viewModel = ModeledPageLayout.createViewModel(application, viewId, false, layout.page, layout.partService, layout.createReferences); if (viewModel != null) { folderModel.getChildren().add(viewModel); } }
private boolean hasRenderableContent(MPartStack stack) { for (MStackElement child : stack.getChildren()) { if (child.isVisible() && child.isToBeRendered()) { return true; } } return false; }
@Override public void addStandaloneViewPlaceholder(String viewId, int relationship, float ratio, String refId, boolean showTitle) { MUIElement newElement = insertView(viewId, relationship, ratio, refId, false, showTitle); if (newElement instanceof MPartStack) { MPartStack stack = (MPartStack) newElement; stack.getTags().add(IPresentationEngine.STANDALONE); stack.getChildren().get(0).getTags().add(IPresentationEngine.NO_MOVE); } else { newElement.getTags().add(IPresentationEngine.STANDALONE); } }
@Override public void addStandaloneView(String viewId, boolean showTitle, int relationship, float ratio, String refId) { MUIElement newElement = insertView(viewId, relationship, ratio, refId, true, showTitle); if (newElement instanceof MPartStack) { MPartStack stack = (MPartStack) newElement; stack.getTags().add(IPresentationEngine.STANDALONE); stack.getChildren().get(0).getTags().add(IPresentationEngine.NO_MOVE); } else { newElement.getTags().add(IPresentationEngine.STANDALONE); } }
/** * Wraps an element in a PartStack if it's a MPart or an MPlaceholder that references an MPart * * @param element * The element to be wrapped * @return The wrapper for the given element */ private MWindowElement wrapElementForWindow(MPartSashContainerElement element) { if (element instanceof MPlaceholder) { MUIElement ref = ((MPlaceholder) element).getRef(); if (ref instanceof MPart) { MPartStack newPS = MBasicFactory.INSTANCE.createPartStack(); newPS.getChildren().add((MPlaceholder) element); return newPS; } } else if (element instanceof MPart) { MPartStack newPS = MBasicFactory.INSTANCE.createPartStack(); newPS.getChildren().add((MPart) element); return newPS; } else if (element instanceof MWindowElement) { return (MWindowElement) element; } return null; }
private void addPlaceholderToDefaultFastViewStack(MPartStack stack, String partId, String label) { MPlaceholder placeholder = createPlaceHolder(partId, label); if (!isDefaultFastView(placeholder)) { placeholder.setToBeRendered(false); } addLayoutTagsToPlaceholder(placeholder, partId); stack.getChildren().add(placeholder); viewPlaceholders.put(partId, placeholder); }
private void addPlaceholderToStack(MPartStack stack, String partId, String label) { if (partId == null || isDefaultFastView(partId)) { return; } MPlaceholder placeholder = createPlaceHolder(partId, label); if (!isToBeRendered(placeholder)) { placeholder.setToBeRendered(false); } addLayoutTagsToPlaceholder(placeholder, partId); stack.getChildren().add(placeholder); viewPlaceholders.put(partId, placeholder); }
if (phParent instanceof MPartStack) { MPartStack theStack = (MPartStack) phParent; int phIndex = theStack.getChildren().indexOf(phList.get(0)); adjustPlaceholder(part); MPlaceholder placeholder = part.getCurSharedRef(); if (placeholder == null) { theStack.getChildren().add(phIndex, part); } else { theStack.getChildren().add(phIndex, placeholder);
@SuppressWarnings("null") @Override public void hideChild(MPartStack container, MUIElement changedObj) { WStack<N, I, IC> stack = getWidget(container); if (stack == null) { return; } WStackItem<I, IC> item = null; for (WStackItem<I, IC> i : stack.getItems()) { if (i.getDomElement() == changedObj) { item = i; break; } } if (item != null) { List<WStackItem<I, IC>> l = Collections.singletonList(item); stack.removeItems(l); } Boolean b = (Boolean) this.application.getContext().get("__efx_engine_shutdown"); //$NON-NLS-1$ if ((b == null || ! b.booleanValue()) && changedObj.getTags().contains(EPartService.REMOVE_ON_HIDE_TAG)) { container.getChildren().remove(changedObj); } } }
private void populatePartStack(MPartStack stack, InfoReader info) { for (PageReader page : info.getPages()) { addPlaceholderToStack(stack, page.getId(), page.getLabel()); } MStackElement selectedElement = (MStackElement) modelService.find(info.getActivePageId(), stack); if (selectedElement != null) { selectedElement.setToBeRendered(true); selectedElement.setVisible(true); } stack.setSelectedElement(selectedElement); // restore order of views in the stacks List<MStackElement> renderedViews = getRenderedViews(stack); if (renderedViews.size() < 2) { return; } int[] partOrder = info.getPartOrder(); List<MStackElement> stackChildren = stack.getChildren(); // unexpected situation - don't order if (partOrder == null || partOrder.length != renderedViews.size()) { return; } List<MStackElement> originalOrder = new ArrayList<>(renderedViews); stackChildren.clear(); for (int element : partOrder) { stackChildren.add(originalOrder.get(element)); } originalOrder.removeAll(stackChildren); stackChildren.addAll(originalOrder); }
parent.getChildren().removeAll(removeOnHideList);
if (viewModel != null) { MPartStack stack = (MPartStack) refModel; boolean wasEmpty = stack.getChildren().isEmpty(); stack.getChildren().add(viewModel); if (wasEmpty && toBeRendered) {
private MUIElement insertView(String viewId, int relationship, float ratio, String refId, boolean visible, boolean withStack) { // Hide views that are filtered by capabilities boolean isFiltered = isViewFiltered(viewId); MStackElement viewModel = createViewModel(application, viewId, visible && !isFiltered, page, partService, createReferences); MUIElement retVal = viewModel; if (viewModel != null) { if (withStack) { String stackId = viewId + "MStack"; // Default id...basically unusable //$NON-NLS-1$ MPartStack stack = insertStack(stackId, relationship, ratio, refId, visible & !isFiltered); stack.getChildren().add(viewModel); retVal = stack; } else { layoutUtils.insert(viewModel, findRefModel(refId), layoutUtils.plRelToSwt(relationship), ratio); } } if (isFiltered) { addViewActivator(viewModel); } return retVal; }
private void split(MUIElement toSplit, MUIElement child, @NonNull DropLocation dropType) { // remove the moved element from its parent child.setParent(null); // remember the index to insert MElementContainer<MUIElement> owner = toSplit.getParent(); int index = owner.getChildren().indexOf(toSplit); // remove the split from the parent owner.getChildren().remove(toSplit); MPartSashContainer container = this.modelService.createModelElement(MPartSashContainer.class); container.setContainerData(toSplit.getContainerData()); MPartStack childContainer = this.modelService.createModelElement(MPartStack.class); childContainer.getChildren().add((MStackElement) child); toSplit.setContainerData(null); childContainer.setContainerData(null); container.setToBeRendered(true); container.setVisible(true); container.setHorizontal(dropType == BasicDropLocation.SPLIT_LEFT || dropType == BasicDropLocation.SPLIT_RIGHT); if( dropType == BasicDropLocation.SPLIT_TOP || dropType == BasicDropLocation.SPLIT_LEFT ) { container.getChildren().add((MPartSashContainerElement) childContainer); container.getChildren().add((MPartSashContainerElement) toSplit); } else { container.getChildren().add((MPartSashContainerElement) toSplit); container.getChildren().add((MPartSashContainerElement) childContainer); } owner.getChildren().add(index, container); }
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; }
@Override public void addView(String viewId) { MStackElement viewModel = ModeledPageLayout.createViewModel(application, viewId, true, layout.page, layout.partService, layout.createReferences); if (viewModel != null) { // adding a non-placeholder to this folder, make sure the folder // will be rendered MUIElement parent = folderModel.getParent(); while (parent != null && !(parent instanceof MPerspective)) { parent.setToBeRendered(true); parent = parent.getParent(); } folderModel.setToBeRendered(true); boolean isFiltered = layout.isViewFiltered(viewId); if (isFiltered) layout.addViewActivator(viewModel); viewModel.setToBeRendered(!isFiltered); folderModel.getChildren().add(viewModel); } } }
void handleSelectedElement(final @NonNull MPartStack parent, @Nullable final MStackElement oldElement, @Nullable final MStackElement _newElement) { MStackElement newElement = _newElement; if( newElement == null ) { return; } WStack<N, I, IC> stack = getWidget(parent); if( stack == null ) { getLogger().error("Could not find widget for '"+parent+"'"); //$NON-NLS-1$ //$NON-NLS-2$ return; } int idx = 0; for (WStackItem<I, IC> i : stack.getItems()) { if (i.getDomElement() == newElement) { stack.selectItem(idx); fixContextHierarchy(newElement); return; } idx++; } // Looks like the child is not part of the UI yet (most likely because // it got removed using IPR#removeGUI) childRendered(parent, newElement); stack.selectItem(parent.getChildren().indexOf(newElement)); // TODO Should we do the traversal before??? fixContextHierarchy(newElement); activateLeafPart(newElement); }
toInsert.getChildren().add(stackElement); toInsert.setSelectedElement(stackElement);
if (dragParent == dropStack && dropStack.getChildren().size() == 2) return false;