Eclipse插件的开发 - 启用时工具特征奇怪的行为



我在fragment.e4xmi中定义了一个andledtoolitem:

<fragments xsi:type="fragment:StringModelFragment" xmi:id="_rva08KK6Eeealvq0OCaXXw" featurename="trimContributions" parentElementId="org.eclipse.e4.legacy.ide.application">
    <elements xsi:type="menu:TrimContribution" xmi:id="_NDOigKK8Eeealvq0OCaXXw" elementId="xyz.trimcontribution.0" parentId="org.eclipse.ui.main.toolbar" positionInParent="after=additions">
      <children xsi:type="menu:ToolBar" xmi:id="_NXC2YKK8Eeealvq0OCaXXw" elementId="xyz.toolbar.1" accessibilityPhrase="ToolItems1">
        <children xsi:type="menu:HandledToolItem" xmi:id="_dOkvwKK8Eeealvq0OCaXXw" elementId="xyz.handledtoolitem.1" label="Item1" iconURI="platform:/plugin/xyz-plugin/resources/icons/toolbar/Item1.png" tooltip="" enabled="false" command="_SALb4JItEee5yvRIuSvsRg"/>
       </children>
    </elements>
  </fragments>

我可以使用可设置的方法启用/禁用toolitem,但是当我在UI ToolItem状态上的其他位置单击某个位置时,总是会更改为已启用,无论以前具有哪种状态。

我在Eclipse E4中工作。

定期从当前处理程序的@CanExecute方法更新工具或菜单项的启用状态,因此您不能只调用setEnabled来更改其状态。如果没有@CanExecute方法,则假定true

而是在处理程序中实现返回启用状态的@CanExecute方法:

@CanExecute
public boolean canExecute()
{
  return // TODO enabled state
}

如果要在处理程序的主要@Execute方法中更改启用状态,则可能需要强迫Eclipse调用@CanExecute方法。您可以使用活动经纪人的特殊主题:

@Execute
public void execute(MHandledToolItem mitem, IEventBroker eventBroker)
{
   ... other code
   // Update enablement
   eventBroker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, mitem.getElementId());
}

最新更新