Привязки клавиш Eclipse 3.x удаляются при переносе в серию e4 (Eclipse Luna)

Привязки клавиш, которые я определил в своем рабочем пространстве 3.x RCP:

   <extension
   id="vebscheme.scheme"
   name="vebscheme.scheme"
   point="org.eclipse.ui.bindings">

    <key
       commandId="com.ami.veb.ui.menu.file.new.command"
       contextId="com.ami.veb.ui.context"
       schemeId="com.ami.veb.ui.scheme"
       sequence="CTRL+N"/>  
    <key
      commandId="com.ami.veb.ui.menu.file.openexternalfile.command"
      contextId="com.ami.veb.ui.context"
      schemeId="com.ami.veb.ui.scheme"
      sequence="CTRL+O"/>
    <key     
      commandId="com.ami.veb.ui.menu.file.new.components.addcomponentwizard.command"
      contextId="com.ami.veb.ui.context"
      schemeId="com.ami.veb.ui.scheme"
      sequence="CTRL+ALT+A"/>   
    <key
         commandId="com.ami.veb.ui.menu.file.new.components.updatecomponentwizard.command"  
      contextId="com.ami.veb.ui.context"
      schemeId="com.ami.veb.ui.scheme"
      sequence="CTRL+ALT+U"/>

      /** Scheme for the key-bindings **/
       <scheme
      id="com.ami.veb.ui.scheme"
      name="com.ami.veb.ui.scheme">
       </scheme>

      //----------------
       -----------------//
  </extension>

Схема активации:

    IBindingService bindingService = (IBindingService)PlatformUI.getWorkbench().getAdapter(IBindingService.class);
    BindingService bindingServiceObj = (BindingService) bindingService;
    //get the binding manager for the binding service
    BindingManager bindingManager = bindingServiceObj.getBindingManager();

    //constructs a scheme instance with the schemeId
    Scheme newScheme = bindingManager.getScheme("com.ami.veb.ui.scheme");
    //check if the newScheme is not null
    //then set the scheme as active scheme
    if(newScheme != null) {
        try {
            bindingManager.setActiveScheme(newScheme);
        } catch (NotDefinedException e) {
            String message = "Problem occurred when updating current active scheme."+
                    " This may result in issues with shortcut key bindings. "+
                    "Exit and re-launch the application to resolve this issue";
            VeBLogger.getInstance().log(message);
            VeBPluginActivator.getDefault().logPluginError(e);
        }
    }

Активация контекста:

     IContextService contextService = (IContextService) PlatformUI.getWorkbench().getService(IContextService.class);
    contextService.activateContext("com.ami.veb.ui.context");

Я создал продукт (с Луной). Я заметил, что сочетания клавиш не работают, как только я запускаю продукт (пока я не сохраню ярлыки).

BindingTable table = getTable(c.getId());
        if (table != null) {
            currentResult = table.getPerfectMatch(triggerSequence);
        }

Во время отладки я заметил, что BindingTable table изначально пуст для моего связующего контекста, и поэтому я получаю ярлыки, определенные в Eclipse, а не тот, который я определил для своего контекста.

PS Недавно я перенес свою рабочую область RCP из Eclipse Indigo (3.x RCP) в Luna (серия e4), и я заметил, что как только я экспортирую свой продукт RCP, мои привязки очищаются и когда я пытаюсь нажать любую горячую клавишу (скажем Ctrl+N) Я могу видеть только ярлыки затмения, а не тот, который я определил в моем plugin.xml.

Также обратите внимание, что миграция - это частичная миграция (или мягкая миграция), а не полная миграция (чистый "e4"), и приложение по-прежнему основано на уровне совместимости.

Привязки клавиш (определенные в plugin.xml), относящиеся к контексту привязки my, очищаются при запуске продукта.

Я запутался в том, что пошло не так с миграцией:(:(

Предложения приветствуются и будут оценены!

0 ответов

Другие вопросы по тегам