Eclipse插件开发 - 启用时ToolItem奇怪的行为

时间:2017-10-02 08:05:18

标签: eclipse plugins eclipse-plugin e4

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

//String to JsonNode
JsonNode node = m_mapper.readTree(responseString.toString()); 

我可以使用setEnable方法启用/禁用toolItem,但是当我点击UI上的其他地方时,工具项状态始终会更改为启用,无论之前有哪种状态。

我在Eclipse E4中工作。

1 个答案:

答案 0 :(得分:0)

工具或菜单项的启用状态会定期从当前处理程序的@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());
}