Search in sources :

Example 1 with EContextService

use of org.eclipse.e4.ui.services.EContextService in project eclipse.platform.ui by eclipse-platform.

the class BindingLookupTest method testLookupAllShortcutsWithChild.

@Test
public void testLookupAllShortcutsWithChild() {
    ECommandService cs = workbenchContext.get(ECommandService.class);
    ParameterizedCommand cmd = cs.createCommand(TEST_ID1, null);
    EBindingService wBS = workbenchContext.get(EBindingService.class);
    TriggerSequence seq2 = wBS.createSequence("ALT+5 X");
    Binding db2 = createDefaultBinding(wBS, seq2, cmd, ID_DIALOG_AND_WINDOW);
    wBS.activateBinding(db2);
    IEclipseContext c1 = workbenchContext.createChild("c1");
    c1.activate();
    EContextService es = c1.get(EContextService.class);
    es.activateContext(ID_WINDOW);
    EBindingService bs1 = c1.get(EBindingService.class);
    TriggerSequence seq = bs1.createSequence("CTRL+5 T");
    Binding db = createDefaultBinding(wBS, seq, cmd, ID_WINDOW);
    bs1.activateBinding(db);
    // the list will always be ordered
    ArrayList<TriggerSequence> list = new ArrayList<>();
    list.add(seq);
    list.add(seq2);
    assertEquals(list, wBS.getSequencesFor(cmd));
}
Also used : Binding(org.eclipse.jface.bindings.Binding) TriggerSequence(org.eclipse.jface.bindings.TriggerSequence) EBindingService(org.eclipse.e4.ui.bindings.EBindingService) IEclipseContext(org.eclipse.e4.core.contexts.IEclipseContext) ArrayList(java.util.ArrayList) EContextService(org.eclipse.e4.ui.services.EContextService) ParameterizedCommand(org.eclipse.core.commands.ParameterizedCommand) ECommandService(org.eclipse.e4.core.commands.ECommandService) Test(org.junit.Test)

Example 2 with EContextService

use of org.eclipse.e4.ui.services.EContextService in project eclipse.platform.ui by eclipse-platform.

the class BindingLookupTest method testLookupShortcutsTwoChildren.

@Test
public void testLookupShortcutsTwoChildren() {
    ECommandService cs = workbenchContext.get(ECommandService.class);
    ParameterizedCommand cmd1 = cs.createCommand(TEST_ID1, null);
    ParameterizedCommand cmd2 = cs.createCommand(TEST_ID2, null);
    EBindingService wBS = workbenchContext.get(EBindingService.class);
    TriggerSequence seq = wBS.createSequence("CTRL+5 T");
    IEclipseContext c1 = workbenchContext.createChild("c1");
    c1.activate();
    EContextService es = c1.get(EContextService.class);
    es.activateContext(ID_WINDOW);
    EBindingService bs1 = c1.get(EBindingService.class);
    Binding db = createDefaultBinding(bs1, seq, cmd1, ID_WINDOW);
    bs1.activateBinding(db);
    IEclipseContext c2 = workbenchContext.createChild("c2");
    EContextService es2 = c2.get(EContextService.class);
    es2.activateContext(ID_DIALOG);
    EBindingService bs2 = c2.get(EBindingService.class);
    Binding db2 = createDefaultBinding(bs2, seq, cmd2, ID_DIALOG);
    bs2.activateBinding(db2);
    assertEquals(seq, wBS.getBestSequenceFor(cmd1));
    assertNull(wBS.getBestSequenceFor(cmd2));
    assertEquals(seq, bs1.getBestSequenceFor(cmd1));
    assertNull(bs1.getBestSequenceFor(cmd2));
    assertEquals(seq, bs2.getBestSequenceFor(cmd2));
    assertNull(bs2.getBestSequenceFor(cmd1));
}
Also used : Binding(org.eclipse.jface.bindings.Binding) TriggerSequence(org.eclipse.jface.bindings.TriggerSequence) EBindingService(org.eclipse.e4.ui.bindings.EBindingService) IEclipseContext(org.eclipse.e4.core.contexts.IEclipseContext) EContextService(org.eclipse.e4.ui.services.EContextService) ParameterizedCommand(org.eclipse.core.commands.ParameterizedCommand) ECommandService(org.eclipse.e4.core.commands.ECommandService) Test(org.junit.Test)

Example 3 with EContextService

use of org.eclipse.e4.ui.services.EContextService in project eclipse.platform.ui by eclipse-platform.

the class WorkbenchWindow method setup.

