我想创建一个简单的eclipse插件,它可以:当你右键单击一个java项目时,它会显示一个弹出菜单,其中有一个项目标签为“在这个项目中找到N个java文件”,其中“N”是文件计数。
我知道我可以在“selectionChanged”中更新标签:
public class CountAction implements IObjectActionDelegate {
public void selectionChanged(IAction action, ISelection selection) {
action.setText(countJavaFiles());
}
}
但是如果我没有点击该菜单项就行不通,因为CountAction
尚未加载,右键单击项目时不会调用selectionChanged
我花了很多时间在这上面,但没有解决。请帮帮我。
答案 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
。