Search in sources :

Example 21 with SQLEditorBase

use of org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase in project dbeaver by serge-rider.

the class ToggleBreakpointHandler method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
    if (activeEditor != null) {
        SQLEditorBase sqlEditor = activeEditor.getAdapter(SQLEditorBase.class);
        if (sqlEditor != null) {
            ITextViewer textViewer = sqlEditor.getAdapter(ITextViewer.class);
            if (textViewer != null) {
                IVerticalRulerInfo rulerInfo = sqlEditor.getAdapter(IVerticalRulerInfo.class);
                ToggleBreakpointAction action = new ToggleBreakpointAction(sqlEditor, textViewer.getDocument(), rulerInfo);
                action.runWithEvent(new Event());
            }
        }
    }
    return null;
}
Also used : SQLEditorBase(org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase) ExecutionEvent(org.eclipse.core.commands.ExecutionEvent) Event(org.eclipse.swt.widgets.Event) IEditorPart(org.eclipse.ui.IEditorPart) IVerticalRulerInfo(org.eclipse.jface.text.source.IVerticalRulerInfo) ToggleBreakpointAction(org.eclipse.debug.ui.actions.ToggleBreakpointAction) ITextViewer(org.eclipse.jface.text.ITextViewer)

Example 22 with SQLEditorBase

use of org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase in project dbeaver by serge-rider.

the class SQLEditorHandlerNavigateObject method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
    if (activeEditor != null) {
        SQLEditorBase sqlEditor = DBUtils.getAdapter(SQLEditorBase.class, activeEditor);
        if (sqlEditor != null) {
            IHyperlink hyperlink = getCurrentHyperlink(sqlEditor);
            if (hyperlink != null) {
                IRegion selRegion2 = hyperlink.getHyperlinkRegion();
                TextViewer textViewer = sqlEditor.getTextViewer();
                if (textViewer != null) {
                    textViewer.setSelectedRange(selRegion2.getOffset(), selRegion2.getLength());
                }
                hyperlink.open();
            }
        }
    }
    return null;
}
Also used : SQLEditorBase(org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase) IHyperlink(org.eclipse.jface.text.hyperlink.IHyperlink) IEditorPart(org.eclipse.ui.IEditorPart) IRegion(org.eclipse.jface.text.IRegion) TextViewer(org.eclipse.jface.text.TextViewer)

Example 23 with SQLEditorBase

use of org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase in project dbeaver by serge-rider.

the class PrefPageSQLFormat method createPreferenceContent.