@PostConstruct
public void setup() {
    try {
        // if workbench window is opened as a result of command execution,
        // the context in which the new workbench window's commands are
        // initialized has to to match the workbench context
        final IEclipseContext windowContext = model.getContext();
        HandlerServiceImpl.push(windowContext.getParent(), null);
        // update the preference store.
        if (getModel().getPersistedState().containsKey(IPreferenceConstants.COOLBAR_VISIBLE)) {
            this.coolBarVisible = Boolean.parseBoolean(getModel().getPersistedState().get(IPreferenceConstants.COOLBAR_VISIBLE));
        } else {
            this.coolBarVisible = PrefUtil.getInternalPreferenceStore().getBoolean(IPreferenceConstants.COOLBAR_VISIBLE);
            getModel().getPersistedState().put(IPreferenceConstants.COOLBAR_VISIBLE, Boolean.toString(this.coolBarVisible));
        }
        if (getModel().getPersistedState().containsKey(IPreferenceConstants.PERSPECTIVEBAR_VISIBLE)) {
            this.perspectiveBarVisible = Boolean.parseBoolean(getModel().getPersistedState().get(IPreferenceConstants.PERSPECTIVEBAR_VISIBLE));
        } else {
            this.perspectiveBarVisible = PrefUtil.getInternalPreferenceStore().getBoolean(IPreferenceConstants.PERSPECTIVEBAR_VISIBLE);
            getModel().getPersistedState().put(IPreferenceConstants.PERSPECTIVEBAR_VISIBLE, Boolean.toString(this.perspectiveBarVisible));
        }
        IServiceLocatorCreator slc = workbench.getService(IServiceLocatorCreator.class);
        this.serviceLocator = (ServiceLocator) slc.createServiceLocator(workbench, null, () -> {
            final Shell shell = getShell();
            if (shell != null && !shell.isDisposed()) {
                close();
            }
        }, windowContext);
        windowContext.set(IExtensionTracker.class.getName(), new ContextFunction() {

            @Override
            public Object compute(IEclipseContext context, String contextKey) {
                if (tracker == null) {
                    tracker = new UIExtensionTracker(getWorkbench().getDisplay());
                }
                return tracker;
            }
        });
        windowContext.set(IWindowCloseHandler.class.getName(), (IWindowCloseHandler) window -> getWindowAdvisor().preWindowShellClose() && WorkbenchWindow.this.close());
        final ISaveHandler defaultSaveHandler = windowContext.get(ISaveHandler.class);
        final PartServiceSaveHandler localSaveHandler = new WWinPartServiceSaveHandler() {

            @Override
            public Save promptToSave(MPart dirtyPart) {
                Object object = dirtyPart.getObject();
                if (object instanceof CompatibilityPart) {
                    IWorkbenchPart part = ((CompatibilityPart) object).getPart();
                    ISaveablePart saveable = SaveableHelper.getSaveable(part);
                    if (saveable != null) {
                        if (!saveable.isSaveOnCloseNeeded()) {
                            return Save.NO;
                        }
                        return SaveableHelper.savePart(saveable, part, WorkbenchWindow.this, true) ? Save.NO : Save.CANCEL;
                    }
                }
                return defaultSaveHandler.promptToSave(dirtyPart);
            }

            @Override
            public Save[] promptToSave(Collection<MPart> dirtyParts) {
                LabelProvider labelProvider = new LabelProvider() {

                    @Override
                    public String getText(Object element) {
                        return ((MPart) element).getLocalizedLabel();
                    }
                };
                List<MPart> parts = new ArrayList<>(dirtyParts);
                ListSelectionDialog dialog = new ListSelectionDialog(getShell(), parts, ArrayContentProvider.getInstance(), labelProvider, WorkbenchMessages.EditorManager_saveResourcesMessage);
                dialog.setInitialSelections(parts.toArray());
                dialog.setTitle(WorkbenchMessages.EditorManager_saveResourcesTitle);
                if (dialog.open() == IDialogConstants.CANCEL_ID) {
                    return new Save[] { Save.CANCEL };
                }
                Object[] toSave = dialog.getResult();
                Save[] retSaves = new Save[parts.size()];
                Arrays.fill(retSaves, Save.NO);
                for (int i = 0; i < retSaves.length; i++) {
                    MPart part = parts.get(i);
                    for (Object o : toSave) {
                        if (o == part) {
                            retSaves[i] = Save.YES;
                            break;
                        }
                    }
                }
                return retSaves;
            }

            @Override
            public boolean save(MPart dirtyPart, boolean confirm) {
                Object object = dirtyPart.getObject();
                if (object instanceof CompatibilityPart) {
                    IWorkbenchPart workbenchPart = ((CompatibilityPart) object).getPart();
                    if (SaveableHelper.isSaveable(workbenchPart)) {
                        SaveablesList saveablesList = (SaveablesList) PlatformUI.getWorkbench().getService(ISaveablesLifecycleListener.class);
                        Object saveResult = saveablesList.preCloseParts(Collections.singletonList(workbenchPart), true, WorkbenchWindow.this);
                        return saveResult != null;
                    }
                } else if (isSaveOnCloseNotNeededSplitEditorPart(dirtyPart)) {
                    return true;
                }
                return super.save(dirtyPart, confirm);
            }

            private boolean saveParts(ArrayList<MPart> dirtyParts, Save[] decisions) {
                if (decisions == null || decisions.length == 0) {
                    super.saveParts(dirtyParts, true);
                }
                if (dirtyParts.size() != decisions.length) {
                    for (Save decision : decisions) {
                        if (decision == Save.CANCEL) {
                            return false;
                        }
                    }
                }
                List<MPart> dirtyPartsList = Collections.unmodifiableList(new ArrayList<>(dirtyParts));
                for (Save decision : decisions) {
                    if (decision == Save.CANCEL) {
                        return false;
                    }
                }
                for (int i = 0; i < decisions.length; i++) {
                    if (decisions[i] == Save.YES) {
                        if (!save(dirtyPartsList.get(i), false)) {
                            return false;
                        }
                    }
                }
                return true;
            }

            private boolean saveMixedParts(ArrayList<MPart> nonCompParts, ArrayList<IWorkbenchPart> compParts, boolean confirm, boolean addNonPartSources) {
                SaveablesList saveablesList = (SaveablesList) PlatformUI.getWorkbench().getService(ISaveablesLifecycleListener.class);
                if (!confirm) {
                    boolean saved = super.saveParts(nonCompParts, confirm);
                    Object saveResult = saveablesList.preCloseParts(compParts, true, WorkbenchWindow.this);
                    return ((saveResult != null) && saved);
                }
                LabelProvider labelProvider = new LabelProvider() {

                    WorkbenchPartLabelProvider workbenchLabelProvider = new WorkbenchPartLabelProvider();

                    @Override
                    public String getText(Object element) {
                        if (element instanceof Saveable) {
                            return workbenchLabelProvider.getText(element);
                        }
                        return ((MPart) element).getLocalizedLabel();
                    }
                };
                ArrayList<Object> listParts = new ArrayList<>();
                Map<IWorkbenchPart, List<Saveable>> saveableMap = saveablesList.getSaveables(compParts);
                listParts.addAll(nonCompParts);
                LinkedHashSet<Saveable> saveablesSet = new LinkedHashSet<>();
                for (IWorkbenchPart workbenchPart : compParts) {
                    List<Saveable> list = saveableMap.get(workbenchPart);
                    if (list != null) {
                        saveablesSet.addAll(list);
                    }
                }
                if (addNonPartSources) {
                    for (ISaveablesSource nonPartSource : saveablesList.getNonPartSources()) {
                        Saveable[] saveables = nonPartSource.getSaveables();
                        for (Saveable saveable : saveables) {
                            if (saveable.isDirty()) {
                                saveablesSet.add(saveable);
                            }
                        }
                    }
                }
                listParts.addAll(saveablesSet);
                ListSelectionDialog dialog = new ListSelectionDialog(getShell(), listParts, ArrayContentProvider.getInstance(), labelProvider, WorkbenchMessages.EditorManager_saveResourcesMessage);
                dialog.setInitialSelections(listParts.toArray());
                dialog.setTitle(WorkbenchMessages.EditorManager_saveResourcesTitle);
                if (dialog.open() == IDialogConstants.CANCEL_ID) {
                    return false;
                }
                Object[] toSave = dialog.getResult();
                Save[] nonCompatSaves = new Save[nonCompParts.size()];
                Save[] compatSaves = new Save[saveablesSet.size()];
                Arrays.fill(nonCompatSaves, Save.NO);
                Arrays.fill(compatSaves, Save.NO);
                for (int i = 0; i < nonCompatSaves.length; i++) {
                    MPart part = nonCompParts.get(i);
                    for (Object o : toSave) {
                        if (o == part) {
                            nonCompatSaves[i] = Save.YES;
                            break;
                        }
                    }
                }
                Map<Saveable, Save> saveOptionMap = new HashMap<>();
                for (Saveable saveable : saveablesSet) {
                    boolean found = false;
                    for (Object o : toSave) {
                        if (o == saveable) {
                            saveOptionMap.put(saveable, Save.YES);
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        saveOptionMap.put(saveable, Save.NO);
                    }
                }
                boolean saved = saveParts(nonCompParts, nonCompatSaves);
                if (!saved) {
                    return saved;
                }
                Object saveResult = saveablesList.preCloseParts(compParts, false, true, WorkbenchWindow.this, saveOptionMap);
                return ((saveResult != null) && saved);
            }

            private void removeSaveOnCloseNotNeededParts(List<IWorkbenchPart> parts) {
                for (Iterator<IWorkbenchPart> it = parts.iterator(); it.hasNext(); ) {
                    IWorkbenchPart part = it.next();
                    ISaveablePart saveable = SaveableHelper.getSaveable(part);
                    if (saveable == null || !saveable.isSaveOnCloseNeeded()) {
                        it.remove();
                    }
                }
            }

            private void removeSaveOnCloseNotNeededSplitEditorParts(List<MPart> parts) {
                for (Iterator<MPart> it = parts.iterator(); it.hasNext(); ) {
                    MPart part = it.next();
                    if (isSaveOnCloseNotNeededSplitEditorPart(part)) {
                        it.remove();
                    }
                }
            }

            private boolean isSaveOnCloseNotNeededSplitEditorPart(MPart part) {
                boolean notNeeded = false;
                if (part instanceof MCompositePart && SplitHost.SPLIT_HOST_CONTRIBUTOR_URI.equals(part.getContributionURI())) {
                    MCompositePart compPart = (MCompositePart) part;
                    List<MPart> elements = modelService.findElements(compPart, null, MPart.class);
                    if (elements != null && elements.size() > 1) {
                        elements.remove(0);
                        for (MPart mpart : elements) {
                            Object object = mpart.getObject();
                            if (object instanceof CompatibilityPart) {
                                IWorkbenchPart workbenchPart = ((CompatibilityPart) object).getPart();
                                if (!SaveableHelper.isSaveable(workbenchPart)) {
                                    notNeeded = true;
                                } else {
                                    ISaveablePart saveable = SaveableHelper.getSaveable(workbenchPart);
                                    if (saveable == null || !saveable.isSaveOnCloseNeeded()) {
                                        notNeeded = true;
                                    } else {
                                        notNeeded = false;
                                        break;
                                    }
                                }
                            } else {
                                notNeeded = false;
                                break;
                            }
                        }
                    }
                }
                return notNeeded;
            }

            @Override
            public boolean saveParts(Collection<MPart> dirtyParts, boolean confirm, boolean closing, boolean addNonPartSources) {
                ArrayList<IWorkbenchPart> saveableParts = new ArrayList<>();
                ArrayList<MPart> nonCompatibilityParts = new ArrayList<>();
                for (MPart part : dirtyParts) {
                    Object object = part.getObject();
                    if (object instanceof CompatibilityPart) {
                        IWorkbenchPart workbenchPart = ((CompatibilityPart) object).getPart();
                        if (SaveableHelper.isSaveable(workbenchPart)) {
                            saveableParts.add(workbenchPart);
                        }
                    } else {
                        nonCompatibilityParts.add(part);
                    }
                }
                if (!saveableParts.isEmpty() && closing) {
                    removeSaveOnCloseNotNeededParts(saveableParts);
                }
                if (!nonCompatibilityParts.isEmpty() && closing) {
                    removeSaveOnCloseNotNeededSplitEditorParts(nonCompatibilityParts);
                }
                if (saveableParts.isEmpty()) {
                    if (nonCompatibilityParts.isEmpty()) {
                        // nothing to save
                        return true;
                    }
                    return super.saveParts(nonCompatibilityParts, confirm);
                } else if (!nonCompatibilityParts.isEmpty()) {
                    return saveMixedParts(nonCompatibilityParts, saveableParts, confirm, addNonPartSources);
                }
                SaveablesList saveablesList = (SaveablesList) PlatformUI.getWorkbench().getService(ISaveablesLifecycleListener.class);
                Object saveResult = saveablesList.preCloseParts(saveableParts, addNonPartSources, true, WorkbenchWindow.this, WorkbenchWindow.this);
                return (saveResult != null);
            }

            @Override
            public boolean saveParts(Collection<MPart> dirtyParts, boolean confirm) {
                return saveParts(dirtyParts, confirm, false, false);
            }
        };
        localSaveHandler.logger = logger;
        windowContext.set(ISaveHandler.class, localSaveHandler);
        windowContext.set(IWorkbenchWindow.class.getName(), this);
        windowContext.set(IPageService.class, this);
        windowContext.set(IPartService.class, partService);
        windowContext.set(ISources.ACTIVE_WORKBENCH_WINDOW_NAME, this);
        windowContext.set(ISources.ACTIVE_WORKBENCH_WINDOW_SHELL_NAME, getShell());
        EContextService cs = windowContext.get(EContextService.class);
        cs.activateContext(IContextService.CONTEXT_ID_WINDOW);
        cs.getActiveContextIds();
        initializeDefaultServices();
        /*
			 * Remove the second QuickAccess control if an older workspace is opened.
			 *
			 * An older workspace will create an ApplicationModel which already contains the
			 * QuickAccess elements, from the old "popuolateTopTrimContribution()" method.
			 * The new implementation of this method doesn't add the QuickAccess elements
			 * anymore but an old workbench.xmi still has these entries in it and so they
			 * need to be removed.
			 */
        cleanLegacyQuickAccessContribution();
        // register with the tracker
        fireWindowOpening();
        configureShell(getShell(), windowContext);
        try {
            page = new WorkbenchPage(this, input);
        } catch (WorkbenchException e) {
            WorkbenchPlugin.log(e);
        }
        menuOverride = new MenuOverrides(page);
        toolbarOverride = new ToolbarOverrides(page);
        ContextInjectionFactory.inject(page, model.getContext());
        windowContext.set(IWorkbenchPage.class, page);
        menuManager.setOverrides(menuOverride);
        ((CoolBarToTrimManager) getCoolBarManager2()).setOverrides(toolbarOverride);
        // Fill the action bars
        fillActionBars(FILL_ALL_ACTION_BARS);
        firePageOpened();
        populateTopTrimContributions();
        populateBottomTrimContributions();
        // Trim gets populated during rendering (?) so make sure we have al/
        // sides. See bug 383269 for details
        modelService.getTrim(model, SideValue.LEFT);
        modelService.getTrim(model, SideValue.RIGHT);
        // move the QuickAccess ToolControl to the correct position (only if
        // it exists)
        positionQuickAccess();
        Shell shell = (Shell) model.getWidget();
        if (model.getMainMenu() == null) {
            mainMenu = modelService.createModelElement(MMenu.class);
            mainMenu.setElementId(IWorkbenchConstants.MAIN_MENU_ID);
            mainMenu.getPersistedState().put(org.eclipse.e4.ui.workbench.IWorkbench.PERSIST_STATE, Boolean.FALSE.toString());
            renderer = (MenuManagerRenderer) rendererFactory.getRenderer(mainMenu, null);
            renderer.linkModelToManager(mainMenu, menuManager);
            renderer.reconcileManagerToModel(menuManager, mainMenu);
            model.setMainMenu(mainMenu);
            final Menu menu = (Menu) engine.createGui(mainMenu, model.getWidget(), model.getContext());
            shell.setMenuBar(menu);
            menuUpdater = () -> {
                try {
                    if (model.getMainMenu() == null || model.getWidget() == null || menu.isDisposed() || mainMenu.getWidget() == null) {
                        return;
                    }
                    MenuManagerRendererFilter.updateElementVisibility(mainMenu, renderer, menuManager, windowContext.getActiveLeaf(), 1, false);
                    menuManager.update(true);
                } finally {
                    canUpdateMenus = true;
                }
            };
            RunAndTrack menuChangeManager = new RunAndTrack() {

                @Override
                public boolean changed(IEclipseContext context) {
                    ExpressionInfo info = new ExpressionInfo();
                    IEclipseContext leafContext = windowContext.getActiveLeaf();
                    MenuManagerRendererFilter.collectInfo(info, mainMenu, renderer, leafContext, true);
                    // if one of these variables change, re-run the RAT
                    for (String name : info.getAccessedVariableNames()) {
                        leafContext.get(name);
                    }
                    if (canUpdateMenus && workbench.getDisplay() != null) {
                        canUpdateMenus = false;
                        workbench.getDisplay().asyncExec(menuUpdater);
                    }
                    return manageChanges;
                }
            };
            windowContext.runAndTrack(menuChangeManager);
        }
        eventBroker.subscribe(UIEvents.UIElement.TOPIC_WIDGET, windowWidgetHandler);
        boolean newWindow = setupPerspectiveStack(windowContext);
        partService.setPage(page);
        page.setPerspective(perspective);
        firePageActivated();
        if (newWindow) {
            page.fireInitialPartVisibilityEvents();
        } else {
            page.updatePerspectiveActionSets();
        }
        updateActionSets();
        IPreferenceStore preferenceStore = PrefUtil.getAPIPreferenceStore();
        boolean enableAnimations = preferenceStore.getBoolean(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS);
        preferenceStore.setValue(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS, false);
        // Hack!! don't show the intro if there's more than one open
        // perspective
        List<MPerspective> persps = modelService.findElements(model, null, MPerspective.class, null);
        if (persps.size() > 1) {
            PrefUtil.getAPIPreferenceStore().setValue(IWorkbenchPreferenceConstants.SHOW_INTRO, false);
            PrefUtil.saveAPIPrefs();
        }
        if (Boolean.parseBoolean(getModel().getPersistedState().get(PERSISTED_STATE_RESTORED))) {
            SafeRunnable.run(new SafeRunnable() {

                @Override
                public void run() throws Exception {
                    getWindowAdvisor().postWindowRestore();
                }
            });
        } else {
            getModel().getPersistedState().put(PERSISTED_STATE_RESTORED, Boolean.TRUE.toString());
        }
        getWindowAdvisor().postWindowCreate();
        getWindowAdvisor().openIntro();
        preferenceStore.setValue(IWorkbenchPreferenceConstants.ENABLE_ANIMATIONS, enableAnimations);
        getShell().setData(this);
        trackShellActivation();
        /**
         * When SWT zoom changes for primary monitor, prompt user to restart Eclipse to
         * apply the changes.
         */
        getShell().addListener(SWT.ZoomChanged, event -> {
            if (getShell().getDisplay().getPrimaryMonitor().equals(getShell().getMonitor())) {
                int dialogResponse = MessageDialog.open(MessageDialog.QUESTION, getShell(), WorkbenchMessages.Workbench_zoomChangedTitle, WorkbenchMessages.Workbench_zoomChangedMessage, SWT.NONE, WorkbenchMessages.Workbench_RestartButton, WorkbenchMessages.Workbench_DontRestartButton);
                if (event.doit && dialogResponse == 0) {
                    getWorkbenchImpl().restart(true);
                }
            }
        });
    } finally {
        HandlerServiceImpl.pop();
    }
}
Also used : Arrays(java.util.Arrays) ModeledPageLayout(org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout) UIListenerLogging(org.eclipse.ui.internal.misc.UIListenerLogging) IWorkbenchWindow(org.eclipse.ui.IWorkbenchWindow) EventHandler(org.osgi.service.event.EventHandler) IDialogConstants(org.eclipse.jface.dialogs.IDialogConstants) IServiceLocatorCreator(org.eclipse.ui.internal.services.IServiceLocatorCreator) Point(org.eclipse.swt.graphics.Point) IUpdateService(org.eclipse.e4.ui.internal.workbench.renderers.swt.IUpdateService) PropertyChangeEvent(org.eclipse.jface.util.PropertyChangeEvent) Map(java.util.Map) HandlerServiceImpl(org.eclipse.e4.core.commands.internal.HandlerServiceImpl) IServiceScopes(org.eclipse.ui.services.IServiceScopes) MCompositePart(org.eclipse.e4.ui.model.application.ui.basic.MCompositePart) IWindowCloseHandler(org.eclipse.e4.ui.workbench.modeling.IWindowCloseHandler) MessageDialog(org.eclipse.jface.dialogs.MessageDialog) MApplication(org.eclipse.e4.ui.model.application.MApplication) ServiceLocator(org.eclipse.ui.internal.services.ServiceLocator) ISaveablePart(org.eclipse.ui.ISaveablePart) EContextService(org.eclipse.e4.ui.services.EContextService) LegacyActionPersistence(org.eclipse.ui.internal.menus.LegacyActionPersistence) IEvaluationService(org.eclipse.ui.services.IEvaluationService) PlatformUI(org.eclipse.ui.PlatformUI) MenuManager(org.eclipse.jface.action.MenuManager) IActionSetDescriptor(org.eclipse.ui.internal.registry.IActionSetDescriptor) Assert(org.eclipse.core.runtime.Assert) Set(java.util.Set) IHandler(org.eclipse.core.commands.IHandler) InvocationTargetException(java.lang.reflect.InvocationTargetException) MTrimElement(org.eclipse.e4.ui.model.application.ui.basic.MTrimElement) GroupMarker(org.eclipse.jface.action.GroupMarker) ExpressionInfo(org.eclipse.core.expressions.ExpressionInfo) WorkbenchPartLabelProvider(org.eclipse.ui.model.WorkbenchPartLabelProvider) Saveable(org.eclipse.ui.Saveable) MTrimmedWindow(org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow) TrimBarLayout(org.eclipse.e4.ui.workbench.renderers.swt.TrimBarLayout) SWT(org.eclipse.swt.SWT) SlaveCommandService(org.eclipse.ui.internal.commands.SlaveCommandService) IPageService(org.eclipse.ui.IPageService) MToolControl(org.eclipse.e4.ui.model.application.ui.menu.MToolControl) IActionSetsListener(org.eclipse.ui.internal.menus.IActionSetsListener) MPerspective(org.eclipse.e4.ui.model.application.ui.advanced.MPerspective) IWorkbenchPartReference(org.eclipse.ui.IWorkbenchPartReference) UIEventTopic(org.eclipse.e4.ui.di.UIEventTopic) SelectionService(org.eclipse.ui.internal.e4.compatibility.SelectionService) BusyIndicator(org.eclipse.swt.custom.BusyIndicator) EPartService(org.eclipse.e4.ui.workbench.modeling.EPartService) ICoolBarManager2(org.eclipse.jface.internal.provisional.action.ICoolBarManager2) ICommandService(org.eclipse.ui.commands.ICommandService) ListenerList(org.eclipse.core.runtime.ListenerList) Position(org.eclipse.e4.ui.model.internal.Position) MUIElement(org.eclipse.e4.ui.model.application.ui.MUIElement) SplitHost(org.eclipse.e4.ui.workbench.addons.splitteraddon.SplitHost) ArrayList(java.util.ArrayList) SideValue(org.eclipse.e4.ui.model.application.ui.SideValue) IWorkbenchPart(org.eclipse.ui.IWorkbenchPart) MPerspectiveStack(org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack) IConfigurationElement(org.eclipse.core.runtime.IConfigurationElement) MWindow(org.eclipse.e4.ui.model.application.ui.basic.MWindow) IPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener) LinkedHashSet(java.util.LinkedHashSet) IActionCommandMappingService(org.eclipse.ui.internal.handlers.IActionCommandMappingService) LegacyHandlerService(org.eclipse.ui.internal.handlers.LegacyHandlerService) Shell(org.eclipse.swt.widgets.Shell) MMenu(org.eclipse.e4.ui.model.application.ui.menu.MMenu) MenuManagerRenderer(org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer) ActiveShellExpression(org.eclipse.ui.ActiveShellExpression) EcoreUtil(org.eclipse.emf.ecore.util.EcoreUtil) ISaveablesLifecycleListener(org.eclipse.ui.ISaveablesLifecycleListener) IEvaluationContext(org.eclipse.core.expressions.IEvaluationContext) IPresentationEngine(org.eclipse.e4.ui.workbench.IPresentationEngine) ActionCommandMappingService(org.eclipse.ui.internal.handlers.ActionCommandMappingService) ShellAdapter(org.eclipse.swt.events.ShellAdapter) PrefUtil(org.eclipse.ui.internal.util.PrefUtil) MenuManagerRendererFilter(org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRendererFilter) EModelService(org.eclipse.e4.ui.workbench.modeling.EModelService) CustomizePerspectiveDialog(org.eclipse.ui.internal.dialogs.cpd.CustomizePerspectiveDialog) IMenuManager(org.eclipse.jface.action.IMenuManager) SubContributionItem(org.eclipse.jface.action.SubContributionItem) IContextService(org.eclipse.ui.contexts.IContextService) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress) Platform(org.eclipse.core.runtime.Platform) ModalContext(org.eclipse.jface.operation.ModalContext) IEventBroker(org.eclipse.e4.core.services.events.IEventBroker) StartupRunnable(org.eclipse.ui.internal.StartupThreading.StartupRunnable) Event(org.osgi.service.event.Event) IPartService(org.eclipse.ui.IPartService) CoolBarManager2(org.eclipse.jface.internal.provisional.action.CoolBarManager2) IExtensionTracker(org.eclipse.core.runtime.dynamichelpers.IExtensionTracker) ContextInjectionFactory(org.eclipse.e4.core.contexts.ContextInjectionFactory) UIEvents(org.eclipse.e4.ui.workbench.UIEvents) WorkbenchException(org.eclipse.ui.WorkbenchException) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) WorkbenchAdvisor(org.eclipse.ui.application.WorkbenchAdvisor) URIHelper(org.eclipse.e4.ui.internal.workbench.URIHelper) TextProcessor(org.eclipse.osgi.util.TextProcessor) IAction(org.eclipse.jface.action.IAction) IMenuService(org.eclipse.ui.menus.IMenuService) IWorkbenchRegistryConstants(org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants) IToolBarManager(org.eclipse.jface.action.IToolBarManager) ISaveablesSource(org.eclipse.ui.ISaveablesSource) UIExtensionTracker(org.eclipse.ui.internal.registry.UIExtensionTracker) SlaveMenuService(org.eclipse.ui.internal.menus.SlaveMenuService) PreDestroy(javax.annotation.PreDestroy) ActionHandler(org.eclipse.jface.commands.ActionHandler) IExtensionRegistry(org.eclipse.core.runtime.IExtensionRegistry) PositionInfo(org.eclipse.e4.ui.model.internal.PositionInfo) IToolBarManager2(org.eclipse.jface.internal.provisional.action.IToolBarManager2) MMenuElement(org.eclipse.e4.ui.model.application.ui.menu.MMenuElement) IContributionManagerOverrides(org.eclipse.jface.action.IContributionManagerOverrides) IActionBarConfigurer2(org.eclipse.ui.internal.provisional.application.IActionBarConfigurer2) ProgressRegion(org.eclipse.ui.internal.progress.ProgressRegion) ToolBarManager2(org.eclipse.jface.internal.provisional.action.ToolBarManager2) IRendererFactory(org.eclipse.e4.ui.workbench.swt.factories.IRendererFactory) MElementContainer(org.eclipse.e4.ui.model.application.ui.MElementContainer) IAdaptable(org.eclipse.core.runtime.IAdaptable) NLS(org.eclipse.osgi.util.NLS) IBindingService(org.eclipse.ui.keys.IBindingService) Collection(java.util.Collection) EObject(org.eclipse.emf.ecore.EObject) Optional(org.eclipse.e4.core.di.annotations.Optional) Display(org.eclipse.swt.widgets.Display) ContextService(org.eclipse.ui.internal.contexts.ContextService) ArrayContentProvider(org.eclipse.jface.viewers.ArrayContentProvider) IWorkbenchPage(org.eclipse.ui.IWorkbenchPage) IHandlerService(org.eclipse.ui.handlers.IHandlerService) List(java.util.List) CoolBarManager(org.eclipse.jface.action.CoolBarManager) IPerspectiveDescriptor(org.eclipse.ui.IPerspectiveDescriptor) IViewDescriptor(org.eclipse.ui.views.IViewDescriptor) Entry(java.util.Map.Entry) PostConstruct(javax.annotation.PostConstruct) IHandlerActivation(org.eclipse.ui.handlers.IHandlerActivation) WorkbenchWindowAdvisor(org.eclipse.ui.application.WorkbenchWindowAdvisor) CompatibilityPart(org.eclipse.ui.internal.e4.compatibility.CompatibilityPart) SafeRunnable(org.eclipse.jface.util.SafeRunnable) PartServiceSaveHandler(org.eclipse.e4.ui.internal.workbench.PartServiceSaveHandler) ISelectionService(org.eclipse.ui.ISelectionService) ToolBarManagerRenderer(org.eclipse.e4.ui.workbench.renderers.swt.ToolBarManagerRenderer) IPerspectiveRegistry(org.eclipse.ui.IPerspectiveRegistry) EvaluationReference(org.eclipse.ui.internal.services.EvaluationReference) Rectangle(org.eclipse.swt.graphics.Rectangle) HashMap(java.util.HashMap) Logger(org.eclipse.e4.core.services.log.Logger) IWorkbenchLocationService(org.eclipse.ui.internal.services.IWorkbenchLocationService) HashSet(java.util.HashSet) Inject(javax.inject.Inject) TrimmedPartLayout(org.eclipse.e4.ui.workbench.renderers.swt.TrimmedPartLayout) Expression(org.eclipse.core.expressions.Expression) MPlaceholder(org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder) MPart(org.eclipse.e4.ui.model.application.ui.basic.MPart) ContextFunction(org.eclipse.e4.core.contexts.ContextFunction) IEclipseContext(org.eclipse.e4.core.contexts.IEclipseContext) IWorkbenchPreferenceConstants(org.eclipse.ui.IWorkbenchPreferenceConstants) RunAndTrack(org.eclipse.e4.core.contexts.RunAndTrack) WorkbenchLocationService(org.eclipse.ui.internal.services.WorkbenchLocationService) ICoolBarManager(org.eclipse.jface.action.ICoolBarManager) IWorkbenchActionConstants(org.eclipse.ui.IWorkbenchActionConstants) Iterator(java.util.Iterator) Layout(org.eclipse.swt.widgets.Layout) IPageListener(org.eclipse.ui.IPageListener) E4Workbench(org.eclipse.e4.ui.internal.workbench.E4Workbench) ISaveHandler(org.eclipse.e4.ui.workbench.modeling.ISaveHandler) ShellEvent(org.eclipse.swt.events.ShellEvent) StatusLineManager(org.eclipse.jface.action.StatusLineManager) InjectionException(org.eclipse.e4.core.di.InjectionException) MTrimBar(org.eclipse.e4.ui.model.application.ui.basic.MTrimBar) ActionBarAdvisor(org.eclipse.ui.application.ActionBarAdvisor) CommandAction(org.eclipse.ui.internal.actions.CommandAction) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) ListSelectionDialog(org.eclipse.ui.dialogs.ListSelectionDialog) IContributionItem(org.eclipse.jface.action.IContributionItem) IWorkbench(org.eclipse.ui.IWorkbench) Menu(org.eclipse.swt.widgets.Menu) Collections(java.util.Collections) LabelProvider(org.eclipse.jface.viewers.LabelProvider) Control(org.eclipse.swt.widgets.Control) ISources(org.eclipse.ui.ISources) LinkedHashSet(java.util.LinkedHashSet) MPart(org.eclipse.e4.ui.model.application.ui.basic.MPart) ISaveHandler(org.eclipse.e4.ui.workbench.modeling.ISaveHandler) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ISaveablesLifecycleListener(org.eclipse.ui.ISaveablesLifecycleListener) PartServiceSaveHandler(org.eclipse.e4.ui.internal.workbench.PartServiceSaveHandler) MPerspective(org.eclipse.e4.ui.model.application.ui.advanced.MPerspective) IWorkbenchPage(org.eclipse.ui.IWorkbenchPage) CompatibilityPart(org.eclipse.ui.internal.e4.compatibility.CompatibilityPart) IWorkbenchPart(org.eclipse.ui.IWorkbenchPart) ListenerList(org.eclipse.core.runtime.ListenerList) ArrayList(java.util.ArrayList) List(java.util.List) IServiceLocatorCreator(org.eclipse.ui.internal.services.IServiceLocatorCreator) Saveable(org.eclipse.ui.Saveable) SafeRunnable(org.eclipse.jface.util.SafeRunnable) EContextService(org.eclipse.e4.ui.services.EContextService) WorkbenchException(org.eclipse.ui.WorkbenchException) ExpressionInfo(org.eclipse.core.expressions.ExpressionInfo) MMenu(org.eclipse.e4.ui.model.application.ui.menu.MMenu) ContextFunction(org.eclipse.e4.core.contexts.ContextFunction) ISaveablesSource(org.eclipse.ui.ISaveablesSource) Collection(java.util.Collection) EObject(org.eclipse.emf.ecore.EObject) MCompositePart(org.eclipse.e4.ui.model.application.ui.basic.MCompositePart) ISaveablePart(org.eclipse.ui.ISaveablePart) Shell(org.eclipse.swt.widgets.Shell) MMenu(org.eclipse.e4.ui.model.application.ui.menu.MMenu) Menu(org.eclipse.swt.widgets.Menu) UIExtensionTracker(org.eclipse.ui.internal.registry.UIExtensionTracker) IWindowCloseHandler(org.eclipse.e4.ui.workbench.modeling.IWindowCloseHandler) IExtensionTracker(org.eclipse.core.runtime.dynamichelpers.IExtensionTracker) UIExtensionTracker(org.eclipse.ui.internal.registry.UIExtensionTracker) IWorkbenchWindow(org.eclipse.ui.IWorkbenchWindow) Point(org.eclipse.swt.graphics.Point) WorkbenchPartLabelProvider(org.eclipse.ui.model.WorkbenchPartLabelProvider) InvocationTargetException(java.lang.reflect.InvocationTargetException) WorkbenchException(org.eclipse.ui.WorkbenchException) InjectionException(org.eclipse.e4.core.di.InjectionException) RunAndTrack(org.eclipse.e4.core.contexts.RunAndTrack) IEclipseContext(org.eclipse.e4.core.contexts.IEclipseContext) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) WorkbenchPartLabelProvider(org.eclipse.ui.model.WorkbenchPartLabelProvider) LabelProvider(org.eclipse.jface.viewers.LabelProvider) ListSelectionDialog(org.eclipse.ui.dialogs.ListSelectionDialog) PostConstruct(javax.annotation.PostConstruct)

