Exemple #1
0
        public static ContextMenuStrip Create <TEntry>(params TEntry[] ignoreList) where TEntry : CodeMenuEntry
        {
            ContextMenuStrip cms = new ContextMenuStrip
            {
                Font            = new Font("Lucida Console", 8),
                AutoClose       = true,
                Opacity         = 0.9,
                ShowImageMargin = false
            };

            var variables = Helpers.GetValueFields <TEntry>().Where(x => !ignoreList.Contains(x)).
                            Select(x => new
            {
                Name        = x.ToPrefixString(),
                Description = x.Description
            });

            foreach (var variable in variables)
            {
                ToolStripMenuItem tsmi = new ToolStripMenuItem {
                    Text = string.Format("{0} - {1}", variable.Name, variable.Description), Tag = variable.Name
                };
                cms.Items.Add(tsmi);
            }

            cms.Items.Add(new ToolStripSeparator());

            ToolStripMenuItem tsmiClose = new ToolStripMenuItem(Resources.CodeMenu_Create_Close);

            tsmiClose.Click += (sender, e) => cms.Close();
            cms.Items.Add(tsmiClose);

            return(cms);
        }
Exemple #2
0
        public static CodeMenu Create <TEntry>(TextBoxBase tb, TEntry[] ignoreList, CodeMenuItem[] extraItems) where TEntry : CodeMenuEntry
        {
            List <CodeMenuItem> items = new List <CodeMenuItem>();

            if (extraItems != null)
            {
                items.AddRange(extraItems);
            }

            IEnumerable <CodeMenuItem> codeMenuItems = Helpers.GetValueFields <TEntry>().Where(x => !ignoreList.Contains(x)).
                                                       Select(x => new CodeMenuItem(x.ToPrefixString(), x.Description, x.Category));

            items.AddRange(codeMenuItems);

            return(new CodeMenu(tb, items.ToArray()));
        }
Exemple #3
0
        public static ContextMenuStrip Create <TEntry>(TextBoxBase tb, TEntry[] ignoreList, CodeMenuItem[] extraItems) where TEntry : CodeMenuEntry
        {
            ContextMenuStrip cms = new ContextMenuStrip
            {
                Font            = new Font("Lucida Console", 8),
                AutoClose       = false,
                Opacity         = 0.9,
                ShowImageMargin = false
            };

            List <CodeMenuItem> items = new List <CodeMenuItem>();

            if (extraItems != null)
            {
                items.AddRange(extraItems);
            }

            IEnumerable <CodeMenuItem> variables = Helpers.GetValueFields <TEntry>().Where(x => !ignoreList.Contains(x)).
                                                   Select(x => new CodeMenuItem(x.ToPrefixString(), x.Description, x.Category));

            items.AddRange(variables);

            foreach (CodeMenuItem item in items)
            {
                ToolStripMenuItem tsmi = new ToolStripMenuItem {
                    Text = $"{item.Name} - {item.Description}", Tag = item.Name
                };
                tsmi.Click += (sender, e) =>
                {
                    string text = ((ToolStripMenuItem)sender).Tag.ToString();
                    tb.AppendTextToSelection(text);
                };

                if (string.IsNullOrWhiteSpace(item.Category))
                {
                    cms.Items.Add(tsmi);
                }
                else
                {
                    ToolStripMenuItem tsmiParent;
                    int index = cms.Items.IndexOfKey(item.Category);
                    if (index < 0)
                    {
                        tsmiParent = new ToolStripMenuItem {
                            Text = item.Category, Tag = item.Category, Name = item.Category
                        };
                        tsmiParent.HideImageMargin();
                        cms.Items.Add(tsmiParent);
                    }
                    else
                    {
                        tsmiParent = cms.Items[index] as ToolStripMenuItem;
                    }
                    tsmiParent.DropDownItems.Add(tsmi);
                }
            }

            cms.Items.Add(new ToolStripSeparator());

            ToolStripMenuItem tsmiClose = new ToolStripMenuItem(Resources.CodeMenu_Create_Close);

            tsmiClose.Click += (sender, e) => cms.Close();
            cms.Items.Add(tsmiClose);

            tb.MouseDown += (sender, e) =>
            {
                if (cms.Items.Count > 0)
                {
                    cms.Show(tb, new Point(tb.Width + 1, 0));
                }
            };

            tb.GotFocus += (sender, e) =>
            {
                if (cms.Items.Count > 0)
                {
                    cms.Show(tb, new Point(tb.Width + 1, 0));
                }
            };

            tb.LostFocus += (sender, e) =>
            {
                if (cms.Visible)
                {
                    cms.Close();
                }
            };

            tb.KeyDown += (sender, e) =>
            {
                if ((e.KeyCode == Keys.Enter || e.KeyCode == Keys.Escape) && cms.Visible)
                {
                    cms.Close();
                    e.SuppressKeyPress = true;
                }
            };

            tb.Disposed += (sender, e) => cms.Dispose();

            return(cms);
        }
