2016-05-16 18 views
1

我想使用ProgressMonitorDialog來執行(長)任務,但我希望用戶能夠「在後臺運行它」。「在後臺運行」按鈕不顯示在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訪問。

在調度作業之前使用setUser(true)方法Job會告訴作業管理器在短暫延遲後顯示此進度對話框。

還可以獲得立即用所示的對話框:

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