@Override
    protected StyledText createTextWidget(Composite parent, int styles) {
        StyledText textWidget = super.createTextWidget(parent, styles);
        textWidget.addListener(ST.VerifyKey, event -> {
            // It is a hack to allow auto-complete with TAB key (#2316)
            // TODO: perhaps we should test ContentAssistant.isProposalPopupActive() here?
            switch (event.type) {
                case ST.VerifyKey: {
                    if (event.character == '\t'
                        && currentPrefStoreSupplier.get().getBoolean(SQLPreferenceConstants.TAB_AUTOCOMPLETION)
                    ) {
                        VerifyEvent verifyEvent = new VerifyEvent(event);
                        verifyEvent.character = '\n';
                        for (VerifyKeyListener listener : List.copyOf(verifyKeyListeners)) {
                            listener.verifyKey(verifyEvent);
                        }
                        event.doit = verifyEvent.doit;
                    }
                    break;
                }
            }
        });
        
        //textWidget.setAlwaysShowScrollBars(false);
        return textWidget;
    }
Creates an instance of this class with the given parameters.

@param parent the SWT parent control
@param ruler the vertical ruler (annotation area)
@param overviewRuler the overview ruler
@param showsAnnotationOverview <code>true</code> if the overview ruler should be shown
@param styles the SWT style bits
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewer.java