2016-05-16 15 views
1

(長い)タスクを実行するためにProgressMonitorDialogを使用しようとしていますが、ユーザーに "バックグラウンドで実行"できるようにしたいと思います。"Run in background"ボタンが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

任意のアイデア? 読んでいただきありがとうございます。

答えて

2

標準ProgressMonitorDialogは、バックグラウンドで実行オプションをサポートしていません。

このオプションを持つダイアログは、公開されていないProgressMonitorFocusJobDialogです。これは、Jobを使用してのみアクセスできます。

メソッドをJobに設定すると、ジョブをスケジュールする前にジョブマネージャに、この遅延ダイアログを表示するよう指示します。

また、ダイアログが使用してすぐに示され得ることができます:

PlatformUI.getWorkbench().getProgressService().showInDialog(shell, job); 
関連する問題