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

Само комбо находится как переменная-член 'item'' SelectionEvent' ... –

ответ

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

Смежные вопросы