В Сuba и jmix 1.5 была возможность выбирать несколько строк с помощью клавиш shift и стрелочками выбрать нужный диапазон строк. Vaadin 24 предоставляет такую возможность адд-оном selection-grid Selection Grid - Vaadin Add-on Directory. Как правильно расширить DataGrid для адаптации с этим адд-оном (если вообще это возможно)? Прошу добавить такую фичу в следующих релизах jmix
Добрый день!
Интегрировать это аддон во фреймворк не представляется возможным, потому как он не удовлетворяет стандартам кода и функциональности.
Т.к. данных аддон содержит компонент SelectionGrid, который является наследником Grid, то у вас есть несколько вариантов для того, чтобы использовать эту функциональность в своём проекте.
Вариант 1 (глобальный)
Если Вы хотите глобально изменить все компоненты DataGrid на представленный в аддоне, то вам необходимо сделать следующее:
-
Расширить класс
SelectionGridpublic 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 Вы сможете найти другие примеры интеграции компонентов и аддонов в состав Вашего приложения.
С уважением,
Дмитрий