private void setupSection(@NotNull Composite sectionContents) {
            Composite control = this.viewer.getControl();
            sectionContents.setData(ResultSetViewer.CONTROL_ID, this.viewer);

            rsvConstrainedLayout = GridDataFactory.swtDefaults()
                .align(GridData.FILL, GridData.FILL).grab(true, false).hint(10, 300).create();
            control.setLayoutData(rsvConstrainedLayout);
            GridData freeLayout = GridDataFactory.swtDefaults()
                .align(GridData.FILL, GridData.FILL).grab(true, false).create();

            Label line = new Label(sectionContents, SWT.SEPARATOR | SWT.HORIZONTAL); // resultset resizing thumb
            line.setLayoutData(GridDataFactory.swtDefaults().align(GridData.FILL, GridData.FILL).grab(true, false).hint(10, 10).create());
            line.setCursor(line.getDisplay().getSystemCursor(SWT.CURSOR_SIZENS));
            line.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseDoubleClick(MouseEvent e) {
                    control.setLayoutData(control.getLayoutData() == rsvConstrainedLayout ? freeLayout : rsvConstrainedLayout);
                    queryProcessor.relayoutContents();
                }
            });
            line.addMouseMoveListener(e -> {
                if ((e.stateMask & SWT.BUTTON1) != 0) {
                    Tracker tracker = new Tracker(queryProcessor.sectionsContainer,  SWT.RESIZE | SWT.DOWN);
                    tracker.setStippled(true);
                    tracker.setCursor(tracker.getDisplay().getSystemCursor(SWT.CURSOR_SIZENS));
                    Point size = control.getSize();
                    Point origin = queryProcessor.sectionsContainer.toControl(control.toDisplay(control.getLocation()));
                    tracker.setRectangles(new Rectangle[] { new Rectangle(origin.x, origin.y, size.x, size.y + line.getSize().y / 2) });
                    if (tracker.open()) {
                        Rectangle after = tracker.getRectangles()[0];
                        int newHeight = after.height - line.getSize().y / 2;
                        if (newHeight != rsvConstrainedLayout.heightHint) {
                            rsvConstrainedLayout.heightHint = newHeight;
                            control.setLayoutData(rsvConstrainedLayout);
                            queryProcessor.relayoutContents();
                        }
                    }
                    tracker.dispose();
                }
            });

            Listener displayListener = event -> { // for the contextual tool buttons it's critical for one result set to be focused
                Control clickedWidget = (Control) event.widget;
                if (clickedWidget instanceof VerticalButton && clickedWidget.getShell() == control.getShell() && control.isVisible()) {
                    Point clickedPoint = clickedWidget.toDisplay(event.x, event.y);
                    if (control.getClientArea().contains(control.toControl(clickedPoint)) && !this.viewer.isPresentationInFocus()) {
                        for (Control c = control; c != null && !c.isFocusControl(); c = c.getParent()) {
                            if (c == sectionContents) {
                                control.setFocus();
                                break;
                            }
                        }
                    }
                }
            };
            control.getDisplay().addFilter(SWT.MouseDown, displayListener);
            control.addDisposeListener(e -> control.getDisplay().removeFilter(SWT.MouseDown, displayListener));
            
            queryProcessor.relayoutContents();
        }
Build and update icon and title
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java