脏的EditorPart如何禁止Eclipse重命名其资源?

时间:2011-10-05 15:21:20

标签: eclipse-plugin eclipse-rcp

说我已经定义了自己的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是否参与?具体来说,假设我有一个特殊的编辑器,除了“主”文件之外,还依赖于其他资源(多文件输入),并且它希望重命名者在重命名他的任何输入之前询问他。您将如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

Eclipse没有理论上的理由阻止重命名修改过的文件。首先,编辑器可以向工作区注册ResourceChangeListener,并简单地更新其IEditorInput以响应MOVE通知。不确定这是否是一个好的答案,但也许是一个很好的方法去。