3.5.2.5. API компонентов
Доступно для всех визуальных компонентов
  • unwrap() - возвращает экземпляр компонента для текущего типа клиента (компонент Vaadin или Swing). Можно использовать в клиентском модуле для доступа к API базового компонента, см. раздел Работа с компонентами Vaadin.

    com.vaadin.ui.TextField vTextField = textField.unwrap(com.vaadin.ui.TextField.class);
  • unwrapComposition() - возвращает экземпляр самого внешнего контейнера для текущего типа клиента. Можно использовать в клиентском модуле для доступа к API базового компонента.

Buffered
  • commit() - обновляет источник данных, сохраняя все изменения, внесённые после последнего коммита.

  • discard() - отменяет все изменения, внесённые после последнего коммита. Значение компонента обновляется из источника данных.

  • isModified() - возвращает true, если значение компонента изменилось с момента последнего обновления из источника данных.

if (textArea.isModified()) {
    textArea.commit();
}

Доступно для компонентов:

Collapsable
  • addExpandedStateChangeListener() - добавляет слушатель, реализующий интерфейс ExpandedStateChangeListener, для отслеживания событий сворачивания/разворачивания компонента.

    @Subscribe("groupBox")
    protected void onGroupBoxExpandedStateChange(Collapsable.ExpandedStateChangeEvent event) {
        notifications.create()
                .withCaption("Expanded: " + groupBox.isExpanded())
                .show();
    }

Доступно для компонентов:

ComponentContainer
  • add() - добавляет дочерний компонент в контейнер.

  • remove() - удаляет дочерний компонент из контейнера.

  • removeAll() - удаляет все дочерние компоненты из контейнера.

  • getOwnComponent() - возвращает компонент, вложенный непосредственно в этот контейнер.

  • getComponent() - возвращает компонент, находящийся где-либо внутри дерева компонентов в этом контейнере.

  • getComponentNN() - возвращает компонент, находящийся где-либо внутри дерева компонентов в этом контейнере, и выбрасывает исключение, если компонент не найден.

  • getOwnComponents() - возвращает список всех компонентов, вложенных непосредственно в этот контейнер.

  • getComponents() - возвращает список всех компонентов, находящихся где-либо внутри дерева компонентов в этом контейнере.

Доступно для компонентов:

OrderedContainer
  • indexOf() - возвращает индекс компонента внутри упорядоченного контейнера.

Доступно для компонентов:

HasContextHelp
  • setContextHelpText() - задаёт текст контекстной подсказки для компонента, см. атрибут contextHelpText.

  • setContextHelpTextHtmlEnabled() - указывает, может ли текст контекстной подсказки быть обработан как HTML, см.атрибут contextHelpTextHtmlEnabled.

  • setContextHelpIconClickHandler() - добавляет слушатель кликов по значку контекстной подсказки. Слушатель имеет приоритет над текстом подсказки, таким образом, контекстная подсказка с текстом не будет отображаться, если также установлен слушатель кликов по значку подсказки.

textArea.setContextHelpIconClickHandler(contextHelpIconClickEvent ->
        dialogs.createMessageDialog()
                .withCaption("Title")
                .withMessage("Message body")
                .withType(Dialogs.MessageType.CONFIRMATION)
                .show()
);

Доступно для большинства компонентов:

HasSettings
  • applySettings() - восстанавливает последние пользовательские настройки для этого компонента.

  • saveSettings() - сохраняет текущие пользовательские настройки для этого компонента.

Доступно для компонентов:

HasUserOriginated
  • isUserOriginated() - предоставляет информацию о происхождении события. Возвращает true, если событие было вызвано пользователем на стороне клиента, или false, если событие было вызвано программно на стороне сервера.

    Пример использования:

    @Subscribe("customersTable")
    protected void onCustomersTableSelection(Table.SelectionEvent<Customer> event) {
        if (event.isUserOriginated())
            notifications.create()
                    .withCaption("You selected " + event.getSelected().size() + " customers")
                    .show();
    }

