2012-04-26 9 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

こんにちはエリアス、あなたの返事に感謝します。私はすでにそれを試みましたが、そのようなgetメソッドにアクセスしようとしているときは:levelsCombo = comboCI.getlevelsCombo(); getメソッドが定義されていないことがわかりました。 – Kyriakos

関連する問題