3.5.2.2.3. ButtonsPanel

ButtonsPanel - контейнер, унифицирующий использование и размещение компонентов (чаще всего кнопок) для управления данными в таблице.

gui buttonsPanel

XML-имя компонента: buttonsPanel.

Пример описания ButtonsPanel в XML-дескрипторе экрана:

<table id="customersTable" dataContainer="customersDc" width="100%">
    <actions>
        <action id="create" type="create"/>
        <action id="edit" type="edit"/>
        <action id="remove" type="remove"/>
        <action id="excel" type="excel"/>
    </actions>
    <columns>
        <column id="name"/>
        <column id="email"/>
    </columns>
    <rowsCount/>
    <buttonsPanel id="buttonsPanel" alwaysVisible="true">
        <button id="createBtn" action="customersTable.create"/>
        <button id="editBtn" action="customersTable.edit"/>
        <button id="removeBtn" action="customersTable.remove"/>
        <button id="excelBtn" action="customersTable.excel"/>
    </buttonsPanel>
</table>

Элемент buttonsPanel можно разместить как внутри table, так и в произвольном месте экрана.

Если buttonsPanel находится внутри table, то она комбинируется с компонентом rowsCount таблицы, тем самым оптимально расходуя место по вертикали. Кроме того, в этом случае при открытии экрана выбора методом Frame.openLookup() (например, из компонента PickerField) панель кнопок скрывается.

Значение атрибута caption компонента buttonsPanel будет проигнорировано, если компонент находится внутри другого компонента для работы с коллекцией (Table, TreeTable, GroupTable, DataGrid, TreeDataGrid, Tree). В этом случае будет отображаться только заголовок родительского компонента.

Атрибут alwaysVisible служит для отключения скрытия панели в экране выбора при его открытии методом Frame.openLookup(). Если значение атрибута равно true, то панель с кнопками не скрывается. По умолчанию значение атрибута равно false.

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

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

  1. Создать расширение темы или новую тему.

  2. Определить переменную SCSS $cuba-buttonspanel-flow:

    $cuba-buttonspanel-flow: false

События щелчка по области компонента buttonsPanel можно отслеживать с помощью интерфейса LayoutClickListener.

В компоненте ButtonsPanel можно использовать горячие клавиши. Задать сочетание клавиш и вызываемое действие можно с помощью метода addShortcutAction():

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