2012-04-26 2 views
2

아래 코드에 따라 IToolBarManager에 콤보 상자를 추가 할 수 있습니다. 이제는 누구나 IContributionItem 내부에서 작성된 콤보 상자에 액세스하는 방법을 알고 있습니까?IContributionItem의 콤보 상자에 액세스하는 방법

친절 감사, 키리아 코스

IToolBarManager mgr = this.getViewSite().getActionBars().getToolBarManager(); 
IContributionItem comboCI = new ControlContribution("test") { 
    protected Control createControl(Composite parent) { 

     final Combo c = new Combo(parent, SWT.READ_ONLY); 
     c.add("one"); 
     c.add("two"); 
     c.add("three"); 
     c.addSelectionListener(new SelectionAdapter() { 
      public void widgetSelected(SelectionEvent e) { 
       c.add("four"); 
       } 
       }); 
     return c; 
    } 
};   

mgr.add(comboCI); 
+0

정확히 무슨 당신이 원하는 무엇입니까? 이미 "외부"에 현재 값을 전달하는 데 사용할 수있는 수신기가 있습니다 ... –

+0

다른 이벤트가 트리거 될 때 콤보 상자의 값을 변경하려고하므로 외부의 콤보 상자에 액세스해야합니다. 선언 된 범위의 – Kyriakos

+0

콤보 자체는'SelectionEvent'의'item' 멤버 변수로 발견됩니다 ... –

답변

4

는 ControlContribution 클래스 또는 IContributionItem 인터페이스 내부의 콤보 변수를 넣고 get 메소드를 만듭니다.

class ControlContribution implements IContributionItem { 

    protected Combo combo; 

    public Combo getCombo(){ 
     return combo; 
    } 
} 

이렇게하면 익명 클래스에서 선언 할 필요가 없습니다.

IContributionItem comboCI = new ControlContribution("test") { 
protected Control createControl(Composite parent) { 

    combo = new Combo(parent, SWT.READ_ONLY); 
    combo.add("one"); 
    combo.add("two"); 
    combo.add("three"); 
    combo.addSelectionListener(new SelectionAdapter() { 
     public void widgetSelected(SelectionEvent e) { 
      combo.add("four"); 
      } 
      }); 
    return combo; 
} 
}; 

그리고 당신은 분명히

comboCI.getCombo(); 

를 호출 할 수 있으며, IContributionItem 인터페이스는 getCombo() 메소드가 필요

+0

안녕 Elias 그리고 답장을 보내 주셔서 감사합니다. 나는 이미 그것을 시도했지만 그와 같은 get 메소드에 접근하려고 할 때 : levelsCombo = comboCI.getlevelsCombo(); 나는 get 메소드가 정의되지 않았 음을 알게되었다. – Kyriakos

관련 문제