Eclipse plugin 启用/禁用菜单项

Eclipse plugin 启用/禁用菜单项,eclipse-plugin,eclipse-rcp,Eclipse Plugin,Eclipse Rcp,我正在用目标平台3.7编写一个RCP应用程序。 我喜欢仅在特定视图处于活动状态时才启用菜单项,否则应将其禁用。 我通过下面plugin.xml中所示的表达式进行尝试,但菜单项始终处于活动状态 首先,从命令中删除defaultHandler 接下来,将处理程序类添加到处理程序扩展点 基本上,该机制允许您为同一个命令定义多个处理程序,使用不同的activeWhen表达式在不同的情况下由不同的处理程序类处理该命令 如果为命令定义的所有处理程序上的所有activeWhen表达式的计算结果为false,并

我正在用目标平台3.7编写一个RCP应用程序。 我喜欢仅在特定视图处于活动状态时才启用菜单项,否则应将其禁用。 我通过下面plugin.xml中所示的表达式进行尝试,但菜单项始终处于活动状态


首先,从命令中删除defaultHandler

接下来,将处理程序类添加到处理程序扩展点

基本上,该机制允许您为同一个命令定义多个处理程序,使用不同的activeWhen表达式在不同的情况下由不同的处理程序类处理该命令

如果为命令定义的所有处理程序上的所有activeWhen表达式的计算结果为false,并且为命令本身定义了一个defaultHandler,则该默认处理程序将用于该命令。从本质上讲,该命令将始终处于活动状态,因为始终有一个默认的处理程序来处理它

例如,如果您既有现有的LogView,又有另一个视图充满了unicorns,并且您希望使用相同的pgui.rcp.command.save命令来处理从任一视图保存项目:

<extension point="org.eclipse.ui.commands">
    <command
        id="pgui.rcp.command.save"
        name="Save">
    </command>
</extension>
:
<extension point="org.eclipse.ui.handlers">
    <handler
        class="pgui.handler.SaveLogHandler"
        commandId="pgui.rcp.command.save">

        <activeWhen>
            <with variable="activePart">
                <instanceof value="pgui.view.LogView">
                </instanceof>
            </with>
        </activeWhen>
    </handler>
</extension>
:
<extension point="org.eclipse.ui.handlers">
    <handler
        class="pgui.handler.SaveUnicornHandler"
        commandId="pgui.rcp.command.save">

        <activeWhen>
            <with variable="activePart">
                <instanceof value="pgui.view.UnicornView">
                </instanceof>
            </with>
        </activeWhen>
    </handler>
</extension>

:
:

谢谢。事实上,defaultHandler是个错误。我删除了它,并将其作为类标记添加到处理程序扩展中。