如何获取当前选项卡,而此选项卡不活动

问题描述:

我正在使用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

您可能需要使用addTabSelectionListener方法TabbedPropertySheetPage来等待您感兴趣的选项卡被选中,然后更新选择侦听器中的选项卡。

您也可以致电getCurrentTab来了解是否有当前选项卡(如果没有,它将返回null)。

+0

我确实调用了getCurrentTab()并且它返回null。我不明白的是,如果我得到nullPointerException,刷新很好。我看到我的属性视图用正确的值刷新,一切似乎都很顺利,直到我检查控制台并查看当前选项卡的值为空值。我使用selectionchanged方法来填充属性选项卡,但正如我看到TabSelectionListener中检查是否选中选项卡。在这种情况下,我需要刷新另一个元素。 – vanvana