@Override
        public void fillConfigMenu(IContributionManager menuManager) {
            super.fillConfigMenu(menuManager);
            if (isTree && supportsDataGrouping()) {
                menuManager.add(new Separator());
                int selectedColumnNumber = columnController.getSelectedColumnNumber();
                String columnName = null;
                final boolean columnPersist = selectedColumnNumber != -1;
                if (columnPersist) {
                    columnName = columnController.getColumnName(selectedColumnNumber);
                }
                menuManager.add(
                    new Action(NLS.bind(UINavigatorMessages.object_list_control_group_by_label, CommonUtils.notEmpty(columnName)), null) {
                        @Override
                        public void run() {
                            if (columnPersist) {
                                groupingColumn = getColumnByIndex(selectedColumnNumber);
                                groupingColumn.columnIndex = selectedColumnNumber;
                                originalColumnOrder = ((TreeViewer) itemsViewer).getTree().getColumnOrder();
                                moveGroupingColumnInTheBeginning(selectedColumnNumber);
                                itemsViewer.setContentProvider(new GroupingTreeProvider());
                                itemsViewer.refresh();
                                ((TreeViewer) itemsViewer).expandToLevel(2);
                            }
                        }

                        @Override
                        public boolean isEnabled() {
                            return columnPersist;
                        }
                    }
                );

                menuManager.add(new Action(UINavigatorMessages.object_list_control_clear_grouping_label, null) {
                    @Override
                    public void run() {
                        groupingColumn = null;
                        restoreOriginalColumnsOrder();
                        itemsViewer.setContentProvider(originalContentProvider);
                        itemsViewer.refresh();
                    }

                    @Override
                    public boolean isEnabled() {
                        return groupingColumn != null;
                    }
                });
            }
        }
Searcher. Filters elements by name and description
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/itemlist/ObjectListControl.java