Eclipse插件之动态刷新ToolBar的图片
扩展Eclipse的快捷工具栏的时候,经常会碰到一些类似于开关的问题,比如需要根据某个状态或开关量来显示不同的图片,但是IHandler或AbstractHandler只给出了定义回调的执行函数,并没有给出操作UI相关的方法,其实只需要实现一个接口IElementUpdater即可,闲话少说,直接给出代码。
public class TestAction extends AbstractHandler implements IElementUpdater{
public static boolean isOn = false;
private static ImageDescriptor IMAGE_ON = UIActivator.getImageDescriptor("icons/on.gif");
private static ImageDescriptor IMAGE_OFF = UIActivator.getImageDescriptor("icons/off.gif");
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
if(!isOn){
System.out.println("on");
isOn = true;
}else{
System.out.println("off");
isOn = false;
}
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
ICommandService commandService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getService(ICommandService.class);
if(commandService != null){
commandService.refreshElements("com.zj.test.ui.commands.on", null);
}
}
});
return null;
}
@Override
public void updateElement(UIElement element, Map parameters) {
if(!isOn){
element.setIcon(IMAGE_ON);
element.setTooltip("on");
}else{
element.setIcon(IMAGE_OFF);
element.setTooltip("off");
}
}
}