Как бобы меняли свойства...
( Андрей Ковалев )
Изучая beanbox, мы приходим к пониманию технологии JavaBeans, однако в примерах все просто, а самостоятельная разработка заставляет задуматься о вещах глубже и выявляет тонкие моменты, которые не были осознаны в первом приближении.
Мы понимаем, что у каждого боба есть свойства, и для того, чтобы сделать из доступными для настройки, их надо описать в информационном классе боба. Для доступа к свойству компонент должен предоставить метод его чтения, для задания или изменения свойства — метод его записи.
Итак, представим, что уже все работает и у нас в распоряжении находится средство конфигурирования боба. Предположим, что мы изменяем его название — для этого есть редактор свойства, который представляет собой текстовое поле, где записано старое название, а мы изменяем его на новое. Редактор свойств генерирует событие изменения свойства.
Редактор создается при определении типа свойства, потому что для каждого типа свойства должен быть свой редактор. Технология определяет два стандартных типа редакторов — строковый и списковый, а также универсальный тип редактора — специализированный редактор.
После того, как редактор определен, значение свойства, которое он призван редактировать, читается из массива свойств боба и устанавливается как его начальное значение. Затем для него регистрируется обработчик событий изменения свойства. Получается, что пользователь имеет возможность редактировать это значение напрямую. По изменению значения свойства генерируется событие. Оно генерируется одним из нескольких возможных способов. Например, при передаче фокуса ввода другому редактору. Или по нажатию кнопки, закрывающей диалог со специализированным редактором. Обработчик этого события может сообщить измененное свойство бобу, на чем процесс заканчивается.
Все действия, связанные с доступом к свойствам бобов и определением возможностей обработки этих свойств скрыты в механизме, который называется introspection, что можно перевести как "ясновидение". Механизм ясновидения позволяет узнать методы, которыми свойства могут быть считаны из бобы и записаны в него, и типы эти свойств, предоставляя таким образом возможность подобрать подходящий редактор для свойства.
