#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();
}
Это оставит редактор грязным.