Как я могу подключиться к событиям редактора Eclipse в моем собственном плагине? - PullRequest
3 голосов
/ 28 июня 2011

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

Например, всякий раз, когда текст изменяется в текстовом или XML-редакторе, я получаюобратный вызов и возможность реагировать на изменение.

Существует ли такая подходящая точка расширения?

Ответы [ 2 ]

8 голосов
/ 28 июня 2011

Вы можете сделать это путем доступа к IEditorPart, использовать getAdapter(IDocument.class), а затем добавить слушателя к этому ...

Но это действительно хак ...; -)

РЕДАКТИРОВАТЬ : По запросу, здесь немного больше кода.

public void hookToEditor() {
    IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
    if (page == null) return;
    IEditorPart editor = page.getActiveEditor();
    if (editor == null) return;
    IDocument doc = (IDocument) editor.getAdapter(IDocument.class);
    if (doc == null) return;

    doc.addDocumentListener(new IDocumentListener() {
        @Override
        public void documentChanged(DocumentEvent event) {
            // Do something
        }

        @Override
        public void documentAboutToBeChanged(DocumentEvent event) {
            // About to do something
        }
    });
}

Обратите внимание, что

  • Есть много способов получить страницу - например,через текущий сайт
  • есть так же много способов получить часть редактора - например, через обработчик
  • у многих редакторов нет встроенного документа - например, редакторы PDE
2 голосов
/ 08 сентября 2015

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

IResourceChangeListener listener =  new IResourceChangeListener() {
    @Override
    public void resourceChanged(IResourceChangeEvent arg0) {
        System.out.println("Text changed");
    }   
};
ResourcesPlugin.getWorkspace().addResourceChangeListener(listener);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...