В Сuba и jmix 1.5 была возможность выбирать несколько строк с помощью клавиш shift и стрелочками выбрать нужный диапазон строк. Vaadin 24 предоставляет такую возможность адд-оном selection-grid Selection Grid - Vaadin Add-on Directory. Как правильно расширить DataGrid для адаптации с этим адд-оном (если вообще это возможно)? Прошу добавить такую фичу в следующих релизах jmix
Добрый день!
Интегрировать это аддон во фреймворк не представляется возможным, потому как он не удовлетворяет стандартам кода и функциональности.
Т.к. данных аддон содержит компонент SelectionGrid
, который является наследником Grid
, то у вас есть несколько вариантов для того, чтобы использовать эту функциональность в своём проекте.
Вариант 1 (глобальный)
Если Вы хотите глобально изменить все компоненты DataGrid
на представленный в аддоне, то вам необходимо сделать следующее:
-
Расширить класс
SelectionGrid
public class MyDataGrid<E> extends SelectionGrid<E> { // code }
-
Затем необходимо перенести код из
io.jmix.flowui.component.grid.DataGrid
в вашMyDataGrid
Это необходимо сделать для того, чтобы перенести функциональность привязки данных и остальных надстроек фреймворка Jmix в Ваш компонент. Это становится возможным, потому как реализованный во фреймворкеDataGrid
также, как иSelectionGrid
является наследником VaadinGrid
-
Далее нужно заменить все компоненты
DataGrid
наMyDataGrid
, для этого необходимо зарегистрировать:@Bean public ComponentRegistration myDataGrid() { return ComponentRegistrationBuilder.create("dataGrid") .withComponentClass(MyDataGrid.class) .withComponentLoaderClass(DataGridLoader.class) .build(); }
Здесь, происходит регистрация компонента на xml-элемент
dataGrid
, который будет загружать классMyDataGrid
, используя стандартныйDataGridLoader
из фреймворка. Таким образом будет необходимо настроитьselectionModel
в контроллере экрана.
Вариант 2 (локальный)
Если Вам необходимо использовать этот компонент в одном месте, то Вы можете сделать следующее
-
Создать
SelectionGrid
в экране -
Привязать в него данные вручную
-
Также, если необходима поддержка XML Вы можете обратиться к примеру, который представлен в нашем демо-приложении: UI Samples :: Add-on integration
В этом случае будет достаточно определить XSD схему, из которой будет определена разметка будущего компонента, в ней же Вы укажете недостающие свойства
SelectionGrid
Затем нужно будет реализовать свойMyDataGridLoader
по аналогии сio.jmix.flowui.xml.layout.loader.component.DataGridLoader
из фреймворка, и заменить его в регистрации, о которой я говорил выше
В приложении UI Samples Вы сможете найти другие примеры интеграции компонентов и аддонов в состав Вашего приложения.
С уважением,
Дмитрий