2011-06-09 110 views
1

我的Job類中的run方法會執行一些操作(細節無關)並輸出2個雙精度數組。Eclipse插件:如何在作業完成後更新視圖

我想顯示這些數組在一個結果視圖,我已創建一個表和2列,每個陣列一個。

如何在運行方法結束時(在Job類中)引用視圖並在其中顯示這些數組?

即使你無法幫助我解答,如果有人能指向某個方向,我會很高興,因爲我不知道。我能想到的唯一事情就是事件處理,但我也不太瞭解這一點。

class RunnerJob extends Job { 
    protected IStatus run(IProgressMonitor monitor) { 
      //does some stuff 
      double[] col1 = someStuff1(); 
      double[] col2 = someStuff2(); 

      //display in results view? 
    } 
} 

基於蘇拉傑德蘭的答案,這是我用來引用視圖的靜態方法)的代碼,

display.syncExec(
    new Runnable() { 
     public void run(){ 
      try { 
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(ResultsView.ID); 
      } catch (PartInitException e) { 
       e.printStackTrace(); 
      } 
       ResultsView.update(<object with values>); 
      } 
    }); 

回答

1

在您的視圖類有一個靜態方法類似的getInstance(這將返回參考給你查看對象。一旦你有了對象,你可以在其中設置數組。

+0

所以,你的意思是說,只是說回來這個;? 因爲我不能從靜態方法引用非靜態的任何東西 – nbz 2011-06-09 12:36:25

+0

Ok我創建了一個靜態方法,它將更新視圖而不是引用視圖,但這隻會導致無效的線程訪問異常 – nbz 2011-06-09 15:52:09

+0

實際上你必須做的它在UI線程... http://www.eclipse.org/swt/faq.php#uithread – 2011-06-09 18:51:46

3

使用observer pattern(見example):

  1. 讓你的瀏覽器觀察
  2. 使您的工作實施可觀察
  3. 註冊在createPartControl()您的視圖可觀察到的(或 構造函數)和唐」 t忘記註銷dispose()
  4. 工作完成時通知觀察者。
+0

這聽起來很乾淨,我會盡快更新。我已經接受了這個答案,因爲它爲我工作,我沒有時間去嘗試。但我一定會盡快添加反饋。 – nbz 2011-06-20 15:44:36

相關問題