发生处理程序冲突。这可能会禁用一些命令
A handler conflict occurred. This may disable some commands
我希望能够控制何时可以在工具栏中启用特定命令。目前这是在我的 plugin.xml
文件中:
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="my.plugin.handler.Terminate"
description="Terminate session"
id="my.plugin.terminate"
name="Terminate">
</command>
</extension>
<extension
point="org.eclipse.ui.commandImages">
<image
commandId="my.plugin.terminate"
icon="icons/terminate.gif">
</image>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="toolbar:my.plugin.views.RuntimeSessionsView">
<command
commandId="my.plugin.terminate"
disabledIcon="icons/terminate_dis.gif"
icon="icons/terminate.gif"
style="push">
</command>
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="my.plugin.handler.Terminate"
commandId="my.plugin.terminate">
<enabledWhen>
<with
variable="canTerminate">
<equals
value="true">
</equals>
</with>
</enabledWhen>
</handler>
</extension>
这是我在控制台中得到的:
!ENTRY org.eclipse.ui.workbench 2 0 2015-03-11 11:59:05.237
!MESSAGE A handler conflict occurred. This may disable some commands.
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2015-03-11 11:59:05.237
!MESSAGE Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
WARNING 15-03-11,11:59:05 (0) Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
目前 my.plugin.terminate
命令被禁用,我收到此错误消息。如果我删除最后一个扩展点 ("org.eclipse.ui.handlers"),它将消失,但随后 my.plugin.terminate
命令将再次启用。
➤ 我想实现的是能够控制这个命令的启用/禁用状态。我该怎么做?
您在命令默认处理程序和处理程序扩展点中指定了相同的处理程序。由于它们都处于活动状态,因此您会发生冲突。
不指定默认处理程序。
我希望能够控制何时可以在工具栏中启用特定命令。目前这是在我的 plugin.xml
文件中:
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="my.plugin.handler.Terminate"
description="Terminate session"
id="my.plugin.terminate"
name="Terminate">
</command>
</extension>
<extension
point="org.eclipse.ui.commandImages">
<image
commandId="my.plugin.terminate"
icon="icons/terminate.gif">
</image>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="toolbar:my.plugin.views.RuntimeSessionsView">
<command
commandId="my.plugin.terminate"
disabledIcon="icons/terminate_dis.gif"
icon="icons/terminate.gif"
style="push">
</command>
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="my.plugin.handler.Terminate"
commandId="my.plugin.terminate">
<enabledWhen>
<with
variable="canTerminate">
<equals
value="true">
</equals>
</with>
</enabledWhen>
</handler>
</extension>
这是我在控制台中得到的:
!ENTRY org.eclipse.ui.workbench 2 0 2015-03-11 11:59:05.237
!MESSAGE A handler conflict occurred. This may disable some commands.
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2015-03-11 11:59:05.237
!MESSAGE Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
WARNING 15-03-11,11:59:05 (0) Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
handler=my.plugin.handler.Terminate,
expression=,sourcePriority=0)
目前 my.plugin.terminate
命令被禁用,我收到此错误消息。如果我删除最后一个扩展点 ("org.eclipse.ui.handlers"),它将消失,但随后 my.plugin.terminate
命令将再次启用。
➤ 我想实现的是能够控制这个命令的启用/禁用状态。我该怎么做?
您在命令默认处理程序和处理程序扩展点中指定了相同的处理程序。由于它们都处于活动状态,因此您会发生冲突。
不指定默认处理程序。