A.5. menu.xml
Файлы данного типа используются в блоке Web Client для описания структуры главного меню приложения.
Схема XML доступна по адресу http://schemas.haulmont.com/cuba/7.2/menu.xsd.
Расположение файла menu.xml
задается в свойстве приложения cuba.menuConfig. При создании нового проекта в Studio, она создает файл web-menu.xml
в корневом пакете модуля web, например modules/web/src/com/company/sample/web-menu.xml
.
menu-config
- корневой XML-элемент файла. Элементы menu-config
образуют древовидную структуру, в которой элементы menu
представляют собой ветви, а элементы item
и separator
- листья.
-
Атрибуты элемента
menu
:-
id
- уникальный идентификатор элемента. -
caption
- заголовок элемента меню. Если не задан, заголовок формируется по правилам, описанным ниже. -
description
- текст, появляющийся во всплывающей подсказке при наведении курсора мыши. Можно использовать локализованные сообщения из главного пакета сообщений. -
icon
- значок для элемента меню. См. icon. -
insertBefore
,insertAfter
- идентификатор элемента или пункта меню, перед которым или после которого нужно вставить данный элемент. Используется в прикладном проекте для вставки элемента в нужное место меню, определенного в аналогичных файлах компонентов приложения. Разумеется, использование одного из этих атрибутов для конкретного элемента исключает возможность использования второго атрибута для данного элемента. -
stylename
- задает имя стиля пункта меню. См. Темы приложения.
-
-
Атрибуты элемента
item
:-
id
- уникальный идентификатор элемента. Если не определены атрибутыscreen
,bean
,class
, то id используется для указания на экран с таким же id. При выборе пункта меню в главном окне приложения будет открыт соответствующий экран.<item id="sample_Foo.browse"/>
-
caption
- заголовок элемента меню. Если не задан, заголовок формируется по правилам, описанным ниже.<item id="sample_Foo.browse" caption="mainMsg://fooBrowseCaption"/>
-
screen
- идентификатор экрана (например,sample_Foo.browse
). Может быть использован для включения в меню одного и того же экрана несколько раз. При выборе пункта меню в главном окне приложения будет открыт соответствующий экран.<item id="foo1" screen="sample_Foo.browse"/> <item id="foo2" screen="sample_Foo.browse"/>
-
bean
- имя бина. Атрибут должен использоваться совместно сbeanMethod
. При выборе пункта меню будет вызван метод бина.<item bean="sample_FooProcessor" beanMethod="processFoo"/>
-
class
- полное имя класса, который реализует интерфейсRunnable
,Consumer<Map<String, Object>>
, илиMenuItemRunnabl
. При выборе пункта меню будет создан экземпляр данного класса и вызван его метод.<item class="com.company.sample.web.FooProcessor"/>
-
description
- текст, появляющийся во всплывающей подсказке при наведении курсора мыши. Можно использовать локализованные сообщения из главного пакета сообщений.<item id="sample_Foo.browse" description="mainMsg://fooBrowseDescription"/>
-
shortcut
- горячая клавиша для вызова данного пункта меню. Возможные модификаторы -ALT
,CTRL
,SHIFT
- отделяются символом “-”. Например:shortcut="ALT-C" shortcut="ALT-CTRL-C" shortcut="ALT-CTRL-SHIFT-C"
Горячие клавиши можно также задавать в свойствах приложения и использовать в
menu.xml
следующим образом:shortcut="${sales.menu.customer}"
-
openType
- тип открытия экрана, возможные значения соответствуют перечислениюOpenMode
:NEW_TAB
,THIS_TAB
,DIALOG
. По умолчанию -NEW_TAB
. -
icon
- значок для элемента меню. См. icon. -
insertBefore
,insertAfter
- идентификатор элемента или пункта меню, перед которым или после которого нужно вставить данный элемент. -
resizable
- актуально для типа открытия экранаDIALOG
- задает окну возможность изменения размера. Возможные значения:true
,false
. По умолчанию главное меню не влияет на возможность изменения размера диалоговых окон. -
stylename
- задает имя стиля пункта меню. См. Темы приложения.
-
-
Вложенные элементы
item
:
Пример файла меню:
<menu-config xmlns="http://schemas.haulmont.com/cuba/menu.xsd">
<menu id="sales" insertBefore="administration">
<item id="sales_Order.lookup"/>
<separator/>
<item id="sales_Customer.lookup" openType="DIALOG"/> (1)
<item screen="sales_CustomerInfo">
<properties>
<property name="stringParam" value="some string"/> (2)
<property name="customerParam" (3)
entityClass="com.company.demo.entity.Customer"
entityId="0118cfbe-b520-797e-98d6-7d54146fd586"/>
</properties>
</item>
<item screen="sales_Customer.edit">
<properties>
<property name="entityToEdit" (4)
entityClass="com.company.demo.entity.Customer"
entityId="0118cfbe-b520-797e-98d6-7d54146fd586"
entityView="_local"/>
</properties>
</item>
</menu>
</menu-config>
1 | - открыть экран в диалоговом окне. |
2 | - вызвать метод setStringParam() , передавая в него some string . |
3 | - вызвать метод setCustomerParam() , передавая в него экземпляр сущности загруженный по данному id. |
4 | - вызвать метод setEntityToEdit() класса StandardEditor , передавая в него экземпляр сущности загруженный по данному id и представлению. |
menu-config.sales=Sales
menu-config.sales_Customer.lookup=Customers
Если атрибут id
не задан, имя элемента меню будет составлено из имени класса (если задан атрибут class
) или имени бина и его метода (если задан атрибут bean
), поэтому для локализации рекомендуется указывать атрибут id
.