2017-04-25 8 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{...} 

, 내 개체를 변경할 때, 내 속성 시트가 ​​실제로 수행 갱신하지만 currenttab가 null로 내가 이클립스 클래스는 NullPointerException이에 모델 변경 청취자를 추가했다. org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage 그래서이 탭이 활성화되지 동안 내가 현재 탭을 얻을 수있는 방법 궁금

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

에서

방법 (I은 수정에서 뭐하는 거지 다른보기). 또는 속성 시트 페이지를 새로 고치는 다른 방법이 있습니까?

+0

답변 해 주셔서 감사합니다. :) 내 주요 질문은 "이 탭이 활성화되어 있지 않은데 어떻게 현재의 탭을 얻을 수 있습니까?"라는 질문 제목을 변경해야합니다. – vanvana

답변

0

addTabSelectionListener 방법을 TabbedPropertySheetPage으로 설정하여 관심있는 탭이 선택 될 때까지 기다린 다음 선택 수신기의 탭을 업데이트해야 할 수 있습니다.

getCurrentTab으로 전화하여 현재 탭이 있는지 확인할 수도 있습니다 (없는 경우 null).

+0

getCurrentTab()을 호출하고 null을 반환합니다. 내가 이해할 수없는 것은 nullPointerException을 얻으면 새로 고침이 어떻게 이루어 졌는지입니다. 올바른 값으로 내 속성보기를 새로 고치고 콘솔을 확인하고 현재 탭에 null 값이 표시 될 때까지 모든 것이 제대로 된 것 같습니다. 속성 변경 탭을 채우기 위해 selectionchanged 메서드를 사용하고 있지만 탭 선택 여부를 확인하기 위해 TabSelectionListener를보고 있습니다. 이 경우 다른 요소가 선택되면 새로 고침을해야합니다 ... – vanvana