我在fragment.e4xmi中定义了一个HandledToolItem:
//String to JsonNode
JsonNode node = m_mapper.readTree(responseString.toString());
我可以使用setEnable方法启用/禁用toolItem,但是当我点击UI上的其他地方时,工具项状态始终会更改为启用,无论之前有哪种状态。
我在Eclipse E4中工作。
答案 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());
}