Exemple #4
0
        public static ContextMenuStrip Create <TEntry>(TextBox tb, params TEntry[] ignoreList)
            where TEntry : CodeMenuEntry
        {
            ContextMenuStrip cms = new ContextMenuStrip
            {
                Font            = new Font("Lucida Console", 8),
                AutoClose       = false,
                Opacity         = 0.9,
                ShowImageMargin = false
            };

            var variables = Helpers.GetValueFields <TEntry>().Where(x => !ignoreList.Contains(x)).
                            Select(x => new
            {
                Name        = x.ToPrefixString(),
                Description = x.Description,
                Category    = x.Category
            });

            foreach (var variable in variables)
            {
                ToolStripMenuItem tsmi = new ToolStripMenuItem {
                    Text = string.Format("{0} - {1}", variable.Name, variable.Description), Tag = variable.Name
                };
                tsmi.Click += (sender, e) =>
                {
                    string text = ((ToolStripMenuItem)sender).Tag.ToString();
                    tb.AppendTextToSelection(text);
                };

                if (string.IsNullOrWhiteSpace(variable.Category))
                {
                    cms.Items.Add(tsmi);
                }
                else
                {
                    ToolStripMenuItem tsmiParent;
                    int index = cms.Items.IndexOfKey(variable.Category);
                    if (0 > index)
                    {
                        tsmiParent = new ToolStripMenuItem {
                            Text = variable.Category, Tag = variable.Category, Name = variable.Category
                        };
                        tsmiParent.HideImageMargin();
                        cms.Items.Add(tsmiParent);
                    }
                    else
                    {
                        tsmiParent = cms.Items[index] as ToolStripMenuItem;
                    }
                    tsmiParent.DropDownItems.Add(tsmi);
                }
            }

            cms.Items.Add(new ToolStripSeparator());

            ToolStripMenuItem tsmiClose = new ToolStripMenuItem(Resources.CodeMenu_Create_Close);

            tsmiClose.Click += (sender, e) => cms.Close();
            cms.Items.Add(tsmiClose);

            tb.MouseDown += (sender, e) =>
            {
                if (cms.Items.Count > 0)
                {
                    cms.Show(tb, new Point(tb.Width + 1, 0));
                }
            };

            tb.GotFocus += (sender, e) =>
            {
                if (cms.Items.Count > 0)
                {
                    cms.Show(tb, new Point(tb.Width + 1, 0));
                }
            };

            tb.LostFocus += (sender, e) =>
            {
                if (cms.Visible)
                {
                    cms.Close();
                }
            };

            tb.KeyDown += (sender, e) =>
            {
                if ((e.KeyCode == Keys.Enter || e.KeyCode == Keys.Escape) && cms.Visible)
                {
                    cms.Close();
                    e.SuppressKeyPress = true;
                }
            };

            tb.Disposed += (sender, e) => cms.Dispose();

            return(cms);
        }