说我已经定义了自己的TextEditorX extends TextEditor
。在典型的Eclipse-RCP场景(标准插件,带有Project Explorer / Navigator的工作台)中,当有人尝试重命名(通过Project Explorer或Navigator)某个编辑器打开的文件时的行为是:
如果编辑器不是dirty
,则允许重命名。之后将调用editor.setInput()
,新文件名为参数。
如果是dirty
,则会引发错误(“重命名资源”:“执行重构时发生致命错误”“发现问题:doc.txt未保存”)。
我的问题:
此行为定义在哪个级别?我想包含org.eclipse.ltk.ui.refactoring.resource
...但是,假设我想要禁止重命名,即使编辑器不是脏的:这种行为是否可以通过编辑器中的某些方法(或文档)来确定提供者),或者我应该编码/扩展一些RenameParticipant
?
重命名器如何知道该编辑器实例打开了资源doc.txt
?是否只检查所有已打开的编辑并询问每个编辑者editorInput
,或documentProviders
是否参与?具体来说,假设我有一个特殊的编辑器,除了“主”文件之外,还依赖于其他资源(多文件输入),并且它希望重命名者在重命名他的任何输入之前询问他。您将如何处理这种情况?
答案 0 :(得分:0)
Eclipse没有理论上的理由阻止重命名修改过的文件。首先,编辑器可以向工作区注册ResourceChangeListener,并简单地更新其IEditorInput以响应MOVE通知。不确定这是否是一个好的答案,但也许是一个很好的方法去。