eclipse插件开发中弹出操作的动态标签

时间:2011-07-09 14:12:24

标签: eclipse-plugin popupmenu

我想创建一个简单的eclipse插件,它可以:当你右键单击一个java项目时,它会显示一个弹出菜单,其中有一个项目标签为“在这个项目中找到N个java文件”,其中“N”是文件计数。

我知道我可以在“selectionChanged”中更新标签:

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

但是如果我没有点击该菜单项就行不通,因为CountAction尚未加载,右键单击项目时不会调用selectionChanged

我花了很多时间在这上面,但没有解决。请帮帮我。

2 个答案:

答案 0 :(得分:2)

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

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

IElementUpdater界面也可用于更改已检查状态 - 包含style=toggle的命令 - 以及图标和工具提示。

答案 1 :(得分:0)

最后,我找到了一种非常简单的方法来实现它:

我不需要更改我的代码(相关示例代码),但我需要添加一个小startup类:

import org.eclipse.ui.IStartup;

public class MyStartUp implements IStartup {

    @Override
    public void earlyStartup() {
        // Initial the action
        new CountAction();
    }
}

并将以下内容添加到plugin.xml

<extension
     point="org.eclipse.ui.startup">
  <startup
        class="myplugin.MyStartUp">
  </startup>

MyStartUp将在启动时加载该操作的实例,然后每次右键单击项目或文件时都会调用selectionChanged