我想创建一个简单的eclipse插件,它执行以下操作:当您右键单击一个Java项目时,它将显示一个弹出菜单,其菜单项带有标签“此项目中找到了N个Java文件”,其中“ N”是文件数。

我有一个想法,可以在“ selectionChanged”中更新标签:

public class CountAction implements IObjectActionDelegate {
    public void selectionChanged(IAction action, ISelection selection) {
        action.setText(countJavaFiles());
    }
}


但是,如果我不单击该菜单项,将无法正常工作,因为尚未加载CountAction,因此在您右键单击该项目时不会调用selectionChanged

我花了很多时间,但是还没有解决。请帮我。

最佳答案

@kett_chup建议的文章的替代方法是使用IElementUpdater。只是


您的handler必须实现IElementUpdater
handler.updateElement((UIElement element, Map parameters)必须使用element.setText("new text")设置所需的文本-此新文本将显示在菜单和工具栏中
每当您需要/想要更新命令文本时,请使用带有特定命令ID的ICommandService.refreshElements(String commandId, Map filter)-全局命令服务通常就可以了


IElementUpdater界面还可用于更改检查状态-对于带有style=toggle的命令-以及图标和工具提示。

10-07 13:13