123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using FastReport.Utils;
- using System;
- using System.Drawing;
- using System.Windows.Forms;
- namespace FastReport.FastQueryBuilder
- {
- internal class LinkMenu
- {
- private ContextMenuStrip linkMenu;
- private ToolStripMenuItem linkMenuName;
- private ToolStripMenuItem linkMenuJoin;
- private ToolStripMenuItem linkMenuCondition;
- private ToolStripMenuItem linkMenuDelete;
- private Control owner;
- public Link CurrentLink { get; private set; }
- public event EventHandler DeleteLink;
- public LinkMenu(Control owner)
- {
- this.owner = owner;
- MyRes res = new MyRes("Forms,QueryBuilder");
- linkMenu = new ContextMenuStrip();
- linkMenuName = new ToolStripMenuItem();
- linkMenuJoin = new ToolStripMenuItem(res.Get("Joins"));
- linkMenuCondition = new ToolStripMenuItem(res.Get("Condition"));
- linkMenuDelete = new ToolStripMenuItem(res.Get("Delete"));
- linkMenuDelete.Click += (s, e) => DeleteLink?.Invoke(this, e);
- linkMenu.Items.AddRange(new ToolStripItem[] { linkMenuName, new ToolStripSeparator(), linkMenuJoin, linkMenuCondition, linkMenuDelete });
- // join types
- foreach (var joinType in QueryEnums.JoinTypesToStr)
- {
- var itm = new ToolStripMenuItem(joinType);
- itm.Click += (s, e) => linkMenu_SetJoinType(s);
- linkMenuJoin.DropDownItems.Add(itm);
- }
- // conditions
- res = new MyRes("Forms,QueryBuilder,Where");
- var conditions = new string[] {
- res.Get("Equal"),
- res.Get("NotEqual"),
- res.Get("GtOrEqual"),
- res.Get("Gt"),
- res.Get("LtOrEqual"),
- res.Get("Lt"),
- res.Get("Like"),
- res.Get("NotLike") };
- foreach (var condition in conditions)
- {
- var itm = new ToolStripMenuItem(condition);
- itm.Click += (s, e) => linkMenu_SetLinkCondition(s);
- linkMenuCondition.DropDownItems.Add(itm);
- }
- }
- public void UpdateDpiDependencies()
- {
- linkMenu.Font = owner.Font;
- linkMenuName.Font = new Font(owner.Font, FontStyle.Bold);
- linkMenuDelete.Image = owner.GetImage(51);
- }
- public void Show(Control c, Point point, Link link)
- {
- CurrentLink = link;
- UpdateLinkMenu();
- linkMenu.Show(c, point);
- }
- private void UpdateLinkMenu()
- {
- linkMenuName.Text = CurrentLink.From.Name + " " + QueryEnums.WhereTypesToStr[(int)CurrentLink.Where] + " " + CurrentLink.To.Name;
- for (int i = 0; i < linkMenuJoin.DropDownItems.Count; i++)
- {
- var itm = linkMenuJoin.DropDownItems[i] as ToolStripMenuItem;
- itm.Checked = (int)CurrentLink.Join == i;
- }
- for (int i = 0; i < linkMenuCondition.DropDownItems.Count; i++)
- {
- var itm = linkMenuCondition.DropDownItems[i] as ToolStripMenuItem;
- itm.Checked = (int)CurrentLink.Where == i;
- }
- }
- private void linkMenu_SetJoinType(object sender)
- {
- var i = linkMenuJoin.DropDownItems.IndexOf((ToolStripMenuItem)sender);
- CurrentLink.Join = (QueryEnums.JoinTypes)i;
- }
- private void linkMenu_SetLinkCondition(object sender)
- {
- var i = linkMenuCondition.DropDownItems.IndexOf((ToolStripMenuItem)sender);
- CurrentLink.Where = (QueryEnums.WhereTypes)i;
- }
- }
- }
|