Связывание ключей с использованием org.eclipse.ui.binding - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь ввести комбинацию клавиш ( Ctrl + Shift + f ) в нашем настраиваемом редакторе для форматирования содержимого.

Я реализовал следующие изменения.

  1. Добавлены изменения в плагин xml путем добавления расширения ключа с определением Id / schema / context.

  2. Реализовано действие путем расширения класса TextEditorAction, как показано ниже.

    @Override
    public void run() {
        this.doOperation(ISourceViewer.FORMAT);
    }
    
  3. Реализован один класс Formatter путем реализации IContentFormatter.

  4. Передал вышеуказанный класс Formatter в наш класс sourceVIewConfiguration (extends SourceViewerConfiguration), переопределив getContentFormatter.

  5. переопределенный createActions() API внутри нашего настраиваемого класса редактора, который расширяет TextEditor.

По какой-то причине моя клавиша быстрого доступа не работает. Я поместил точку отладки в свой класс действий и заметил, что контроллер не будет там, когда я нажму на клавишу быстрого доступа.

Я также заметил, что вновь созданный ключ не отображается в настройках -> список ключей.

Может кто-нибудь предоставить указатели или пример для решения проблемы.

записей plugin.xml:

 <key
            commandId="com.language.javascripteditor.XJSFormatAction"
            schemeId="myScheme"
            sequence="M1+M2+z"/>
      <scheme
            id="myScheme"
            name="myScheme">
      </scheme>

Класс форматера:

public class JavaScriptEditorFormatter implements IContentFormatter {

    @Override
    public void format(IDocument document, IRegion region) {
        try {
            String content =document.get(region.getOffset(), region.getLength());
            String formatted = new JSBeautifier().js_beautify(content,null);
            document.replace(region.getOffset(), region.getLength(), formatted);
        } catch (BadLocationException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }

    @Override
    public IFormattingStrategy getFormattingStrategy(String contentType) {
        throw new UnsupportedOperationException();
    }

}

Добавлен новый файл свойств для настроенной схемы с именем plugin_customization.ini и с содержимым, как показано ниже org.eclipse.ui/KEY_CONFIGURATION_ID=myScheme

Секция команд внутри plugin.xml

<command
            defaultHandler="com.cisco.nm.workflowbuilder.language.javascripteditor.XJSFormatAction"
    id="com.language.javascripteditor.XJSFormatAction"
    name="%action.label.format.xjs">
</command>

Вместо обработчика я написал Action класс. Пожалуйста, дайте мне знать, если этот подход не работает

1 Ответ

0 голосов
/ 07 мая 2018

1.Добавлен класс участника к расширению существующего редактора. 2.Созданная команда с идентификатором для format.eg: com.javascript.text.format 3. письменный класс действий с методом форматирования

@Override
    public void run() {
        this.doOperation(ISourceViewer.FORMAT);
    }

4. плагин xml entry

  <key
            commandId="com.javascript.text.format"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
            sequence="M1+M2+F"/>

5. Переопределяем createActions (). Внутри этого метода создается экземпляр класса Action и setActionDefinitionId.

...