Search in sources :

Example 21 with EBindingService

use of org.eclipse.e4.ui.bindings.EBindingService in project eclipse.platform.ui by eclipse-platform.

the class BindingLookupTest method testPartialMatch.

@Test
public void testPartialMatch() {
    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();
    EBindingService bs1 = c1.get(EBindingService.class);
    TriggerSequence seq = bs1.createSequence("CTRL+5 T");
    Binding db = createDefaultBinding(wBS, seq, cmd, ID_DIALOG_AND_WINDOW);
    bs1.activateBinding(db);
    TriggerSequence partialMatch = bs1.createSequence("CTRL+5");
    TriggerSequence partialNoMatch = bs1.createSequence("CTRL+8");
    assertFalse(bs1.isPartialMatch(partialNoMatch));
    assertTrue(bs1.isPartialMatch(partialMatch));
}
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) ParameterizedCommand(org.eclipse.core.commands.ParameterizedCommand) ECommandService(org.eclipse.e4.core.commands.ECommandService) Test(org.junit.Test)

Example 22 with EBindingService

use of org.eclipse.e4.ui.bindings.EBindingService in project eclipse.platform.ui by eclipse-platform.

the class BindingLookupTest method testFindBindingInParent_Bug562263.

@Test
public void testFindBindingInParent_Bug562263() {
    EContextService es = workbenchContext.get(EContextService.class);
    es.deactivateContext(ID_DIALOG_AND_WINDOW);
    es.activateContext(ID_WINDOW);
    ECommandService cs = workbenchContext.get(ECommandService.class);
    ParameterizedCommand cmd = cs.createCommand(TEST_ID1, null);
    EBindingService bs = workbenchContext.get(EBindingService.class);
    TriggerSequence seq = bs.createSequence("CTRL+5 T");
    Binding db = createDefaultBinding(bs, seq, cmd, ID_DIALOG_AND_WINDOW);
    bs.activateBinding(db);
    Binding perfectMatch = bs.getPerfectMatch(seq);
    assertEquals(cmd, perfectMatch.getParameterizedCommand());
    bs.deactivateBinding(db);
    assertNull(bs.getPerfectMatch(seq));
    bs.activateBinding(db);
    assertEquals(cmd, bs.getPerfectMatch(seq).getParameterizedCommand());
}
Also used : Binding(org.eclipse.jface.bindings.Binding) TriggerSequence(org.eclipse.jface.bindings.TriggerSequence) EBindingService(org.eclipse.e4.ui.bindings.EBindingService) 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 23 with EBindingService

use of org.eclipse.e4.ui.bindings.EBindingService in project eclipse.platform.ui by eclipse-platform.

the class KeyDispatcherTest method defineCommands.

private void defineCommands(IEclipseContext context) {
    ECommandService cs = workbenchContext.get(ECommandService.class);
    Category category = cs.defineCategory(TEST_CAT1, "CAT1", null);
    cs.defineCommand(TEST_ID1, "ID1", null, category, null);
    cs.defineCommand(TEST_ID2, "ID2", null, category, null);
    ParameterizedCommand cmd = cs.createCommand(TEST_ID1, null);
    EHandlerService hs = workbenchContext.get(EHandlerService.class);
    handler = new CallHandler();
    hs.activateHandler(TEST_ID1, handler);
    EBindingService bs = workbenchContext.get(EBindingService.class);
    TriggerSequence seq = bs.createSequence("CTRL+A");
    Binding db = createDefaultBinding(bs, seq, cmd);
    bs.activateBinding(db);
    ParameterizedCommand cmd2 = cs.createCommand(TEST_ID2, null);
    twoStrokeHandler = new CallHandler();
    hs.activateHandler(TEST_ID2, twoStrokeHandler);
    TriggerSequence twoKeys = bs.createSequence("CTRL+5 CTRL+A");
    db = createDefaultBinding(bs, twoKeys, cmd2);
    bs.activateBinding(db);
}
Also used : Binding(org.eclipse.jface.bindings.Binding) EHandlerService(org.eclipse.e4.core.commands.EHandlerService) TriggerSequence(org.eclipse.jface.bindings.TriggerSequence) Category(org.eclipse.core.commands.Category) EBindingService(org.eclipse.e4.ui.bindings.EBindingService) ParameterizedCommand(org.eclipse.core.commands.ParameterizedCommand) ECommandService(org.eclipse.e4.core.commands.ECommandService)

Example 24 with EBindingService

use of org.eclipse.e4.ui.bindings.EBindingService in project eclipse.platform.ui by eclipse-platform.

the class BindingPersistenceTest method testAboutBindingEmacs.

