void CreateExtendActionMenus(IEnumerable <ExtendActionInfo> actions, ref int index) { if (actions.IsNullOrEmpty()) { return; } if (!ExtendActionItems.IsEmpty()) { var tss = new ToolStripSeparator(); ChartContextMenuStrip.Items.Insert(index++, tss); ExtendActionItems.Add(tss); } foreach (var ea in actions) { var mi = new ToolStripMenuItem(); mi.Text = Lang._(ea.Text); mi.Image = ea.Icon; mi.ShortcutKeyDisplayString = ea.ShortcutKeyDisplayString; mi.Click += ea.Processor; // ChartContextMenuStrip.Items.Insert(index++, mi); ExtendActionItems.Add(mi); } }
void CreateExtendActionMenus() { ClearExtendActionMenus(); if (ChartContextMenuStrip == null || SelectedObjects.Length != 1) { return; } var mindex = ExtendActionMenuIndex; if (mindex < 0 || mindex >= ChartContextMenuStrip.Items.Count) { mindex = ChartContextMenuStrip.Items.Count; } var so = SelectedObjects.First(); if (so is IExtendActionProvider) { var ep = (IExtendActionProvider)so; CreateExtendActionMenus(ep.GetExtendActions(ReadOnly), ref mindex); } // CreateExtendActionMenus(GetExtendActions(), ref mindex); // separators if (!ExtendActionItems.IsEmpty()) { var min = ChartContextMenuStrip.Items.IndexOf(ExtendActionItems.First()); var max = ChartContextMenuStrip.Items.IndexOf(ExtendActionItems.Last()); if (max < ChartContextMenuStrip.Items.Count - 1 && !(ChartContextMenuStrip.Items[max + 1] is ToolStripSeparator)) { var tss = new ToolStripSeparator(); ChartContextMenuStrip.Items.Insert(max, tss); ExtendActionItems.Add(tss); } if (min > 0 && !(ChartContextMenuStrip.Items[min - 1] is ToolStripSeparator)) { var tss = new ToolStripSeparator(); ChartContextMenuStrip.Items.Insert(min, tss); ExtendActionItems.Add(tss); } } }
void ClearExtendActionMenus() { if (ChartContextMenuStrip == null || ExtendActionItems.IsNullOrEmpty()) { return; } foreach (var mi in ExtendActionItems) { if (ChartContextMenuStrip.Items.Contains(mi)) { ChartContextMenuStrip.Items.Remove(mi); } } ExtendActionItems.Clear(); }