@Override
protected Control createPreferenceContent(Composite parent) {
    Composite composite = UIUtils.createPlaceholder(parent, 3, 5);
    formatterSelector = UIUtils.createLabelCombo(composite, SQLEditorMessages.pref_page_sql_format_label_formatter, SWT.DROP_DOWN | SWT.READ_ONLY);
    formatterSelector.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
    formatters = SQLFormatterConfigurationRegistry.getInstance().getFormatters();
    formatters.sort(Comparator.comparing(SQLFormatterDescriptor::getLabel));
    for (SQLFormatterDescriptor formatterDesc : formatters) {
        formatterSelector.add(DBPIdentifierCase.capitalizeCaseName(formatterDesc.getLabel()));
    }
    formatterSelector.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            showFormatterSettings();
            performApply();
        }
    });
    formatterSelector.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
    formatCurrentQueryCheck = UIUtils.createCheckbox(composite, "Format active query only", "Formats only active query or selected text. Otherwise formats entire SQL script", true, 1);
    Composite formatterGroup = UIUtils.createPlaceholder(composite, 1, 5);
    formatterGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    ((GridData) formatterGroup.getLayoutData()).horizontalSpan = 3;
    /*
        {
            Composite formatterPanel = UIUtils.createPlaceholder(formatterGroup, 4, 5);
            formatterPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

            keywordCaseCombo = UIUtils.createLabelCombo(formatterPanel, CoreMessages.pref_page_sql_format_label_keyword_case, SWT.DROP_DOWN | SWT.READ_ONLY);
            keywordCaseCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
            keywordCaseCombo.add("Database");
            for (DBPIdentifierCase c :DBPIdentifierCase.values()) {
                keywordCaseCombo.add(DBPIdentifierCase.capitalizeCaseName(c.name()));
            }
            keywordCaseCombo.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    performApply();
                }
            });
        }
*/
    // External formatter
    {
        formatterConfigPlaceholder = UIUtils.createPlaceholder(formatterGroup, 2, 5);
        formatterConfigPlaceholder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING));
        formatterConfigPlaceholder.setLayout(new FillLayout());
    }
    {
        // SQL preview
        Composite previewGroup = new Composite(composite, SWT.BORDER);
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.horizontalSpan = 3;
        previewGroup.setLayoutData(gd);
        previewGroup.setLayout(new FillLayout());
        sqlViewer = new SQLEditorBase() {

            @Override
            public DBCExecutionContext getExecutionContext() {
                final DBPDataSourceContainer container = getDataSourceContainer();
                if (container != null) {
                    final DBPDataSource dataSource = container.getDataSource();
                    if (dataSource != null) {
                        return DBUtils.getDefaultContext(dataSource.getDefaultInstance(), false);
                    }
                }
                return null;
            }
        };
        try {
            try (final InputStream sqlStream = getClass().getResourceAsStream(FORMAT_FILE_NAME)) {
                final String sqlText = ContentUtils.readToString(sqlStream, StandardCharsets.UTF_8);
                IEditorSite subSite = new SubEditorSite(UIUtils.getActiveWorkbenchWindow().getActivePage().getActivePart().getSite());
                StringEditorInput sqlInput = new StringEditorInput("SQL preview", sqlText, true, GeneralUtils.getDefaultFileEncoding());
                sqlViewer.init(subSite, sqlInput);
            }
        } catch (Exception e) {
            log.error(e);
        }
        sqlViewer.createPartControl(previewGroup);
        Object text = sqlViewer.getAdapter(Control.class);
        if (text instanceof StyledText) {
            ((StyledText) text).setWordWrap(true);
        }
        sqlViewer.reloadSyntaxRules();
        previewGroup.addDisposeListener(e -> sqlViewer.dispose());
        {
            // Styles
            // Composite afGroup = UIUtils.createControlGroup(composite, CoreMessages.pref_page_sql_format_group_style, 1, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 0);
            // ((GridData)afGroup.getLayoutData()).horizontalSpan = 2;
            styleBoldKeywords = UIUtils.createCheckbox(composite, SQLEditorMessages.pref_page_sql_format_label_bold_keywords, SQLEditorMessages.pref_page_sql_format_label_bold_keywords_tip, false, 2);
            styleBoldKeywords.addSelectionListener(new SelectionAdapter() {

                @Override
                public void widgetSelected(SelectionEvent e) {
                    performApply();
                }
            });
        }
    }
    return composite;
}
Also used : SQLFormatterDescriptor(org.jkiss.dbeaver.model.sql.registry.SQLFormatterDescriptor) StringEditorInput(org.jkiss.dbeaver.ui.editors.StringEditorInput) DBPIdentifierCase(org.jkiss.dbeaver.model.DBPIdentifierCase) SQLFormatterConfigurationRegistry(org.jkiss.dbeaver.model.sql.registry.SQLFormatterConfigurationRegistry) StyledText(org.eclipse.swt.custom.StyledText) DBPPreferenceStore(org.jkiss.dbeaver.model.preferences.DBPPreferenceStore) IEditorSite(org.eclipse.ui.IEditorSite) ISourceViewer(org.eclipse.jface.text.source.ISourceViewer) SQLEditorBase(org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase) DBCExecutionContext(org.jkiss.dbeaver.model.exec.DBCExecutionContext) SQLTokenizedFormatterConfigurationPage(org.jkiss.dbeaver.ui.editors.sql.preferences.format.tokenized.SQLTokenizedFormatterConfigurationPage) Composite(org.eclipse.swt.widgets.Composite) UIUtils(org.jkiss.dbeaver.ui.UIUtils) Locale(java.util.Locale) Log(org.jkiss.dbeaver.Log) GridData(org.eclipse.swt.layout.GridData) FillLayout(org.eclipse.swt.layout.FillLayout) DBPDataSource(org.jkiss.dbeaver.model.DBPDataSource) SQLPreferenceConstants(org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) SQLFormatterDescriptor(org.jkiss.dbeaver.model.sql.registry.SQLFormatterDescriptor) GeneralUtils(org.jkiss.dbeaver.utils.GeneralUtils) CommonUtils(org.jkiss.utils.CommonUtils) Combo(org.eclipse.swt.widgets.Combo) Button(org.eclipse.swt.widgets.Button) DBUtils(org.jkiss.dbeaver.model.DBUtils) ContentUtils(org.jkiss.dbeaver.utils.ContentUtils) SQLModelPreferences(org.jkiss.dbeaver.model.sql.SQLModelPreferences) SQLFormatterExternal(org.jkiss.dbeaver.model.sql.format.external.SQLFormatterExternal) SQLExternalFormatterConfigurationPage(org.jkiss.dbeaver.ui.editors.sql.preferences.format.SQLExternalFormatterConfigurationPage) SQLEditorMessages(org.jkiss.dbeaver.ui.editors.sql.internal.SQLEditorMessages) StandardCharsets(java.nio.charset.StandardCharsets) DBPDataSourceContainer(org.jkiss.dbeaver.model.DBPDataSourceContainer) List(java.util.List) SQLFormatter(org.jkiss.dbeaver.model.sql.format.SQLFormatter) SQLFormatterConfigurator(org.jkiss.dbeaver.ui.editors.sql.preferences.format.SQLFormatterConfigurator) DBException(org.jkiss.dbeaver.DBException) TextSelection(org.eclipse.jface.text.TextSelection) SWT(org.eclipse.swt.SWT) SubEditorSite(org.jkiss.dbeaver.ui.editors.SubEditorSite) TargetPrefPage(org.jkiss.dbeaver.ui.preferences.TargetPrefPage) IDialogPage(org.eclipse.jface.dialogs.IDialogPage) SelectionEvent(org.eclipse.swt.events.SelectionEvent) SQLFormatterTokenized(org.jkiss.dbeaver.model.sql.format.tokenized.SQLFormatterTokenized) PrefUtils(org.jkiss.dbeaver.utils.PrefUtils) Comparator(java.util.Comparator) Control(org.eclipse.swt.widgets.Control) InputStream(java.io.InputStream) StyledText(org.eclipse.swt.custom.StyledText) Composite(org.eclipse.swt.widgets.Composite) InputStream(java.io.InputStream) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) FillLayout(org.eclipse.swt.layout.FillLayout) DBPDataSource(org.jkiss.dbeaver.model.DBPDataSource) StringEditorInput(org.jkiss.dbeaver.ui.editors.StringEditorInput) DBException(org.jkiss.dbeaver.DBException) SubEditorSite(org.jkiss.dbeaver.ui.editors.SubEditorSite) Control(org.eclipse.swt.widgets.Control) SQLEditorBase(org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase) GridData(org.eclipse.swt.layout.GridData) SelectionEvent(org.eclipse.swt.events.SelectionEvent) DBPDataSourceContainer(org.jkiss.dbeaver.model.DBPDataSourceContainer) IEditorSite(org.eclipse.ui.IEditorSite)

