Esempio n. 1
0
        public NodeContextMenu(SchemaTree tree, RepositoryNode node)
        {
            EventHandler onClick = null;

            this._tree = tree;
            this._node = node;
            if ((node.Repository.DriverLoader.InternalID == null) && node.Repository.DriverLoader.IsValid)
            {
                ToolStripLabel label = new ToolStripLabel("Custom driver: " + node.Repository.DriverLoader.Driver.Name);
                this.Items.Add(label);
                this.Items.Add("-");
                label.Font = new Font(label.Font, FontStyle.Bold);
            }
            if (node.Repository.IsQueryable)
            {
                this.Items.Add("New Query", Resources.New, new EventHandler(this.NewQuery));
                this.Items.Add("-");
                if ((MainForm.Instance != null) && (MainForm.Instance.CurrentQueryControl != null))
                {
                    this.Items.Add("Use in Current Query", Resources.UseCurrentQuery, (sender, e) => MainForm.Instance.CurrentQueryControl.UseCurrentDb(false));
                    if (MainForm.Instance.CurrentQueryControl.Query.Repository == node.Repository)
                    {
                        this.Items[this.Items.Count - 1].Enabled = false;
                    }
                    this.Items.Add("-");
                }
                if (MainForm.Instance != null)
                {
                    if (onClick == null)
                    {
                        onClick = (sender, e) => MainForm.Instance.ClearAllConnections(node.Repository);
                    }
                    this.Items.Add("Close all connections", null, onClick);
                    this.Items.Add("-");
                }
            }
            this.Items.Add("Refresh", Resources.Refresh, new EventHandler(this.Refresh));
            if (node.Parent == null)
            {
                this.Items.Add("Delete Connection", Resources.Delete, new EventHandler(this.Delete));
            }
            if (!((this._node.Repository.DriverLoader.SimpleAssemblyName != null) && this._node.Repository.DriverLoader.SimpleAssemblyName.StartsWith("Mindscape.LightSpeed", StringComparison.InvariantCultureIgnoreCase)) && (this._node.Repository.Parent == null))
            {
                this.Items.Add("-");
                this.Items.Add("Rename Connection", null, new EventHandler(this.Rename));
                if (!string.IsNullOrEmpty(this._node.Repository.DisplayName))
                {
                    this.Items.Add("Reset Connection Name", null, new EventHandler(this.ResetName));
                }
            }
            if (node.Parent == null)
            {
                this.Items.Add("Create Similar Connection...", null, new EventHandler(this.CreateSimilar));
                this.Items.Add("-");
                this.Items.Add("Properties", Resources.AdvancedProperties, new EventHandler(this.Edit));
            }
        }
        public ExplorerItemContextMenu(SchemaTree tree, ExplorerItemNode node)
        {
            this._tree = tree;
            this._node = node;
            this._item = node.ExplorerItem;
            string dragText = node.ExplorerItem.DragText;

            if (string.IsNullOrEmpty(dragText))
            {
                dragText = node.Text;
            }
            if (this._item.Children != null)
            {
            }
            bool flag = (CS$ < > 9__CachedAnonymousMethodDelegate5 == null) && this._item.Children.Any <ExplorerItem>(CS$ < > 9__CachedAnonymousMethodDelegate5);

            if (((this._item.Icon == ExplorerIcon.StoredProc) || (this._item.Icon == ExplorerIcon.ScalarFunction)) || (this._item.Icon == ExplorerIcon.TableFunction))
            {
                string        paramQuery   = dragText = dragText + (!flag ? "()" : " (...)");
                QueryLanguage exprLanguage = UserOptions.Instance.IsVBDefault ? QueryLanguage.VBExpression : QueryLanguage.Expression;
                this.Items.Add(paramQuery, null, delegate(object sender, EventArgs e) {
                    NewQueryArgs args = new NewQueryArgs(paramQuery, new QueryLanguage?(exprLanguage))
                    {
                        ShowParams = true
                    };
                    tree.OnNewQuery(args);
                });
                if (this._item.Icon != ExplorerIcon.TableFunction)
                {
                    this.AddDDL();
                    return;
                }
            }
            IEnumerable <string> columnNames = from n in node.Nodes.OfType <ExplorerItemNode>()
                                               where (n.ExplorerItem.Kind == ExplorerItemKind.Property) && !string.IsNullOrEmpty(n.DragText)
                                               select n.DragText;

            QueryableMenuHelper.AddQueryableItems(tree, node, this, dragText, columnNames);
            this.AddDDL();
        }
Esempio n. 3
0
        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);
            }
        }