Плагин Eclipse Editor: пожалуйста, как получить необработанный текст, вызывающий что-то вроде .getActiveEditor (). GetEditorInput () - PullRequest
2 голосов
/ 11 августа 2009

, пожалуйста, вы можете помочь мне поймать буферизованный текст в редакторе, у меня есть этот код:

System.out.println( Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getTitle() );
System.out.println( Workbench.getInstance().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getEditorInput() );

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

Во второй строке вместо этого я всегда получаю путь от приведенного класса org.eclipse.ui.examples.rcp.texteditor.editors.PathEditorInput (который я не хочу включать в свое приложение @runtime)

Пожалуйста, помогите мне, tnx

1 Ответ

5 голосов
/ 11 августа 2009

IEditorPart.getEditorInput () возвращает IEditorInput, представляющий ввод редактора. Если активный редактор использует PathEditorInput в качестве входных данных, вам нужно либо связать его, либо реорганизовать код, чтобы не использовать пример входных данных редактора rcp - упомянутый вами PathEditorInput является примером rcp.

Например, вы можете использовать один из стандартных редакторов, таких как org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor или org.eclipse.ui.editors.text.TextEditor и org.eclipse.ui.part.FileEditorInput .

Вы создали свой проект с примером мастера? Если это так, это объясняет, откуда взялся пример использования.

Что касается получения текста, следующий фрагмент получит редактор, если он является экземпляром AbstractTextEditor, а затем извлечет содержимое из документа.

Обратите внимание, что в этом вызове есть некоторые нежелательные доступы. Если вы зарегистрируетесь в качестве прослушивателя на SelectionService , вы сможете отслеживать активное выделение и избежать необходимости запрашивать рабочую среду для активного редактора.

AbstractTextEditor part = (AbstractTextEditor) Workbench.getInstance()
        .getActiveWorkbenchWindow().getActivePage().getActiveEditor()
        .getAdapter(AbstractTextEditor.class);

if (part != null) {

    IDocument document = part.getDocumentProvider().getDocument(
            part.getEditorInput());

    String content = document.get();

    //do something with the text
}
...