2017-04-25 113 views
2

我正在使用Eclipse RCP和EMF模型。我在視圖中選擇了一個對象時創建了自己的屬性選項卡表,而不是刷新。在此之前,一切正常。然後,當我在模型中進行更改時,我想刷新屬性選項卡。我加了一個型號更改偵聽到我的主屬性表頁如何獲取當前選項卡,而此選項卡不活動

public class MyTabbedPropertySheet extends TabbedPropertySheet{...} 


private void init(){ 
try{ 
    MyModelChangeListener = new MyModelChangeListener(){ 
    @Override 
    public void refreshUI(){ 
    try{ 
    UMLModeler.getTransactionHelper().getEditingDomain().runExclusive(new Runnable() { 
     @Override 
     public void run(){ 
     refresh() //This is the eclipse TabbedPropertySheet refresh method 
    } 
    }); 
    }catch(){..} 
    UMLModeler.getTransactionHelper().getEditingDomain().addResourceSetListener(MyModelChangeListener); 
}catch{...} 

之後,當我改變我的目標,我的屬性表實際上沒有刷新,但我在Eclipse類一個NullPointerException作爲currenttab爲空。在org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage

public void refresh(){ 
    currentTab.refresh(); 
} 

所以我想知道我怎樣才能在當前標籤,而這個標籤是不活躍

方法(我做的修改另一種觀點)。 或者有另一種刷新屬性表頁的方法嗎?

+0

謝謝你的回答:)我可能應該改變問題標題,因爲我的主要問題是「我怎樣才能得到當前標籤,而這個標籤不活躍」 – vanvana

回答

0

您可能需要使用addTabSelectionListener方法TabbedPropertySheetPage來等待您感興趣的選項卡被選中,然後更新選擇偵聽器中的選項卡。

您也可以致電getCurrentTab來了解是否有當前選項卡(如果沒有,它將返回null)。

+0

我確實調用了getCurrentTab()並且它返回null。我不明白的是,如果我得到nullPointerException,刷新很好。我看到我的屬性視圖用正確的值刷新,一切似乎都很順利,直到我檢查控制檯並查看當前選項卡的值爲空值。我使用selectionchanged方法來填充屬性選項卡,但正如我看到TabSelectionListener中檢查是否選中選項卡。在這種情況下,我需要刷新另一個元素。 – vanvana

相關問題