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

Скажем, я определил свой собственный 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 ? В частности, предположим, что у меня есть конкретный редактор, который, помимо «основного» файла, зависит от других ресурсов (многофайловый ввод), и он хочет, чтобы переименователь запрашивал его перед переименованием любого из его вводов. Как вы подойдете к этому сценарию?

7
задан leonbloy 8 October 2012 в 13:54
поделиться