Интерфейсы компонентов
Компоненты не должны реализовывать конкретные интерфейсы или наследовать
их из базовых классов. Однако при необходимости интерфейсы могут быть реализованы
для получения обратных вызов от родительских объектов. Например, если компонент реализует
интерфейс IFocusable, то родительский объект этого компонента сможет выбрать его с помощью
данного интерфейса. Компоненты могут реализовывать интерфейсы непосредственно, либо
предоставлять адаптер интерфейса с помощью IAdaptable.
Аналогично интерфейсам сайта, интерфейсы компонента регистрируются в точке расширения
org.eclipse.core.component.types . Текст на
языке описания XML этих интерфейсов немного отличается. Любой модуль может расширить
набор интерфейсов, которые могут быть реализованы панелью, а реестр модулей PDE позволяет
найти такие интерфейсы.
Рабочая среда предоставляет следующие интерфейсы, доступные для реализации компонентами:
Интерфейс |
Описание |
IFocusable |
Позволяет компоненту реализовать setFocus.
|
IPersistable |
Позволяет компоненту сохранить состояние между
сеансами. |
IMultiPart |
Указывает, что на нотацию активного дочернего
элемента, входящего в состав компонента. |
ISite |
Несмотря на то, что этот интерфейс никогда не
реализуется компонентами, ISite обеспечивает доступ к сайту для реализаций некоторых
других интерфейсов. |
Кроме того, компоненты могут реализовывать интерфейсы жизненного цикла. Интерфейсы
жизненного цикла отличаются от обычных интерфейсов компонента следующим образом:
- Интерфейс жизненного цикла должен быть реализован непосредственным образом (его
нельзя предоставить в качестве адаптера);
- Интерфейс жизненного цикла может быть реализован зависимыми элементами компонента;
- Уведомление жизненного цикла отправляется как компоненту, так и все его
зависимостям;
- Интерфейсы жизненного цикла жестко закодированы и не предусматривают
регистрацию в точке расширения.
Компоненты поддерживают следующие интерфейсы жизненного цикла:
Интерфейс |
Описание |
IDisposable |
Получает уведомление в случае очистки
компонента. |
INestedComponent |
Реализуется дочерними объектами мультиплексора.
Получает сообщения об активации и деактивации в случае изменения активного компонента.
|