Как я могу сделать стандартный редактор грязным в плагине Eclipse?

#eclipse-plugin #editor

#eclipse-плагин #редактор

Вопрос:

Я пытаюсь программно сделать редактор Eclipse грязным.

Я знаю, что firePropertyChange(IEditorPart.PROP_DIRTY) может это сделать в моих собственных редакторах.

Но в этом случае я использую стандартный редактор. Могу ли я сделать какие-либо редакторы грязными (как?) — Или редактор должен поддерживать это?

У меня есть org.eclipse.ui.IPartListener2. Отсюда я хочу сделать редактор грязным, когда получу событие partOpened (IWorkbenchPartReference arg0).

Я попытался просмотреть похожие вопросы здесь. Но я застрял.

Какие-либо подсказки?

Комментарии:

1. Возможно, вы можете найти MPart для части, используя EPartService , а затем вызвать setDirty(true) , но я не знаю, сработает ли это. На самом деле это не похоже на то, что вы должны делать.

2. Спасибо, Грег. Я посмотрю на EPartService. Причина такого подхода в том, что при некоторых обстоятельствах мой плагин генерирует файл с содержимым, которое я хочу заставить пользователя рассмотреть. Я не хочу сильно изменять правила, поэтому это может быть не лучшим решением.

3. Если вы создаете содержимое для файла, уже открытого в редакторе, ожидается, что редактор сам справится с этим — до тех пор, пока вы записываете содержимое с помощью API-интерфейсов iFile, а события ресурсов проходят через рабочую среду.

Ответ №1:

Найден трюк.

 IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
try {
    EditorPart ep = (EditorPart) IDE.openEditor( page, iFile );
    IEditorInput input = ep.getEditorInput();
    IDocument doc = ((ITextEditor) ep).getDocumentProvider().getDocument(input);
    doc.set(doc.get());
} catch ( Exception e ) {
    //Put your exception handler here if you wish to
    e.printStackTrace();
}
 

Это оставит редактор грязным.