Аннотации контроллеров
Аннотации на классе контроллера используются для предоставления фреймворку информации об экране. Некоторые аннотации применимы для любого типа экрана, некоторые должны быть использованы только в экранах редактирования или поиска.
Общие аннотации
@UiController("sample_OrderScreen")
@UiDescriptor("order-screen.xml")
@MultipleOpen
@DialogMode(forceDialog = true)
public class OrderScreen extends Screen {
-
@UiController
указывает, что данный класс является контроллером экрана. Значение аннотации задает id экрана, который используется для ссылки на экран из главного меню или при открытии экрана программно. -
@UiDescriptor
соединяет контроллер с XML-дескриптором. Значение аннотации указывает путь к файлу. Если значение содержит только имя файла, подразумевается что файл находится в том же пакете что и класс контроллера. -
@MultipleOpen
указывает, что из главного меню можно открыть несколько экземпляров данного экрана. По умолчанию, когда пользователь выбирает пункт главного меню, фреймворк проверяет, не открыт ли наверху какой-либо вкладки главного окна экран с тем же классом и id. Если такой экран найден, он закрывается, и новый экран открывается в новой вкладке. Когда на экране присутствует аннотация @MultipleOpen, никаких проверок не производится, и новый экземпляр экрана просто открывается в новой вкладке.Можно предоставить собственный способ проверки, является ли экран тем же самым, переопределив метод
isSameScreen()
контроллера. -
@DialogMode
позволяет указать параметры геометрии и поведения экрана при открытии его в диалоговом окне. Данная аннотация соответствует элементу<dialogMode>
дескриптора экрана и может быть использована вместо него. Значения из XML имеют более высокий приоритет для всех параметров кромеforceDialog
. Если его значениеtrue
или в XML, или в аннотации, то экран всегда открывается в диалоге.
Аннотации экранов выбора
// common annotations
@UiController("sample_Order.browse")
@UiDescriptor("order-browse.xml")
// lookup-specific annotations
@LookupComponent("ordersTable")
@PrimaryLookupScreen(Order.class)
public class OrderBrowse extends StandardLookup<Order> {
-
@LookupComponent
указывает id UI-компонента, который должен быть использован для получения значения из экрана выбора.Вместо использования данной аннотации, можно указать компонент выбора программно, переопределив метод контроллера
getLookupComponent()
. -
@PrimaryLookupScreen
указывает, что данный экран является экраном выбора по умолчанию для сущностей заданного типа. Данная аннотация имеет больший приоритет чем конвенция{entity_name}.lookup
/{entity_name}.browse
.
Аннотации экранов редактирования
// common annotations
@UiController("sample_Order.edit")
@UiDescriptor("order-edit.xml")
// editor-specific annotations
@EditedEntityContainer("orderDc")
@PrimaryEditorScreen(Order.class)
public class OrderEdit extends StandardEditor<Order> {
-
@EditedEntityContainer
указывает контейнер данных, содержащий редактируемую сущность.Вместо использования данной аннотации, можно указать контейнер программно, переопределив метод контроллера
getEditedEntityContainer()
. -
@PrimaryEditorScreen
указывает, что данный экран является экраном редактирования по умолчанию для сущностей заданного типа. Данная аннотация имеет больший приоритет чем конвенция{entity_name}.edit