@Test
public void testAboutBindingEmacs() throws Exception {
    if (Util.isMac()) {
        return;
    }
    final Scheme emacsScheme = bindingService.getScheme(EMACS_SCHEME_ID);
    assertNotNull(emacsScheme);
    final Binding[] originalBindings = bindingService.getBindings();
    bindingService.savePreferences(emacsScheme, originalBindings);
    ParameterizedCommand findAndReplaceCmd = new ParameterizedCommand(commandService.getCommand(IWorkbenchCommandConstants.EDIT_FIND_AND_REPLACE), null);
    ParameterizedCommand aboutCmd = new ParameterizedCommand(commandService.getCommand(IWorkbenchCommandConstants.HELP_ABOUT), null);
    final KeySequence keyAltR = KeySequence.getInstance("ALT+R");
    final KeySequence keyAltCtrlShiftI = KeySequence.getInstance("ALT+CTRL+SHIFT+I");
    final Binding findAndReplaceBinding = bindingService.getPerfectMatch(keyAltR);
    assertNotNull(findAndReplaceBinding);
    assertEquals(findAndReplaceCmd, findAndReplaceBinding.getParameterizedCommand());
    assertEquals(EMACS_SCHEME_ID, findAndReplaceBinding.getSchemeId());
    EBindingService ebs = PlatformUI.getWorkbench().getService(EBindingService.class);
    HashMap<String, String> attrs = new HashMap<>();
    attrs.put(EBindingService.TYPE_ATTR_TAG, "user");
    attrs.put(EBindingService.SCHEME_ID_ATTR_TAG, EMACS_SCHEME_ID);
    final Binding localAboutBinding = ebs.createBinding(keyAltR, aboutCmd, IContextService.CONTEXT_ID_WINDOW, attrs);
    assertNotNull(localAboutBinding);
    assertEquals(Binding.USER, localAboutBinding.getType());
    assertEquals(EMACS_SCHEME_ID, localAboutBinding.getSchemeId());
    final Binding[] bindings = originalBindings;
    Binding[] added = new Binding[bindings.length + 2];
    System.arraycopy(bindings, 0, added, 0, bindings.length);
    Binding del = new KeyBinding(keyAltR, null, EMACS_SCHEME_ID, IContextService.CONTEXT_ID_WINDOW, null, null, null, Binding.USER);
    added[bindings.length] = del;
    added[bindings.length + 1] = localAboutBinding;
    bindingService.savePreferences(emacsScheme, added);
    // the match should be the user binding that we just added
    final Binding secondMatch = bindingService.getPerfectMatch(keyAltR);
    assertNotNull(secondMatch);
    assertEquals(aboutCmd, secondMatch.getParameterizedCommand());
    // go back to the defaults
    bindingService.savePreferences(emacsScheme, originalBindings);
    final Binding thirdMatch = bindingService.getPerfectMatch(keyAltR);
    assertNotNull(thirdMatch);
    assertEquals(findAndReplaceCmd, thirdMatch.getParameterizedCommand());
    // try assigning alt-ctrl-shift-i (no other binding uses this for this
    // context) to the 'about' command
    final Binding localAboutBinding1 = ebs.createBinding(keyAltCtrlShiftI, aboutCmd, IContextService.CONTEXT_ID_WINDOW, attrs);
    assertNotNull(localAboutBinding1);
    assertEquals(Binding.USER, localAboutBinding1.getType());
    assertEquals(EMACS_SCHEME_ID, localAboutBinding.getSchemeId());
    Binding[] added1 = new Binding[bindings.length + 1];
    System.arraycopy(bindings, 0, added1, 0, bindings.length);
    added1[bindings.length] = localAboutBinding1;
    bindingService.savePreferences(emacsScheme, added1);
    final Binding fourthMatch = bindingService.getPerfectMatch(keyAltCtrlShiftI);
    assertNotNull(fourthMatch);
    assertEquals(aboutCmd, fourthMatch.getParameterizedCommand());
    assertEquals(EMACS_SCHEME_ID, fourthMatch.getSchemeId());
}
Also used : KeyBinding(org.eclipse.jface.bindings.keys.KeyBinding) Binding(org.eclipse.jface.bindings.Binding) KeyBinding(org.eclipse.jface.bindings.keys.KeyBinding) Scheme(org.eclipse.jface.bindings.Scheme) EBindingService(org.eclipse.e4.ui.bindings.EBindingService) HashMap(java.util.HashMap) ParameterizedCommand(org.eclipse.core.commands.ParameterizedCommand) KeySequence(org.eclipse.jface.bindings.keys.KeySequence) Test(org.junit.Test)

Aggregations

EBindingService (org.eclipse.e4.ui.bindings.EBindingService)24 ParameterizedCommand (org.eclipse.core.commands.ParameterizedCommand)23 Binding (org.eclipse.jface.bindings.Binding)21 TriggerSequence (org.eclipse.jface.bindings.TriggerSequence)18 Test (org.junit.Test)18 ECommandService (org.eclipse.e4.core.commands.ECommandService)17 IEclipseContext (org.eclipse.e4.core.contexts.IEclipseContext)9 EContextService (org.eclipse.e4.ui.services.EContextService)5 Scheme (org.eclipse.jface.bindings.Scheme)4 KeyBinding (org.eclipse.jface.bindings.keys.KeyBinding)4 KeySequence (org.eclipse.jface.bindings.keys.KeySequence)4 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 NotDefinedException (org.eclipse.core.commands.common.NotDefinedException)3 HashSet (java.util.HashSet)1 TreeSet (java.util.TreeSet)1 Category (org.eclipse.core.commands.Category)1 Command (org.eclipse.core.commands.Command)1 CommandManager (org.eclipse.core.commands.CommandManager)1 ContextManager (org.eclipse.core.commands.contexts.ContextManager)1