如何获取当前选项卡,而此选项卡不活动
我正在使用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();
}
所以我想知道我怎样才能在当前标签,而这个标签是不活跃
方法(我做的修改另一种观点)。 或者有另一种刷新属性表页的方法吗?
您可能需要使用addTabSelectionListener
方法TabbedPropertySheetPage
来等待您感兴趣的选项卡被选中,然后更新选择侦听器中的选项卡。
您也可以致电getCurrentTab
来了解是否有当前选项卡(如果没有,它将返回null
)。
我确实调用了getCurrentTab()并且它返回null。我不明白的是,如果我得到nullPointerException,刷新很好。我看到我的属性视图用正确的值刷新,一切似乎都很顺利,直到我检查控制台并查看当前选项卡的值为空值。我使用selectionchanged方法来填充属性选项卡,但正如我看到TabSelectionListener中检查是否选中选项卡。在这种情况下,我需要刷新另一个元素。 – vanvana
谢谢你的回答:)我可能应该改变问题标题,因为我的主要问题是“我怎样才能得到当前标签,而这个标签不活跃” – vanvana