Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在重命名Eclipse应用程序中的元素之前进行检查_Eclipse_Resources_Refactoring_Rename_Rcp - Fatal编程技术网

在重命名Eclipse应用程序中的元素之前进行检查

在重命名Eclipse应用程序中的元素之前进行检查,eclipse,resources,refactoring,rename,rcp,Eclipse,Resources,Refactoring,Rename,Rcp,我目前正在编写一个带有自定义编辑器的RCP应用程序。我试图检查要重命名的文件是否在编辑器中打开。使用自定义RenameParticipant,我可以检查并阻止重命名操作,但这是在用户输入新名称后发生的。我希望支票能提前兑现。这可能吗?首先,您需要获取在RCP应用程序中打开的编辑器。Eclipse允许您通过以下行进行此操作: PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReference

我目前正在编写一个带有自定义编辑器的RCP应用程序。我试图检查要重命名的文件是否在编辑器中打开。使用自定义RenameParticipant,我可以检查并阻止重命名操作,但这是在用户输入新名称后发生的。我希望支票能提前兑现。这可能吗?

首先,您需要获取在RCP应用程序中打开的编辑器。Eclipse允许您通过以下行进行此操作:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences();

然后,您必须检查您的文件是否在这些编辑器中打开。为此,可以迭代生成的数组。数组的每个元素的类型都是
IEditorReference
。您可以通过方法
getEditorInput()
获取在每个编辑器引用中打开的文件

谢谢你的回答,马里奥!我可以用它来测试文件是否被打开,但我需要找到正确的位置。使用RenameParticipant允许我在使用的文件输入新名称后但在重命名文件之前运行检查。但是,我希望在要求用户输入新名称之前运行检查。任何想法都将不胜感激!也许您可以创建自己的操作并将其添加到弹出菜单中(通过“org.eclipse.ui.popupMenus”扩展点)。这样,您就可以在代码中的任何地方运行检查。看看这个:。为了避免从头开发重命名功能,您可以重用或继承EclipseJDT的“RenameAction”类。顺便说一句,根据StackOverflow政策,与其说“谢谢”(这是非常感激的:-),不如投票支持我的答案,因为它给了我分数:-)这看起来很有希望,我会看一看。注意,我现在对你的答案投了赞成票;)。不过,谢谢!