У вас есть другая парадигма коммуникации, изложенная в статье IBM
- Чтобы представление могло прослушивать изменения выбора, оно должно реализовывать интерфейс
ISelectionListener
и регистрироваться на странице рабочего места
- Использование интерфейса
IAdaptable
: класс, реализующий IAdaptable
, имеет возможность динамически возвращать определенные типы адаптеров, которые затем можно использовать для получения дополнительной информации.
- парадигма слушателя изменения свойства
Что касается первого подхода, подробности статьи:
Более разумный способ использовать выбор пользовательского интерфейса - зарегистрировать представления потребителей в качестве слушателей определенных частей представления. Как видно из приведенного ниже примера, идентификатор вида исходной части вида упоминается в качестве параметра при регистрации прослушивателя выбора.
getSite().getPage().addSelectionListener("SampleViewId",(ISelectionListener)this);
Этот подход исключит избыточные обратные вызовы для представления потребителя, которые в противном случае произошли бы, если бы это представление было зарегистрировано как неспецифический прослушиватель.
Фрагмент кода в листинге 2 показывает метод createPartControl()
представления, который создает JFace
TableViewer
и добавляет его в качестве поставщика выбора на сайт рабочей среды. Этот код позволяет любым изменениям пользовательского интерфейса в TableViewer
распространяться на страницу и, наконец, на заинтересованные мнения потребителей.
Листинг 2. Настройка поставщика выбора
public void createPartControl(Composite parent) {
// Set up a JFace Viewer
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
viewer.setContentProvider(new ViewContentProvider());
viewer.setLabelProvider(new ViewLabelProvider());
viewer.setSorter(new NameSorter());
viewer.setInput(getViewSite());
// ADD the JFace Viewer as a Selection Provider to the View site.
getSite().setSelectionProvider(viewer);
}
Подобный подход вы найдете в учебнике RCP для eclipse3.5 (обновление 4 февраля 2010 г.)