Example 24 with SQLEditorBase

use of org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase in project dbeaver by serge-rider.

the class SQLEditorHandlerExpandCollapseAllFoldings method execute.

@Override
public Object execute(ExecutionEvent event) {
    IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
    if (activeEditor == null) {
        return null;
    }
    SQLEditorBase sqlEditor = activeEditor.getAdapter(SQLEditorBase.class);
    if (sqlEditor == null || !sqlEditor.isFoldingEnabled()) {
        return null;
    }
    ProjectionAnnotationModel model = sqlEditor.getAnnotationModel();
    if (model == null) {
        return null;
    }
    IDocument document = sqlEditor.getDocument();
    if (document == null) {
        return null;
    }
    int length = sqlEditor.getDocument().getLength();
    String commandId = event.getCommand().getId();
    if (EXPAND_COMMAND_ID.equals(commandId)) {
        model.expandAll(0, length);
    } else if (COLLAPSE_COMMAND_ID.equals(commandId)) {
        model.collapseAll(0, length);
    }
    return null;
}
Also used : ProjectionAnnotationModel(org.eclipse.jface.text.source.projection.ProjectionAnnotationModel) SQLEditorBase(org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase) IEditorPart(org.eclipse.ui.IEditorPart) IDocument(org.eclipse.jface.text.IDocument)

Example 25 with SQLEditorBase

use of org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase in project dbeaver by serge-rider.

the class SQLEditorHandlerAssistTemplates method execute.

@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
    IEditorPart activeEditor = HandlerUtil.getActiveEditor(event);
    if (activeEditor instanceof SQLEditorBase) {
        SQLEditorBase editor = (SQLEditorBase) activeEditor;
        boolean oldValue = SQLCompletionProcessor.isLookupTemplates();
        SQLCompletionProcessor.setLookupTemplates(true);
        try {
            editor.getTextViewer().doOperation(SourceViewer.CONTENTASSIST_PROPOSALS);
        } finally {
            SQLCompletionProcessor.setLookupTemplates(oldValue);
        }
    }
    return null;
}
Also used : SQLEditorBase(org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase) IEditorPart(org.eclipse.ui.IEditorPart)

Aggregations

SQLEditorBase (org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase)25 IEditorPart (org.eclipse.ui.IEditorPart)14 StyledText (org.eclipse.swt.custom.StyledText)7 FillLayout (org.eclipse.swt.layout.FillLayout)7 GridData (org.eclipse.swt.layout.GridData)7 DisposeEvent (org.eclipse.swt.events.DisposeEvent)4 DisposeListener (org.eclipse.swt.events.DisposeListener)4 Composite (org.eclipse.swt.widgets.Composite)4 NotNull (org.jkiss.code.NotNull)4 DBCExecutionContext (org.jkiss.dbeaver.model.exec.DBCExecutionContext)4 StringEditorInput (org.jkiss.dbeaver.ui.editors.StringEditorInput)4 SubEditorSite (org.jkiss.dbeaver.ui.editors.SubEditorSite)4 InputStream (java.io.InputStream)3 IRegion (org.eclipse.jface.text.IRegion)3 IHyperlink (org.eclipse.jface.text.hyperlink.IHyperlink)3 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)3 SelectionEvent (org.eclipse.swt.events.SelectionEvent)3 IContextService (org.eclipse.ui.contexts.IContextService)3 SQLDialect (org.jkiss.dbeaver.model.sql.SQLDialect)3 EntityEditor (org.jkiss.dbeaver.ui.editors.entity.EntityEditor)3