Use same method in name parser editor

This commit is contained in:
Jaex 2019-01-24 18:05:24 +03:00
parent 0cf17c9619
commit ee4b7690b1
2 changed files with 25 additions and 54 deletions

View file

@ -60,7 +60,7 @@ public static ContextMenuStrip Create(TextBoxBase tb, CodeMenuItem[] items)
ContextMenuStrip cms = new ContextMenuStrip
{
Font = new Font("Lucida Console", 8),
AutoClose = false,
AutoClose = tb == null,
Opacity = 0.9,
ShowImageMargin = false
};
@ -70,7 +70,7 @@ public static ContextMenuStrip Create(TextBoxBase tb, CodeMenuItem[] items)
ToolStripMenuItem tsmi = new ToolStripMenuItem { Text = $"{item.Name} - {item.Description}", Tag = item.Name };
tsmi.MouseUp += (sender, e) =>
{
if (e.Button == MouseButtons.Left)
if (tb != null && e.Button == MouseButtons.Left)
{
string text = ((ToolStripMenuItem)sender).Tag.ToString();
tb.AppendTextToSelection(text);
@ -109,64 +109,35 @@ public static ContextMenuStrip Create(TextBoxBase tb, CodeMenuItem[] items)
tsmiClose.Click += (sender, e) => cms.Close();
cms.Items.Add(tsmiClose);
tb.MouseDown += (sender, e) =>
if (tb != null)
{
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)
tb.MouseDown += (sender, e) =>
{
cms.Close();
e.SuppressKeyPress = true;
}
};
if (cms.Items.Count > 0) cms.Show(tb, new Point(tb.Width + 1, 0));
};
tb.Disposed += (sender, e) => cms.Dispose();
return cms;
}
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
tb.GotFocus += (sender, e) =>
{
Name = x.ToPrefixString(),
Description = x.Description
});
if (cms.Items.Count > 0) cms.Show(tb, new Point(tb.Width + 1, 0));
};
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);
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();
}
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;
}
}

View file

@ -41,7 +41,7 @@ public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext contex
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
Point pos = Cursor.Position;
CodeMenu.Create(CodeMenuEntryFilename.t, CodeMenuEntryFilename.pn).Show(pos.X, pos.Y);
CodeMenu.Create<CodeMenuEntryFilename>(null, CodeMenuEntryFilename.t, CodeMenuEntryFilename.pn).Show(pos.X, pos.Y);
return value;
}
}