private void GenerateQueryPlan()
        {
            OpenedFile file = fileService.Value.GetActiveFile();
            int        line;
            FileName   filename;
            int        column;

            if (file is SbqlOpenedFile)
            {
                string         dbName   = databasesComboBox.SelectedItem as string;
                SbqlOpenedFile sbqlFile = file as SbqlOpenedFile;
                string         query    = GetSelectedQuery(out filename, out line, out column);
                if (string.IsNullOrEmpty(query))
                {
                    query = sbqlFile.Query;
                }
                this.m_lastQuery = query;
                if (!string.IsNullOrEmpty(dbName) && !string.IsNullOrEmpty(query))
                {
                    SetEnableCondition(false);
                    queryPlanService.Clear();
                    applicationStatus.SetStatus("Generating query plan...", true);
                    m_SelectedFileName = file.FileName;
                    connectionService.GetQueryPlan(new DatabaseInfo {
                        Name = dbName
                    }, new SbqlQuery(query), GetQueryPlanCompleted);
                }
            }
        }
        private string GetSelectedQuery(out FileName filename, out int line, out int column)
        {
            OpenedFile file = fileService.Value.GetActiveFile();

            if (file != null && file is SbqlOpenedFile)
            {
                SbqlOpenedFile sbqlFile = file as SbqlOpenedFile;

                int selectionLength = (sbqlFile.Document as ISourceEditor).TextEditor.TextArea.Selection.Length;
                int caretColumn     = (sbqlFile.Document as ISourceEditor).TextEditor.TextArea.Caret.Column;

                line = (sbqlFile.Document as ISourceEditor).TextEditor.TextArea.Caret.Line;
                int col1 = caretColumn - selectionLength;
                column   = Math.Min(col1 >= 1 ? col1 : caretColumn, caretColumn);
                filename = sbqlFile.FileName;
                return(sbqlFile.SelectedQuery);
            }
            line     = 0;
            column   = 0;
            filename = null;
            return(null);
        }