Метод isUserOriginated() доступен для следующих событий:

  • CollapseEvent компонентов TreeDataGrid, Tree,

  • ColumnCollapsingChangeEvent компонента DataGrid,

  • ColumnReorderEvent компонента DataGrid,

  • ColumnResizeEvent компонента DataGrid,

  • ExpandedStateChangeEvent компонентов Filter и GroupBoxLayout (см. Collapsable),

  • ExpandEvent компонентов TreeDataGrid, Tree,

  • SelectedTabChangeEvent компонента TabSheet,

  • SelectionEvent компонента DataGrid,

  • SelectionEvent компонента Table,

  • SortEvent компонента DataGrid,

  • SplitPositionChangeEvent компонента SplitPanel,

  • ValueChangeEvent компонентов, реализующих интерфейс HasValue (см. ValueChangeListener).

HasValue
  • addValueChangeListener() - добавляет слушатель, реализующий интерфейс ValueChangeListener, для отслеживания изменения значения компонента.

    @Inject
    private TextField<String> textField;
    @Inject
    private Notifications notifications;
    
    @Subscribe
    protected void onInit(InitEvent event) {
        textField.addValueChangeListener(stringValueChangeEvent ->
                notifications.create()
                        .withCaption("Before: " + stringValueChangeEvent.getPrevValue() + ". After: " + stringValueChangeEvent.getValue())
                        .show());
    }

    С той же целью вы можете подписаться на событие изменения значения конкретного компонента в контроллере экрана, к примеру:

    @Subscribe("textField")
    protected void onTextFieldValueChange(HasValue.ValueChangeEvent<String> event) {
        notifications.create()
                .withCaption("Before: " + event.getPrevValue() + ". After: " + event.getValue())
                .show();
    }

См. также UserOriginated.

Доступно для компонентов:

LayoutClickNotifier
  • addLayoutClickListener() - добавляет слушатель, реализующий интерфейс LayoutClickListener, для отслеживания кликов по области компонента.

    vbox.addLayoutClickListener(layoutClickEvent ->
        notifications.create()
                .withCaption("Clicked")
                .show());

    С той же целью вы можете подписаться на событие клика по конкретному компоненту, к примеру:

    @Subscribe("vbox")
    protected void onVboxLayoutClick(LayoutClickNotifier.LayoutClickEvent event) {
        notifications.create()
                .withCaption("Clicked")
                .show();
    }

Доступно для компонентов:

HasMargin
  • setMargin() - устанавливает компоненту внешние поля.

    • Добавление внешних полей со всех сторон компонента:

      vbox.setMargin(true);
    • Добавление внешних полей только в верхней и нижней части компонента:

      vbox.setMargin(true, false, true, false);
    • Создание объекта конфигурации MarginInfo:

      vbox.setMargin(new MarginInfo(true, false, false, true));
  • getMargin() - возвращает конфигурацию внешних полей в виде экземпляра MarginInfo.

Доступно для компонентов:

HasOuterMargin
  • setOuterMargin() - устанавливает внешние поля вокруг границы компонента.

    • Добавление внешних полей со всех сторон компонента:

      groupBox.setOuterMargin(true);
    • Добавление внешних полей только в верхней и нижней части компонента:

      groupBox.setOuterMargin(true, false, true, false);
    • Создание объекта конфигурации MarginInfo:

      groupBox.setOuterMargin(new MarginInfo(true, false, false, true));
  • getOuterMargin() - возвращает конфигурацию внешних полей в виде экземпляра MarginInfo.

Доступно для компонентов:

HasSpacing
  • setSpacing() - добавляет внутренние поля между компонентом и вложенными в него компонентами.

    vbox.setSpacing(true);

Доступно для компонентов:

ShortcutNotifier
  • addShortcutAction() - добавляет действие, вызываемое при нажатии определённого сочетания клавиш.

    cssLayout.addShortcutAction(new ShortcutAction("SHIFT-A", shortcutTriggeredEvent ->
            notifications.create()
                    .withCaption("SHIFT-A action")
                    .show()));

Доступно для компонентов: