示例#1
0
 protected internal virtual void OnNewQuery(NewQueryArgs args)
 {
     if (this.NewQuery != null)
     {
         this.NewQuery(this, args);
     }
 }
 public static void AddQueryableItems(SchemaTree tree, BaseNode node, ContextMenuStrip menu, string memberStem, IEnumerable<string> columnNames)
 {
     EventHandler onClick = null;
     EventHandler handler2 = null;
     EventHandler handler3 = null;
     EventHandler handler4 = null;
     string compQueryBase;
     bool isVBDefault = UserOptions.Instance.IsVBDefault;
     QueryLanguage exprLanguage = isVBDefault ? QueryLanguage.VBExpression : QueryLanguage.Expression;
     string take100Query = memberStem + ".Take (100)";
     menu.Items.Add(take100Query, null, (sender, e) => tree.OnNewQuery(new NewQueryArgs(take100Query, new QueryLanguage?(exprLanguage), !memberStem.Contains("..."))));
     string takeQuery = memberStem + ".Take (" + (UserOptions.Instance.ResultsInGrids ? "1000" : "...") + ")";
     menu.Items.Add(takeQuery, null, (sender, e) => tree.OnNewQuery(new NewQueryArgs(takeQuery, new QueryLanguage?(exprLanguage), UserOptions.Instance.ResultsInGrids && !memberStem.Contains("..."))));
     if (UserOptions.Instance.ResultsInGrids)
     {
         string takeBigQuery = memberStem + ".Take (50000)";
         menu.Items.Add(takeBigQuery, null, (sender, e) => tree.OnNewQuery(new NewQueryArgs(takeBigQuery, new QueryLanguage?(exprLanguage), !memberStem.Contains("..."))));
     }
     string countQuery = memberStem + ".Count()";
     menu.Items.Add(countQuery, null, (sender, e) => tree.OnNewQuery(new NewQueryArgs(countQuery, new QueryLanguage?(exprLanguage), !memberStem.Contains("..."))));
     string iterationVar = memberStem.Substring(0, 1).ToLowerInvariant();
     if (!isVBDefault)
     {
         string whereQuery = memberStem + ".Where (" + iterationVar + " => ";
         menu.Items.Add(whereQuery + "...)", null, delegate (object sender, EventArgs e) {
             NewQueryArgs args = new NewQueryArgs(whereQuery + iterationVar + (memberStem.Contains("...") ? "" : ".…)"), new QueryLanguage?(exprLanguage)) {
                 ListMembers = true
             };
             tree.OnNewQuery(args);
         });
     }
     if (isVBDefault)
     {
         compQueryBase = "From " + iterationVar + " In " + memberStem + " _\nWhere ... _\nSelect ";
     }
     else
     {
         compQueryBase = "from " + iterationVar + " in " + memberStem + "\nwhere ... \nselect ";
     }
     string simpleCompQuery = compQueryBase + iterationVar;
     menu.Items.Add(simpleCompQuery.Replace("\n", " "), null, delegate (object sender, EventArgs e) {
         NewQueryArgs args = new NewQueryArgs(simpleCompQuery, new QueryLanguage?(exprLanguage)) {
             ListMembers = true
         };
         tree.OnNewQuery(args);
     });
     simpleCompQuery = simpleCompQuery.Replace("here ...", "here " + (memberStem.Contains("...") ? "" : (iterationVar + ".…")));
     string str = compQueryBase + "new { <all columns> }";
     if (!(!columnNames.Any<string>() || isVBDefault))
     {
         menu.Items.Add(str.Replace("\n", " "), null, delegate (object sender, EventArgs e) {
             StringBuilder builder = new StringBuilder(compQueryBase.Replace("here ...", "here " + (memberStem.Contains("...") ? "" : (iterationVar + ".…"))) + "new\n{\n");
             foreach (string str in columnNames)
             {
                 if (!string.IsNullOrEmpty(str))
                 {
                     bool flag;
                     string s = (flag = str.Contains("(")) ? Regex.Match(str, @"^\w+", RegexOptions.CultureInvariant).Value : str;
                     string str3 = (!char.IsLower(s, 0) || !CSharpQueryCompiler.IsKeyword(s)) ? "" : "@";
                     builder.Append("\t");
                     if (flag)
                     {
                         builder.Append(str3 + s + " = " + iterationVar + "." + str + ",\n");
                     }
                     else
                     {
                         builder.Append(iterationVar + "." + str3 + str + ",\n");
                     }
                 }
             }
             builder.Remove(builder.Length - 2, 2);
             builder.Append("\n}");
             NewQueryArgs args = new NewQueryArgs(builder.ToString(), new QueryLanguage?(exprLanguage)) {
                 ListMembers = true
             };
             tree.OnNewQuery(args);
         });
     }
     if (!UserOptions.Instance.ResultsInGrids)
     {
         menu.Items.Add("-");
         if (onClick == null)
         {
             onClick = delegate (object sender, EventArgs e) {
                 NewQueryArgs args = new NewQueryArgs(memberStem + ".Take(100)", new QueryLanguage?(exprLanguage), !memberStem.Contains("...")) {
                     IntoGrids = true
                 };
                 tree.OnNewQuery(args);
             };
         }
         menu.Items.Add("Explore top 100 rows in grid", null, onClick);
         if (handler2 == null)
         {
             handler2 = delegate (object sender, EventArgs e) {
                 NewQueryArgs args = new NewQueryArgs(memberStem + ".Take(1000)", new QueryLanguage?(exprLanguage), !memberStem.Contains("...")) {
                     IntoGrids = true
                 };
                 tree.OnNewQuery(args);
             };
         }
         menu.Items.Add("Explore top 1000 rows in grid", null, handler2);
         if (handler3 == null)
         {
             handler3 = delegate (object sender, EventArgs e) {
                 NewQueryArgs args = new NewQueryArgs(memberStem + ".Take(50000)", new QueryLanguage?(exprLanguage), !memberStem.Contains("...")) {
                     IntoGrids = true
                 };
                 tree.OnNewQuery(args);
             };
         }
         menu.Items.Add("Explore top 50,000 rows in grid", null, handler3);
         if (handler4 == null)
         {
             handler4 = delegate (object sender, EventArgs e) {
                 NewQueryArgs args = new NewQueryArgs(simpleCompQuery, new QueryLanguage?(exprLanguage)) {
                     IntoGrids = true,
                     ListMembers = true
                 };
                 tree.OnNewQuery(args);
             };
         }
         menu.Items.Add("Execute LINQ query into data grid", null, handler4);
     }
 }
示例#3
0
 protected internal virtual void OnNewQuery(NewQueryArgs args)
 {
     if (this.NewQuery != null)
     {
         this.NewQuery(this, args);
     }
 }
示例#4
0
 private void schemaTree_NewQuery(object sender, NewQueryArgs e)
 {
     QueryControl qc = this.AddQueryPage(false, false, e.QueryText, e.Language, e.QueryName, false, true, e.IntoGrids);
     if (e.RunNow)
     {
         qc.Run();
     }
     else if (!((e.ShowParams || e.ListMembers) ? !this.ShowLicensee : true))
     {
         Program.RunOnWinFormsTimer(delegate {
             if (!qc.IsDisposed)
             {
                 try
                 {
                     if (e.ShowParams)
                     {
                         qc.CompleteParam();
                     }
                     else
                     {
                         qc.ListMembers();
                     }
                 }
                 catch
                 {
                 }
             }
         });
     }
 }