Example 4 with EContextService

use of org.eclipse.e4.ui.services.EContextService in project eclipse.platform.ui by eclipse-platform.

the class ContextTest method testOneContext.

@Test
public void testOneContext() throws Exception {
    defineContexts(appContext);
    EContextService cs = appContext.get(EContextService.class);
    assertEquals(0, cs.getActiveContextIds().size());
    cs.activateContext(DIALOG_AND_WINDOW_ID);
    assertEquals(1, cs.getActiveContextIds().size());
}
Also used : EContextService(org.eclipse.e4.ui.services.EContextService) Test(org.junit.Test)

Example 5 with EContextService

use of org.eclipse.e4.ui.services.EContextService in project eclipse.platform.ui by eclipse-platform.

the class ContextTest method testThreeContexts.

@Test
public void testThreeContexts() throws Exception {
    defineContexts(appContext);
    EContextService cs = appContext.get(EContextService.class);
    IEclipseContext window = appContext.createChild("windowContext");
    EContextService windowService = window.get(EContextService.class);
    IEclipseContext dialog = appContext.createChild("dialogContext");
    dialog.activate();
    EContextService dialogService = dialog.get(EContextService.class);
    cs.activateContext(DIALOG_AND_WINDOW_ID);
    windowService.activateContext(WINDOW_ID);
    assertEquals(1, cs.getActiveContextIds().size());
    assertEquals(1, dialogService.getActiveContextIds().size());
    assertEquals(2, windowService.getActiveContextIds().size());
    dialogService.activateContext(DIALOG_ID);
    assertEquals(2, cs.getActiveContextIds().size());
    assertEquals(2, dialogService.getActiveContextIds().size());
    assertEquals(2, windowService.getActiveContextIds().size());
    assertTrue(cs.getActiveContextIds().contains(DIALOG_AND_WINDOW_ID));
    assertTrue(cs.getActiveContextIds().contains(DIALOG_ID));
    assertFalse(cs.getActiveContextIds().contains(WINDOW_ID));
    assertTrue(dialogService.getActiveContextIds().contains(DIALOG_AND_WINDOW_ID));
    assertTrue(dialogService.getActiveContextIds().contains(DIALOG_ID));
    assertFalse(dialogService.getActiveContextIds().contains(WINDOW_ID));
    assertTrue(windowService.getActiveContextIds().contains(DIALOG_AND_WINDOW_ID));
    assertFalse(windowService.getActiveContextIds().contains(DIALOG_ID));
    assertTrue(windowService.getActiveContextIds().contains(WINDOW_ID));
    // switch to window active :-)
    window.activate();
    assertEquals(2, cs.getActiveContextIds().size());
    assertEquals(2, dialogService.getActiveContextIds().size());
    assertEquals(2, windowService.getActiveContextIds().size());
    assertTrue(cs.getActiveContextIds().contains(DIALOG_AND_WINDOW_ID));
    assertFalse(cs.getActiveContextIds().contains(DIALOG_ID));
    assertTrue(cs.getActiveContextIds().contains(WINDOW_ID));
    assertTrue(dialogService.getActiveContextIds().contains(DIALOG_AND_WINDOW_ID));
    assertTrue(dialogService.getActiveContextIds().contains(DIALOG_ID));
    assertFalse(dialogService.getActiveContextIds().contains(WINDOW_ID));
    assertTrue(windowService.getActiveContextIds().contains(DIALOG_AND_WINDOW_ID));
    assertFalse(windowService.getActiveContextIds().contains(DIALOG_ID));
    assertTrue(windowService.getActiveContextIds().contains(WINDOW_ID));
}
Also used : IEclipseContext(org.eclipse.e4.core.contexts.IEclipseContext) EContextService(org.eclipse.e4.ui.services.EContextService) Test(org.junit.Test)

Aggregations

EContextService (org.eclipse.e4.ui.services.EContextService)19 IEclipseContext (org.eclipse.e4.core.contexts.IEclipseContext)14 Test (org.junit.Test)9 ParameterizedCommand (org.eclipse.core.commands.ParameterizedCommand)5 ECommandService (org.eclipse.e4.core.commands.ECommandService)5 EBindingService (org.eclipse.e4.ui.bindings.EBindingService)5 Binding (org.eclipse.jface.bindings.Binding)5 TriggerSequence (org.eclipse.jface.bindings.TriggerSequence)5 ArrayList (java.util.ArrayList)3 Context (org.eclipse.core.commands.contexts.Context)3 ContextManager (org.eclipse.core.commands.contexts.ContextManager)3 Arrays (java.util.Arrays)2 Collection (java.util.Collection)2 Collections (java.util.Collections)2 HashMap (java.util.HashMap)2 HashSet (java.util.HashSet)2 List (java.util.List)2 Map (java.util.Map)2 Set (java.util.Set)2 MBindingContext (org.eclipse.e4.ui.model.application.commands.MBindingContext)2