"在后台运行"按钮不会显示在ProgressMonitorDialog中

时间:2016-05-16 08:30:02

标签: java eclipse eclipse-plugin

我正在尝试使用ProgressMonitorDialog来执行(长)任务,但我希望用户能够在后台运行它"。

不幸的是,这个按钮没有出现,我无法找出这个问题的原因。 这是我的代码:

ProgressMonitorDialog pmd = new ProgressMonitorDialog(shell);

    try {
        pmd.run(true, true, new IRunnableWithProgress() {

            @Override
            public void run(IProgressMonitor monitor) throws InvocationTargetException,
                    InterruptedException {

                monitor.beginTask("Refactoring in progress", IProgressMonitor.UNKNOWN);

                File root = new File(file.getProject().getLocation().toOSString()); //The root is here

                browseAndProcess(root, file.getName(), newFileName, monitor);

                monitor.done();

            }
        });
    } catch (InvocationTargetException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

以下是我当前结果的示例:http://imgur.com/ChHGzz3

我做错了什么想法? 谢谢你的阅读。

1 个答案:

答案 0 :(得分:2)

标准ProgressMonitorDialog不支持后台运行选项。

具有此选项的对话框是ProgressMonitorFocusJobDialog,不是公开的。只能使用Job访问它。

在安排作业之前使用setUser(true) Job方法会告诉作业管理员在短暂延迟后显示此进度对话框。

您还可以使用以下方式立即显示对话框:

PlatformUI.getWorkbench().getProgressService().showInDialog(shell, job);