Аннотации контроллеров

Аннотации на классе контроллера используются для предоставления фреймворку информации об экране. Некоторые аннотации применимы для любого типа экрана, некоторые должны быть использованы только в экранах редактирования или поиска.

Общие аннотации

@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