自动刷新eclipse视图

时间:2011-10-21 06:08:37

标签: eclipse plugins

我使用以下代码在eclipse中创建了一个示例视图。我想要视图 自动引用。引号“”中的部分代码给出了刷新选项,但它已完成 manual.can任何人都可以帮助我知道如何自动完成

public class SampleView extends ViewPart {


    public static final String ID = "tab.views.SampleView";


    private TableViewer viewer;



    class ViewContentProvider implements IStructuredContentProvider {
        public void inputChanged(Viewer v, Object oldInput, Object newInput) {
        }
        public void dispose() {
        }
        public Object[] getElements(Object parent) {
            return new String[] { "Status of your hudson build  is:  "  +hudson.d};
        }

    }
    class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
        public String getColumnText(Object obj, int index) {
            return getText(obj);
        }
        public Image getColumnImage(Object obj, int index) {
            return getImage(obj);
        }
        public Image getImage(Object obj) {
            return PlatformUI.getWorkbench().
                    getSharedImages().getImage(ISharedImages.IMG_OBJ_ADD);

        }


    }



    public SampleView() {
    }



    public void createPartControl(Composite parent) {
        viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
        viewer.setContentProvider(new ViewContentProvider());
        viewer.setLabelProvider(new ViewLabelProvider());

        viewer.setInput(getViewSite());



        PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "Tab.viewer");

        hookContextMenu();

    }
    " private void hookContextMenu() {
         MenuManager menuMgr = new MenuManager("#PopupMenu");
          Menu menu = menuMgr.createContextMenu(viewer.getControl());
          viewer.getControl().setMenu(menu);
          Action refresh =new Action() {
                    public void run() {
                        // initialize();
                         viewer.refresh();

                    }
          };
          refresh.setText("Refresh");
          menuMgr.add(refresh);
 }"



    public void setFocus() {
        viewer.getControl().setFocus();
    }
}

1 个答案:

答案 0 :(得分:1)

如果使用JFace数据绑定填充树内容,则只能自动刷新树内容,这对远程构建结果不起作用。

我建议使用具有通知支持的模型:当模型更改时,会通知其侦听器。然后您的视图可以侦听这些通知并刷新自己。

如果出于某种原因无法进行此操作,则必须手动轮询模型。为此,我建议创建一个在后台自动执行的作业(最后一步是稍后重新安排一次),检查模型是否更改并刷新视图。