天天看点

Eclipse插件之动态刷新ToolBar的图片Eclipse插件之动态刷新ToolBar的图片

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");
        }
    }


}