如何在此选项卡未激活时获取当前选项卡

时间:2017-04-25 09:27:58

标签: java nullpointerexception eclipse-rcp propertysheet

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

org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage中的方法

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

所以我想知道如何在此选项卡未激活时获取当前选项卡(我在另一个视图中进行修改)。 或者是否有其他方法来刷新属性表页面?

1 个答案:

答案 0 :(得分:0)

您可能需要使用addTabSelectionListener的{​​{1}}方法等待您感兴趣的标签选择,然后更新选择监听器中的标签。

您也可以致电TabbedPropertySheetPage查看是否有当前标签(如果没有,则会返回getCurrentTab。)