如何在eclipse插件中的任何地方(即从文件菜单和上下文菜单中)禁用重命名选项?

时间:2011-12-06 07:23:15

标签: eclipse eclipse-rcp eclipse-plugin

我正在开发一个插件,它基本上是创建一个新项目,项目包含多个文件夹,该文件夹包含我们自己的自定义编辑器。现在我不想让用户从任何地方重命名项目。我可以在文件菜单,项目浏览器的上下文菜单,包浏览器的上下文菜单,导航器的上下文菜单中看到重命名选项。是否可以全局禁用/自定义重命名选项。我试图使用全局动作处理程序来重命名动作,这在重命名动作发生时基本上是我自己的工作。但是因为我想在插件激活器开始时阻止/禁用重命名选项,我能够在激活器类上获得活动视图站点,这似乎对我没有帮助,因为活动视图可能比上面提到的观点有时候。因此,我尝试通过ltk的renameparticipant扩展使用'Rename Participant',我编写了自己的类,扩展了RenameParticipant,但是即使我在plug-in.xml文件中给出了正确的类名,该类也永远不会被启动。

由于我们的产品是插件

有人可以告诉我,我该怎么办?我希望有人已经走在这条路上,以阻止全局重命名选项。

2 个答案:

答案 0 :(得分:3)

您可以指定自己的处理程序以进行全局重命名( id =“org.eclipse.ui.edit.rename”)和Java重命名元素( id =“org.eclipse.jdt使用Handlers扩展点的.ui.edit.text.java.rename.element“)命令。但是,无法在Package Explorer中禁用上下文菜单项(Refactor> Rename ...),因为它是硬编码的。

答案 1 :(得分:2)

我使用该类

从上下文菜单中删除了
public class MoveActionProvider extends RefactorActionProvider  {

    //@Override
    public void fillContextMenu(IMenuManager menu) {}   

}

并将其声明为plugin.xml

<extension point="org.eclipse.ui.navigator.navigatorContent">
            <actionProvider
                    class="com.totvs.tds.ordinechaos.providers.action.MoveActionProvider"
                    id="com.totvs.tds.ordinechaos.providers.action.MoveActionExtension"
                    overrides="org.eclipse.ui.navigator.resources.actions.RefactorActions"
                    priority="highest">
                <enablement>
                <!-- A hack to allways be enabled -->
                    <not>
                        <systemTest
                                property="MyApp"
                                value="WONT-EVER-BE-SET">
                        </systemTest>
                    </not>
                </enablement>
            </actionProvider>
        </extension>