Скажем, я определил свой собственный TextEditorX extends TextEditor
. В типичном сценарии Eclipse-RCP (стандартные плагины, рабочая среда с Project Explorer / Navigator) поведение, когда кто-то пытается переименовать (через Project Explorer или Navigator) файл, открытый каким-либо редактором, выглядит следующим образом:
Если редактор не dirty
, переименование разрешено. После этого будет вызван editor.setInput ()
с новым именем файла в качестве аргумента.
Если он грязный
, выдается ошибка ( «Переименовать ресурс»: «Произошла фатальная ошибка при выполнении рефакторинга» «Обнаружены проблемы: doc.txt не сохранен» ) .
Мои вопросы:
На каком уровне определяется это поведение? Я предполагаю, что задействован пакет org.eclipse.ltk.ui.refactoring.resource
... Но предположим, например, что я хочу запретить переименование, даже если редактор не грязный: может ли такое поведение быть определенным каким-либо методом в редакторе (или в поставщике документов), или я должен закодировать / расширить какой-то RenameParticipant
?
Как переименователь узнает, что ресурс doc.txt
открыт этим экземпляром редактора? Он просто проверяет все открытые редакторы и запрашивает у каждого свой editorInput
, или задействованы documentProvider
? В частности, предположим, что у меня есть конкретный редактор, который, помимо «основного» файла, зависит от других ресурсов (многофайловый ввод), и он хочет, чтобы переименователь запрашивал его перед переименованием любого из его вводов. Как вы подойдете к этому сценарию?