From 753999158eb358b16bb5b958d31d1a8aeb2bcefc Mon Sep 17 00:00:00 2001 From: Ilya Muradyan Date: Mon, 2 Jun 2025 03:11:03 +0200 Subject: [PATCH] KTNB-1022: Actualize the grid toolbar explicitly GitOrigin-RevId: 377e88566047bc1cc280b21ba4ca9f25f0fcd6b3 --- grid/impl/src/datagrid/GridUtil.java | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/grid/impl/src/datagrid/GridUtil.java b/grid/impl/src/datagrid/GridUtil.java index 48fd7d5c57c8..54ee7ea43ffe 100644 --- a/grid/impl/src/datagrid/GridUtil.java +++ b/grid/impl/src/datagrid/GridUtil.java @@ -68,6 +68,7 @@ import com.intellij.psi.CommonClassNames; import com.intellij.psi.PsiElement; import com.intellij.psi.SingleRootFileViewProvider; import com.intellij.testFramework.LightVirtualFile; +import com.intellij.ui.AppUIUtil; import com.intellij.ui.ClientProperty; import com.intellij.ui.ExperimentalUI; import com.intellij.ui.TextFieldWithAutoCompletion; @@ -805,6 +806,10 @@ public class GridUtil extends GridUtilCore { ActionManager actionManager = ActionManager.getInstance(); ActionToolbar toolbar = actionManager.createActionToolbar(ActionPlaces.EDITOR_TOOLBAR, actions, true); ActionToolbar toolbarSecondary = actionManager.createActionToolbar(ActionPlaces.EDITOR_TOOLBAR, secondaryActions, true); + + addToolbarActualizer(dataGrid, toolbar); + addToolbarActualizer(dataGrid, toolbarSecondary); + toolbar.setTargetComponent(dataGrid.getPanel().getComponent()); toolbarSecondary.setTargetComponent(dataGrid.getPanel().getComponent()); toolbarSecondary.setReservePlaceAutoPopupIcon(false); @@ -828,6 +833,29 @@ public class GridUtil extends GridUtilCore { return header; } + private static void addToolbarActualizer( + @NotNull DataGrid dataGrid, + @NotNull ActionToolbar toolbar + ) { + var pageModel = dataGrid.getDataHookup().getPageModel(); + if (pageModel instanceof MultiPageModel multiPageModel) { + multiPageModel.addPageModelListener( + new MultiPageModel.PageModelListener() { + + @Override + public void pageSizeChanged() { + AppUIUtil.invokeOnEdt(() -> { + toolbar.updateActionsAsync(); + }); + } + + @Override + public void pageStartChanged() {} + } + ); + } + } + public static @NotNull JComponent addVerticalGridHeaderComponent(@NotNull DataGrid dataGrid, @Nullable String actionGroupName) { ActionManager actionManager = ActionManager.getInstance(); ActionGroup actions = actionGroupName == null ? new EmptyActionGroup() : (ActionGroup)actionManager.getAction(actionGroupName);