Итак, мы частично рассмотрели содержимое XML-файла простого консольного приложения, которое добавляет кнопку на панель инструментов для страниц C1 и показывает идентификатор страницы при нажатии этой кнопки.
Корневым элементом определения любого приложения является ElementStructure, включающий в себя два дочерних элемента. Дочерний элемент ElementStructure.AutoAttachments указывает, как и куда подключать древовидную структуру приложения. Его мы рассмотрели в предыдущем сообщении.
А вот сама древовидная структура приложения формируется во втором дочернем элементе - ElementRoot. Именно здесь мы добавляем нужные элементы и/или нужные действия над элементами - то, что видимо конечному пользователю.
(Главное не путать корневой элемент приложения ElementStructure и корневой элемент структуры приложения ElementRoot. Второй является дочерним элементом первого.)
Элементы данных всегда добавляются внутри элемента Children, а действия - внутри элемента Actions.
Причем, элемент данных может в свою очередь включать в себя дочерние элементы данных и действия, таким образом формируя иерархию. (Например, в пакете Composite.Community.Blog, записи блога как элементы данных одного типа включают в себя комментарии как дочерние элементы данных другого типа.)
Если мы добавляем действия под элементом, то эти действия относятся именно к этому элементу.
В нашем приложении мы не добавляем никакие элементы данных в структуру, то есть наше приложение не будет показывать древовидную структуру в админке. (Добавлении элементов данных мы рассмотрим в других сообщениях на других примерах.)
Однако мы добавили одно действие. Если действия добавляются непосредственно под ElementRoot, то эти действия будут относится к элементам того типа, к которому приложение подключается. В данном случае - это страница в C1 (Composite.Data.Types.IPage). Именно таким образом можно расширять возможности операций над существующим элементами иерархий в C1.
Добавлять можно разные действия, каждое из которых мы рассмотрим подробнее позже.
В данном примере мы используем действие MessageBoxAction, которое показывает сообщение в виде диалогового окна.
Каждое действие вызывается при помощи кнопки на контекстной панели инструментов и пункта контекстного меню. Минимум нужно указать надпись (label) для этого действия в атрибуте Label, которая появится на кнопке и в меню.
По умолчанию будет использоваться иконка, определенная для этого действия, а при наведении на кнопку, всплывающая подсказка будет показывать тот же текст, что используется для надписи. Однако эти значения можно заменить на свои, указав их в необязательных атрибутах Icon (иконка) и ToolTip (подсказка). (Названия допустимых иконок можно посмотреть здесь /Composite/images/icons/StandardIcons.xml.)
Для MessageBoxAction нужно обязательно задать заголовок окна (атрибут MessageBoxTitle) и текст сообщения (атрибут MessageBoxMessage).
По умолчанию используется тип окна “message” (сообщение), но можно явно задать тип окна в необязательном атрибуте MessageDialogType. Типы окна могут быть такие:
Итак, у MessageBoxAction три обязательных атрибута: Label, MessageBoxTitle, MessageBoxMessage.
Вы конечно же обратили внимание на то, что для значений атрибутов MessageBoxTitle и MessageBoxMessage мы используем не простые строки (константы), а что-то типа ${C1:Data:Composite.Data.Types.IPage:Title}.
Это динамические значения и об их использовании в консольных приложениях мы поговорим в следующем сообщении.
(продолжение)
Предыдущие сообщения по теме:
Корневым элементом определения любого приложения является ElementStructure, включающий в себя два дочерних элемента. Дочерний элемент ElementStructure.AutoAttachments указывает, как и куда подключать древовидную структуру приложения. Его мы рассмотрели в предыдущем сообщении.
А вот сама древовидная структура приложения формируется во втором дочернем элементе - ElementRoot. Именно здесь мы добавляем нужные элементы и/или нужные действия над элементами - то, что видимо конечному пользователю.
<ElementRoot>
<!-- … -->
</ElementRoot>
<!-- … -->
</ElementRoot>
(Главное не путать корневой элемент приложения ElementStructure и корневой элемент структуры приложения ElementRoot. Второй является дочерним элементом первого.)
Элементы данных всегда добавляются внутри элемента Children, а действия - внутри элемента Actions.
<ElementRoot>
<Children>
<!-- элементы данных -->
</Children>
<Actions>
<!-- действия над элементами -->
</Actions>
</ElementRoot>
<Children>
<!-- элементы данных -->
</Children>
<Actions>
<!-- действия над элементами -->
</Actions>
</ElementRoot>
Причем, элемент данных может в свою очередь включать в себя дочерние элементы данных и действия, таким образом формируя иерархию. (Например, в пакете Composite.Community.Blog, записи блога как элементы данных одного типа включают в себя комментарии как дочерние элементы данных другого типа.)
Если мы добавляем действия под элементом, то эти действия относятся именно к этому элементу.
В нашем приложении мы не добавляем никакие элементы данных в структуру, то есть наше приложение не будет показывать древовидную структуру в админке. (Добавлении элементов данных мы рассмотрим в других сообщениях на других примерах.)
Однако мы добавили одно действие. Если действия добавляются непосредственно под ElementRoot, то эти действия будут относится к элементам того типа, к которому приложение подключается. В данном случае - это страница в C1 (Composite.Data.Types.IPage). Именно таким образом можно расширять возможности операций над существующим элементами иерархий в C1.
Добавлять можно разные действия, каждое из которых мы рассмотрим подробнее позже.
В данном примере мы используем действие MessageBoxAction, которое показывает сообщение в виде диалогового окна.
<MessageBoxAction Label="GUID"
MessageBoxTitle="${C1:Data:Composite.Data.Types.IPage:Title}"
MessageBoxMessage="${C1:Data:Composite.Data.Types.IPage:Id}" />
MessageBoxTitle="${C1:Data:Composite.Data.Types.IPage:Title}"
MessageBoxMessage="${C1:Data:Composite.Data.Types.IPage:Id}" />
Каждое действие вызывается при помощи кнопки на контекстной панели инструментов и пункта контекстного меню. Минимум нужно указать надпись (label) для этого действия в атрибуте Label, которая появится на кнопке и в меню.
По умолчанию будет использоваться иконка, определенная для этого действия, а при наведении на кнопку, всплывающая подсказка будет показывать тот же текст, что используется для надписи. Однако эти значения можно заменить на свои, указав их в необязательных атрибутах Icon (иконка) и ToolTip (подсказка). (Названия допустимых иконок можно посмотреть здесь /Composite/images/icons/StandardIcons.xml.)
Для MessageBoxAction нужно обязательно задать заголовок окна (атрибут MessageBoxTitle) и текст сообщения (атрибут MessageBoxMessage).
По умолчанию используется тип окна “message” (сообщение), но можно явно задать тип окна в необязательном атрибуте MessageDialogType. Типы окна могут быть такие:
- “message” (сообщение)
- “question” (вопрос)
- “warning” (предупреждение)
- “error” (ошибка)
Итак, у MessageBoxAction три обязательных атрибута: Label, MessageBoxTitle, MessageBoxMessage.
Вы конечно же обратили внимание на то, что для значений атрибутов MessageBoxTitle и MessageBoxMessage мы используем не простые строки (константы), а что-то типа ${C1:Data:Composite.Data.Types.IPage:Title}.
Это динамические значения и об их использовании в консольных приложениях мы поговорим в следующем сообщении.
(продолжение)
Предыдущие сообщения по теме:
Комментариев нет:
Отправить комментарий