пятница, 6 мая 2011 г.

Консольные приложения (3): Определение приложения. Древовидная структура

Итак, мы частично рассмотрели содержимое XML-файла простого консольного приложения, которое добавляет кнопку на панель инструментов для страниц C1 и показывает идентификатор страницы при нажатии этой кнопки.

Корневым элементом определения любого приложения является ElementStructure, включающий в себя два дочерних элемента. Дочерний элемент ElementStructure.AutoAttachments указывает, как и куда подключать древовидную структуру приложения. Его мы рассмотрели в предыдущем сообщении.

А вот сама древовидная структура приложения формируется во втором дочернем элементе - ElementRoot. Именно здесь мы добавляем нужные элементы и/или нужные действия над элементами - то, что видимо конечному пользователю.

<ElementRoot>
  <!-- … -->
</ElementRoot>

(Главное не путать корневой элемент приложения ElementStructure и корневой элемент структуры приложения ElementRoot. Второй является дочерним элементом первого.)

Элементы данных всегда добавляются внутри элемента Children, а действия - внутри элемента 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}" />

Каждое действие вызывается при помощи кнопки на контекстной панели инструментов и пункта контекстного меню. Минимум нужно указать надпись (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}.

Это динамические значения и об их использовании в консольных приложениях мы поговорим в следующем сообщении.

(продолжение)


Предыдущие сообщения по теме:

Комментариев нет:

Отправить комментарий