Я использую модели 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{...}
После этого, когда я меняю свой объект, мой лист свойств действительно обновляется, но у меня есть исключение NullPointerException в классе eclipse, поскольку currenttab имеет значение null.
Метод в org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage
public void refresh(){
currentTab.refresh();
}
Поэтому мне было интересно, как я могу получить текущую вкладку, пока эта вкладка не активна (я делаю изменения в другом представлении). Или есть другой способ обновить страницу листа свойств?