private String getTrimCache(MPerspective savedPersp) { MWindow topWin = modelService.getTopLevelWindowFor(savedPersp); StringBuilder cache = new StringBuilder(getWinCache(topWin, savedPersp)); for (MWindow dw : savedPersp.getWindows()) { cache.append(getWinCache(dw, savedPersp)); } return cache.toString(); }
/** * Removes the IPresentationEngine.HIDDEN_EXPLICITLY from the trimbar * entries. Having a separate logic for toolbars and toolcontrols would be * confusing for the user, hence we remove this tag for both these types * * @param toolbarModel */ private void removeHiddenTags(MToolControl toolControl) { MWindow mWindow = modelService.getTopLevelWindowFor(toolControl); List<MTrimElement> trimElements = modelService.findElements(mWindow, null, MTrimElement.class, null); for (MTrimElement trimElement : trimElements) { trimElement.getTags().remove(IPresentationEngine.HIDDEN_EXPLICITLY); } }
@Override public Image getImage(MUILabel element) { Image image = super.getImage(element); if (image == null && element instanceof MWindow) { // Detached windows should take their image from parent window MWindow parent = modelService.getTopLevelWindowFor((MWindow) element); if (parent != null && parent != element) { image = getImage(parent); } } return image; }
private MUIElement getModelElement(Control ctrl) { if (ctrl == null) return null; MUIElement element = (MUIElement) ctrl.getData(AbstractPartRenderer.OWNING_ME); if (element != null) { if (modelService.getTopLevelWindowFor(element) == topLevelWindow) return element; return null; } return getModelElement(ctrl.getParent()); }
public void handleEvent(Event event) { final MPerspective openedPersp = (MPerspective) event.getProperty(EventTags.ELEMENT); // Find any minimized stacks and show their trim MWindow topWin = modelService.getTopLevelWindowFor(openedPersp); showMinimizedTrim(topWin); for (MWindow dw : openedPersp.getWindows()) { showMinimizedTrim(dw); } }
private String getTrimCache(MPerspective savedPersp) { MWindow topWin = modelService.getTopLevelWindowFor(savedPersp); String perspIdStr = '(' + savedPersp.getElementId() + ')'; String cache = getWinCache(topWin, perspIdStr); for (MWindow dw : savedPersp.getWindows()) { cache += getWinCache(dw, perspIdStr); } return cache; }
private String getStackTrimLoc(MPartStack stack, String perspIdStr) { MWindow stackWin = modelService.getTopLevelWindowFor(stack);// getContainingWindow(stack); MUIElement tcElement = modelService.find(stack.getElementId() + perspIdStr, stackWin); if (tcElement == null) return ""; //$NON-NLS-1$ MTrimBar bar = (MTrimBar) ((MUIElement) tcElement.getParent()); int sideVal = bar.getSide().getValue(); int index = bar.getChildren().indexOf(tcElement); return stack.getElementId() + ' ' + sideVal + ' ' + index + "#"; //$NON-NLS-1$ } };
@Inject void handleSelectionEvent(@Optional @UIEventTopic(UIEvents.ElementContainer.TOPIC_SELECTEDELEMENT) Event event) { if (event == null) return; if (perspSwitcherToolbar.isDisposed()) { return; } MUIElement changedElement = (MUIElement) event.getProperty(UIEvents.EventTags.ELEMENT); if (perspSwitcherToolControl == null || !(changedElement instanceof MPerspectiveStack)) return; MWindow perspWin = modelService.getTopLevelWindowFor(changedElement); MWindow switcherWin = modelService.getTopLevelWindowFor(perspSwitcherToolControl); if (perspWin != switcherWin) return; MPerspectiveStack perspStack = (MPerspectiveStack) changedElement; if (!perspStack.isToBeRendered()) return; MPerspective selElement = perspStack.getSelectedElement(); for (ToolItem ti : perspSwitcherToolbar.getItems()) { ti.setSelection(ti.getData() == selElement); } }
private String getStackTrimLoc(MPartStack stack, MPerspective perspective) { MWindow stackWin = modelService.getTopLevelWindowFor(stack); MUIElement tcElement = modelService.find(TrimStackIdHelper.createTrimStackId(stack, perspective, stackWin), stackWin); if (tcElement == null) { return ""; //$NON-NLS-1$ } MTrimBar bar = (MTrimBar) ((MUIElement) tcElement.getParent()); int sideVal = bar.getSide().getValue(); int index = bar.getChildren().indexOf(tcElement); return stack.getElementId() + ' ' + sideVal + ' ' + index + "#"; //$NON-NLS-1$ }
@Inject void handleToBeRenderedEvent(@Optional @UIEventTopic(UIEvents.UIElement.TOPIC_TOBERENDERED) Event event) { if (event == null) return; if (perspSwitcherToolbar.isDisposed()) { return; } MUIElement changedElement = (MUIElement) event.getProperty(UIEvents.EventTags.ELEMENT); if (perspSwitcherToolControl == null || !(changedElement instanceof MPerspective)) return; MWindow perspWin = modelService.getTopLevelWindowFor(changedElement); MWindow switcherWin = modelService.getTopLevelWindowFor(perspSwitcherToolControl); if (perspWin != switcherWin) return; MPerspective persp = (MPerspective) changedElement; if (!persp.getParent().isToBeRendered()) return; if (changedElement.isToBeRendered()) { addPerspectiveItem(persp); } else { removePerspectiveItem(persp); } }
private MUIElement checkPerspectiveEdge(MUIElement dragElement, DnDInfo info) { MWindow win = dndManager.getModelService().getTopLevelWindowFor(dragElement); MPerspective persp = dndManager.getModelService().getActivePerspective(win); if (persp != null && persp.getWidget() instanceof Control) { Control ctrl = (Control) persp.getWidget(); if (checkEdge(info, ctrl)) { return persp; } } return null; }
List<CTabItem> getItemsToSet(MPart part) { List<CTabItem> itemsToSet = new ArrayList<>(); MUIElement partParent = part.getParent(); if (partParent instanceof MPartStack) { addItemToSet(itemsToSet, part); } else if (partParent instanceof MPartSashContainer) { MElementContainer<MUIElement> parentParent = partParent.getParent(); if (parentParent instanceof MPart) { MPart parentParentMPart = (MPart) parentParent; addItemToSet(itemsToSet, parentParentMPart); } } else if (part.getCurSharedRef() != null) { MWindow topWin = modelService.getTopLevelWindowFor(part); List<MPlaceholder> partRefs = modelService.findElements(topWin, part.getElementId(), MPlaceholder.class); for (MPlaceholder ref : partRefs) { CTabItem item = findItemForPart(ref, null); if (item != null) { itemsToSet.add(item); } } } return itemsToSet; }
void restore(MUIElement element) { if (isEmptyPerspectiveStack(element)) { element.setVisible(true); element.getTags().remove(MINIMIZED_BY_ZOOM); return; } MWindow window = modelService.getTopLevelWindowFor(element); String trimId = element.getElementId() + getMinimizedElementSuffix(element); MToolControl trimStack = (MToolControl) modelService.find(trimId, window); if (trimStack == null) return; TrimStack ts = (TrimStack) trimStack.getObject(); ts.restoreStack(); adjustCTFButtons(element); element.getTags().remove(MINIMIZED_BY_ZOOM); }
private boolean shouldActivate(@NonNull MPartStack stackToActivate) { if (inContentProcessing(stackToActivate)) { return false; } if (this.application != null) { IEclipseContext applicationContext = this.application.getContext(); IEclipseContext activeChild = applicationContext.getActiveChild(); if (activeChild == null || activeChild.get(MWindow.class) != this.application.getSelectedElement() || this.application.getSelectedElement() != this.modelService.getTopLevelWindowFor(stackToActivate)) { return false; } } return true; }
@Override public void mouseDown(MouseEvent e) { // HACK! If this is an empty stack treat it as though it was the editor area // and tear down any open trim stacks (see bug 384814) CTabFolder ctf = (CTabFolder) e.widget; MUIElement element = (MUIElement) ctf.getData(AbstractPartRenderer.OWNING_ME); if (element instanceof MPartStack && ctf.getItemCount() == 0) { MWindow window = modelService.getTopLevelWindowFor(element); if (window != null) { List<MToolControl> tcList = modelService.findElements(window, null, MToolControl.class, null); for (MToolControl tc : tcList) { if (tc.getObject() instanceof TrimStack) { TrimStack ts = (TrimStack) tc.getObject(); ts.showStack(false); } } } } }
public void mouseDown(MouseEvent e) { // HACK! If this is an empty stack treat it as though it was the editor area // and tear down any open trim stacks (see bug 384814) CTabFolder ctf = (CTabFolder) e.widget; MUIElement element = (MUIElement) ctf.getData(AbstractPartRenderer.OWNING_ME); if (element instanceof MPartStack && ctf.getItemCount() == 0) { MWindow window = modelService.getTopLevelWindowFor(element); if (window != null) { List<MToolControl> tcList = modelService.findElements(window, null, MToolControl.class, null); for (MToolControl tc : tcList) { if (tc.getObject() instanceof TrimStack) { TrimStack ts = (TrimStack) tc.getObject(); ts.showStack(false); } } } } }
/** * @param parent * @param toolControl */ private void createStatusLine(Composite parent, MToolControl toolControl) { IEclipseContext context = modelService.getContainingContext(toolControl); WorkbenchWindow wbw = (WorkbenchWindow) context.get(IWorkbenchWindow.class); // wbw may be null if workspace is started with no open perspectives. if (wbw == null) { // Create one assuming there's no defined perspective Workbench wb = (Workbench) PlatformUI.getWorkbench(); wb.createWorkbenchWindow(wb.getDefaultPageInput(), null, modelService.getTopLevelWindowFor(toolControl), false); wbw = (WorkbenchWindow) context.get(IWorkbenchWindow.class); } if (wbw != null) { Workbench wb = (Workbench) PlatformUI.getWorkbench(); wb.createWorkbenchWindow(wb.getDefaultPageInput(), null, modelService.getTopLevelWindowFor(toolControl), false); wbw = (WorkbenchWindow) context.get(IWorkbenchWindow.class); manager = wbw.getStatusLineManager(); manager.createControl(parent); } } }
void maximize(final MUIElement element) { if (!element.isToBeRendered()) { return; } List<MUIElement> elementsToMinimize = getElementsToMinimize(element); Shell hostShell = (Shell) modelService.getTopLevelWindowFor(element).getWidget(); MWindow win = MinMaxAddonUtil.getWindowFor(element); if (hostShell != null) { FaderAnimationFeedback fader = new FaderAnimationFeedback(hostShell); AnimationEngine engine = new AnimationEngine(win.getContext(), fader, 300); engine.schedule(); } // Restore any currently maximized element restoreMaximizedElement(element, win); for (MUIElement toMinimize : elementsToMinimize) { toMinimize.getTags().add(MINIMIZED); toMinimize.getTags().add(MINIMIZED_BY_ZOOM); } adjustCTFButtons(element); MinMaxAddonUtil.maximizeMinMaxChildrenArea(this, element); }
private void createMultiEditorChildren(IWorkbenchPart part, IEditorInput input) throws PartInitException { IWorkbenchPage page = reference.getPage(); MPart model = getModel(); MWindow window = modelService.getTopLevelWindowFor(model); IEditorRegistry registry = model.getContext().get(IEditorRegistry.class); MultiEditorInput multiEditorInput = (MultiEditorInput) input; IEditorInput[] inputs = multiEditorInput.getInput(); String[] editorIds = multiEditorInput.getEditors(); IEditorPart[] editors = new IEditorPart[editorIds.length]; for (int i = 0; i < editorIds.length; i++) { EditorDescriptor innerDesc = (EditorDescriptor) registry.findEditor(editorIds[i]); if (innerDesc == null) { throw new PartInitException(NLS.bind( WorkbenchMessages.EditorManager_unknownEditorIDMessage, editorIds[i])); } EditorReference innerReference = new EditorReference(window.getContext(), page, model, inputs[i], innerDesc, null); editors[i] = (IEditorPart) innerReference.createPart(); innerReference.initialize(editors[i]); } ((AbstractMultiEditor) part).setChildren(editors); }
/** * Do any widget specific logic hookup. We should break the model generic logic away from the * specific platform by moving this code into an SWT-specific subclass */ private void hookWidgets() { EventHandler stackWidgetHandler = event -> { MUIElement element = (MUIElement) event.getProperty(UIEvents.EventTags.ELEMENT); // Only add listeners for stacks in *this* window MWindow elementWin = getModelService().getTopLevelWindowFor(element); if (elementWin != dragWindow) { return; } // Listen for drags starting in CTabFolders if (element.getWidget() instanceof CTabFolder || element.getWidget() instanceof ImageBasedFrame) { Control ctrl = (Control) element.getWidget(); // Ensure there's only one drag detect listener per ctrl ctrl.removeDragDetectListener(dragDetector); ctrl.addDragDetectListener(dragDetector); } }; IEventBroker eventBroker = dragWindow.getContext().get(IEventBroker.class); eventBroker.subscribe(UIEvents.UIElement.TOPIC_WIDGET, stackWidgetHandler); }