Search in sources :

Example 1 with SQLIdentifierDetector

use of org.jkiss.dbeaver.model.sql.parser.SQLIdentifierDetector in project dbeaver by serge-rider.

the class SQLEditorPropertyTester method test.

@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
    if (!(receiver instanceof SQLEditorBase)) {
        return false;
    }
    SQLEditor editor = (SQLEditor) receiver;
    final Control editorControl = editor.getEditorControl();
    if (editorControl == null) {
        return false;
    }
    boolean hasConnection = editor.getDataSourceContainer() != null;
    switch(property) {
        case PROP_CAN_EXECUTE:
            // Do not check hasActiveQuery - sometimes jface don't update action enablement after cursor change/typing
            return true;
        /* && (!"statement".equals(expectedValue) || editor.hasActiveQuery())*/
        case PROP_CAN_EXPLAIN:
            return hasConnection && GeneralUtils.adapt(editor.getDataSource(), DBCQueryPlanner.class) != null;
        case PROP_CAN_NAVIGATE:
            {
                // Check whether some word is under cursor
                ISelectionProvider selectionProvider = editor.getSelectionProvider();
                if (selectionProvider == null) {
                    return false;
                }
                ITextSelection selection = (ITextSelection) selectionProvider.getSelection();
                IDocument document = editor.getDocument();
                return selection != null && document != null && !new SQLIdentifierDetector(editor.getSyntaxManager().getDialect(), editor.getSyntaxManager().getStructSeparator(), editor.getSyntaxManager().getIdentifierQuoteStrings()).detectIdentifier(document, new Region(selection.getOffset(), selection.getLength())).isEmpty();
            }
        case PROP_CAN_EXPORT:
            return hasConnection && editor.hasActiveQuery();
        case PROP_HAS_SELECTION:
            {
                ISelection selection = editor.getSelectionProvider().getSelection();
                return selection instanceof ITextSelection && ((ITextSelection) selection).getLength() > 0;
            }
        case PROP_FOLDING_ENABLED:
            return editor.isFoldingEnabled();
        case PROP_FOLDING_SUPPORTED:
            return editor.getAnnotationModel() != null;
    }
    return false;
}
Also used : Control(org.eclipse.swt.widgets.Control) ISelectionProvider(org.eclipse.jface.viewers.ISelectionProvider) ISelection(org.eclipse.jface.viewers.ISelection) SQLIdentifierDetector(org.jkiss.dbeaver.model.sql.parser.SQLIdentifierDetector) Region(org.eclipse.jface.text.Region) ITextSelection(org.eclipse.jface.text.ITextSelection) IDocument(org.eclipse.jface.text.IDocument)

Example 2 with SQLIdentifierDetector

use of org.jkiss.dbeaver.model.sql.parser.SQLIdentifierDetector in project dbeaver by dbeaver.

the class SQLEditorPropertyTester method test.

@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
    if (!(receiver instanceof SQLEditorBase)) {
        return false;
    }
    SQLEditor editor = (SQLEditor) receiver;
    final Control editorControl = editor.getEditorControl();
    if (editorControl == null) {
        return false;
    }
    boolean hasConnection = editor.getDataSourceContainer() != null;
    switch(property) {
        case PROP_CAN_EXECUTE:
            // Do not check hasActiveQuery - sometimes jface don't update action enablement after cursor change/typing
            return true;
        /* && (!"statement".equals(expectedValue) || editor.hasActiveQuery())*/
        case PROP_CAN_EXPLAIN:
            return hasConnection && GeneralUtils.adapt(editor.getDataSource(), DBCQueryPlanner.class) != null;
        case PROP_CAN_NAVIGATE:
            {
                // Check whether some word is under cursor
                ISelectionProvider selectionProvider = editor.getSelectionProvider();
                if (selectionProvider == null) {
                    return false;
                }
                ITextSelection selection = (ITextSelection) selectionProvider.getSelection();
                IDocument document = editor.getDocument();
                return selection != null && document != null && !new SQLIdentifierDetector(editor.getSyntaxManager().getDialect(), editor.getSyntaxManager().getStructSeparator(), editor.getSyntaxManager().getIdentifierQuoteStrings()).detectIdentifier(document, new Region(selection.getOffset(), selection.getLength())).isEmpty();
            }
        case PROP_CAN_EXPORT:
            return hasConnection && editor.hasActiveQuery();
        case PROP_HAS_SELECTION:
            {
                ISelection selection = editor.getSelectionProvider().getSelection();
                return selection instanceof ITextSelection && ((ITextSelection) selection).getLength() > 0;
            }
        case PROP_FOLDING_ENABLED:
            return editor.isFoldingEnabled();
        case PROP_FOLDING_SUPPORTED:
            return editor.getAnnotationModel() != null;
    }
    return false;
}
Also used : Control(org.eclipse.swt.widgets.Control) ISelectionProvider(org.eclipse.jface.viewers.ISelectionProvider) ISelection(org.eclipse.jface.viewers.ISelection) SQLIdentifierDetector(org.jkiss.dbeaver.model.sql.parser.SQLIdentifierDetector) Region(org.eclipse.jface.text.Region) ITextSelection(org.eclipse.jface.text.ITextSelection) IDocument(org.eclipse.jface.text.IDocument)

Aggregations

IDocument (org.eclipse.jface.text.IDocument)2 ITextSelection (org.eclipse.jface.text.ITextSelection)2 Region (org.eclipse.jface.text.Region)2 ISelection (org.eclipse.jface.viewers.ISelection)2 ISelectionProvider (org.eclipse.jface.viewers.ISelectionProvider)2 Control (org.eclipse.swt.widgets.Control)2 SQLIdentifierDetector (org.jkiss.dbeaver.model.sql.parser.SQLIdentifierDetector)2