如何在Eclipse中批量创建和更新标记?

时间:2014-12-12 10:41:44

标签: java eclipse eclipse-plugin markers

我有一个文件的数千个标记,我用自定义注释突出显示。

然而,在我的eclipse项目中添加监听器后,我发现每次创建标记时,它都会刷新GUI,因此会调用我的监听器(IResourceChangeListener)。这意味着,我的听众被称为1000个标记1000次。到目前为止没有性能问题(不到2秒),但我认为如果我有10000个或更多标记,这种情况会有所不同。

是否可以批量创建所有这些标记,以便每次都不刷新GUI并且只调用一次我的监听器?

2 个答案:

答案 0 :(得分:2)

您可以使用其中一个工作区修改类将更改批量更改为更少的事件。

WorkspaceJobJob的扩展名,用于批量处理作业期间所做的更改。

WorkspaceModifyOperation是一个IRunnableWithProgress,您可以使用进度监视器对话框或支持可运行的任何内容运行,例如向导容器或IProgressService

答案 1 :(得分:1)

您可以使用org.eclipse.ui.actions.WorkspaceModifyOperation来锁定"工作区。执行后,您只能获得一个ResourceDelta。

ProgressMonitorDialog pmdialog = new ProgressMonitorDialog(
        activeShell);
pmdialog.run(true, true,new WorkspaceModifyOperation() {

    @Override
    protected void execute(IProgressMonitor monitor) throws CoreException,
            InvocationTargetException, InterruptedException {
        // create all my markers here

    }
});