2016-03-03 24 views
1

我在我的Eclipse RCP視圖中有一個按鈕,它使得帶有表單的TitleAreaDialog彈出。但是,當我點擊該按鈕時,TitleAreaDialog彈出在我的視圖後面,而不是在前面,以引起用戶的注意。如何將重點放在Eclipse RCP TitleAreaDialog上?

這是我的對話是如何宣稱:

public class PopUpEditForm extends TitleAreaDialog { 
    public PopUpEditForm(Shell parentShell) { 
     super(parentShell); 
     //Irrelevant logic 
    } 
//Other functions to populate/create the form 
} 

這是它是如何叫:

public void editFeature(){ 
    Display disp = new Display(); 
    Shell she = new Shell(disp); 
    PopUpEditForm p = new PopUpEditForm(she); 
} 

我試着設置了用於顯示形式容器中的焦點(.setFocus())以及該容器的組件。我也用.forceActive()但無濟於事。 HALP。

編輯:解

我用錯了殼:

public void editFeature(){ 
    PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { 

    public void run() { 
      Shell activeShell =  PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); 
      PopUpEditForm p = new PopUpEditForm(activeShell); 
    }   
} 

回答

1

我會建議你使用:

public void editFeature() 
    { 
Display disp = new Display(); 
Shell she = new Shell(disp); 
PopUpEditForm p = new PopUpEditForm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()); 
    } 

理想的對話應該是上面的窗口。

+0

我知道我使用的是錯誤的shell,而且不知道如何獲得活動的shell。謝謝,這工作。 – Sterls

+0

對不起,我忘了提及刪除行 Display disp = new Display(); Shell she = new Shell(disp); – Kumar

1

嘗試以下操作:

public void editFeature(){ 
    PopUpEditForm p = new PopUpEditForm(Display.getDefault().getActiveShell()); 
} 

由於PopUpEditFormTitleAreaDialog這需要一個母貝,你不應該必須爲它創建一個新的外殼,而是傳遞一個現有的外殼(如主應用程序外殼)。

既然你在一個RCP視圖,你也可以這樣做:

public void editFeature(){ 
    PopUpEditForm p = new PopUpEditForm(getSite().getShell()); 
} 
相關問題