Интерфейсы компонентов

Компоненты не должны реализовывать конкретные интерфейсы или наследовать их из базовых классов. Однако при необходимости интерфейсы могут быть реализованы для получения обратных вызов от родительских объектов. Например, если компонент реализует интерфейс IFocusable, то родительский объект этого компонента сможет выбрать его с помощью данного интерфейса. Компоненты могут реализовывать интерфейсы непосредственно, либо предоставлять адаптер интерфейса с помощью IAdaptable.

Аналогично интерфейсам сайта, интерфейсы компонента регистрируются в точке расширения org.eclipse.core.component.types . Текст на языке описания XML этих интерфейсов немного отличается. Любой модуль может расширить набор интерфейсов, которые могут быть реализованы панелью, а реестр модулей PDE позволяет найти такие интерфейсы.

Рабочая среда предоставляет следующие интерфейсы, доступные для реализации компонентами:

Интерфейс
Описание
IFocusable
Позволяет компоненту реализовать setFocus.
IPersistable
Позволяет компоненту сохранить состояние между сеансами.
IMultiPart
Указывает, что на нотацию активного дочернего элемента, входящего в состав компонента.
ISite
Несмотря на то, что этот интерфейс никогда не реализуется компонентами, ISite обеспечивает доступ к сайту для реализаций некоторых других интерфейсов.

Кроме того, компоненты могут реализовывать интерфейсы жизненного цикла. Интерфейсы жизненного цикла отличаются от обычных интерфейсов компонента следующим образом: Компоненты поддерживают следующие интерфейсы жизненного цикла:
Интерфейс
Описание
IDisposable
Получает уведомление в случае очистки компонента.
INestedComponent
Реализуется дочерними объектами мультиплексора. Получает сообщения об активации и деактивации в случае изменения активного компонента.