/// <summary> /// Initialize a new instance of the KryptonContextMenuItems class. /// </summary> /// <param name="children">Array of initial child items.</param> public KryptonContextMenuItems(KryptonContextMenuItemBase[] children) { // Default fields _standardStyle = true; _imageColumn = true; _items = new KryptonContextMenuItemCollection(); // Add any initial set of item if (children != null) _items.AddRange(children); // Create the redirector that can get values from the krypton context menu _redirectImageColumn = new PaletteRedirectDouble(); // Create the column image storage for overriding specific values _stateNormal = new PaletteDoubleRedirect(_redirectImageColumn, PaletteBackStyle.ContextMenuItemImageColumn, PaletteBorderStyle.ContextMenuItemImageColumn); }
private void DecideOnVisible(KryptonContextMenuItemBase visible, KryptonContextMenuItemBase target) { bool previous = false; // Only search if the target itself is visible if (target.Visible) { // Check all items before the target foreach (KryptonContextMenuItemBase item in _kryptonContextMenu.Items) { // Finish when we reach the target if (item == target) break; // We do not consider existing separators if (!((item is KryptonContextMenuSeparator) || (item is KryptonContextMenuHeading))) { // If the previous item is visible, then make the parameter visible if (item.Visible) { previous = true; break; } } } } visible.Visible = previous; }
/// <summary> /// Show the context menu header /// </summary> /// <param name="columnIndex">The column used by the context menu.</param> private void ShowColumnHeaderContextMenu(int columnIndex) { OutlookGridColumn col = internalColumns.FindFromColumnIndex(columnIndex); // Create menu items the first time they are needed if (_menuItems == null) { // Create individual items _menuSortAscending = new KryptonContextMenuItem(LangManager.Instance.GetString("SORTASCENDING"), Properties.Resources.sort_ascending, OnColumnSortAscending); _menuSortDescending = new KryptonContextMenuItem(LangManager.Instance.GetString("SORTDESCENDING"), Properties.Resources.sort_descending, new EventHandler(OnColumnSortDescending)); _menuClearSorting = new KryptonContextMenuItem(LangManager.Instance.GetString("CLEARSORTING"), Properties.Resources.sort_up_down_delete_16, new EventHandler(OnColumnClearSorting)); _menuSeparator1 = new KryptonContextMenuSeparator(); _menuExpand = new KryptonContextMenuItem(LangManager.Instance.GetString("EXPAND"), Properties.Resources.element_plus_16, new EventHandler(OnGroupExpand)); _menuCollapse = new KryptonContextMenuItem(LangManager.Instance.GetString("COLLAPSE"), Properties.Resources.element_minus_16, new EventHandler(OnGroupCollapse)); _menuSeparator4 = new KryptonContextMenuSeparator(); _menuGroupByThisColumn = new KryptonContextMenuItem(LangManager.Instance.GetString("GROUP"), Properties.Resources.element, new EventHandler(OnGroupByThisColumn)); _menuUngroupByThisColumn = new KryptonContextMenuItem(LangManager.Instance.GetString("UNGROUP"), Properties.Resources.element_delete, new EventHandler(OnUnGroupByThisColumn)); _menuShowGroupBox = new KryptonContextMenuItem(LangManager.Instance.GetString("SHOWGROUPBOX"), null, new EventHandler(OnShowGroupBox)); _menuHideGroupBox = new KryptonContextMenuItem(LangManager.Instance.GetString("HIDEGROUPBOX"), null, new EventHandler(OnHideGroupBox)); _menuSeparator2 = new KryptonContextMenuSeparator(); _menuBestFitColumn = new KryptonContextMenuItem(LangManager.Instance.GetString("BESTFIT"), null, new EventHandler(OnBestFitColumn)); _menuBestFitAllColumns = new KryptonContextMenuItem(LangManager.Instance.GetString("BESTFITALL"), Properties.Resources.fit_to_size, new EventHandler(OnBestFitAllColumns)); _menuSeparator3 = new KryptonContextMenuSeparator(); _menuVisibleColumns = new KryptonContextMenuItem(LangManager.Instance.GetString("COLUMNS"), Properties.Resources.table2_selection_column, null); _menuGroupInterval = new KryptonContextMenuItem(LangManager.Instance.GetString("GROUPINTERVAL")); _menuSortBySummary = new KryptonContextMenuItem(LangManager.Instance.GetString("SORTBYSUMMARYCOUNT"), null, new EventHandler(OnSortBySummary)); _menuSortBySummary.CheckOnClick = true; _menuSeparator5 = new KryptonContextMenuSeparator(); _menuConditionalFormatting = new KryptonContextMenuItem(LangManager.Instance.GetString("CONDITIONALFORMATTING"), Properties.Resources.table_conditional_16, null); //Group Interval KryptonContextMenuItems _GroupIntervalItems; KryptonContextMenuItem it = null; string[] names = Enum.GetNames(typeof(OutlookGridDateTimeGroup.DateInterval)); KryptonContextMenuItemBase[] arrayOptions = new KryptonContextMenuItemBase[names.Length]; for (int i = 0; i < names.Length; i++) { it = new KryptonContextMenuItem(LangManager.Instance.GetString(names[i])); it.Tag = names[i]; it.Click += OnGroupIntervalClick; arrayOptions[i] = it; } _GroupIntervalItems = new KryptonContextMenuItems(arrayOptions); _menuGroupInterval.Items.Add(_GroupIntervalItems); //Visible Columns KryptonContextMenuCheckBox itCheckbox = null; KryptonContextMenuItemBase[] arrayCols = new KryptonContextMenuItemBase[Columns.Count]; for (int i = 0; i < Columns.Count; i++) { itCheckbox = new KryptonContextMenuCheckBox(Columns[i].HeaderText); itCheckbox.Checked = Columns[i].Visible; itCheckbox.Tag = Columns[i].Index; itCheckbox.CheckedChanged += OnColumnVisibleCheckedChanged; arrayCols[i] = itCheckbox; } _menuVisibleColumns.Items.AddRange(arrayCols); //Conditional formatting ImageList imgListFormatting = new ImageList(); imgListFormatting.ColorDepth = ColorDepth.Depth32Bit; imgListFormatting.ImageSize = new Size(32, 32); List<ConditionalFormatting> tmpTag = new List<ConditionalFormatting>(); imgListFormatting.Images.Add(Properties.Resources.Databar_solid_blue_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(76, 118, 255), false))); imgListFormatting.Images.Add(Properties.Resources.Databar_solid_green_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(95, 173, 123), false))); imgListFormatting.Images.Add(Properties.Resources.Databar_solid_red_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(248, 108, 103), false))); imgListFormatting.Images.Add(Properties.Resources.Databar_solid_yellow_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(255, 185, 56), false))); imgListFormatting.Images.Add(Properties.Resources.Databar_solid_violet_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(185, 56, 255), false))); imgListFormatting.Images.Add(Properties.Resources.Databar_solid_pink_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(255, 56, 185), false))); imgListFormatting.Images.Add(Properties.Resources.Databar_gradient_blue_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(76, 118, 255), true))); imgListFormatting.Images.Add(Properties.Resources.Databar_gradient_green_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(95, 173, 123), true))); imgListFormatting.Images.Add(Properties.Resources.Databar_gradient_red_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(248, 108, 103), true))); imgListFormatting.Images.Add(Properties.Resources.Databar_gradient_yellow_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(255, 185, 56), true))); imgListFormatting.Images.Add(Properties.Resources.Databar_gradient_violet_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(185, 56, 255), true))); imgListFormatting.Images.Add(Properties.Resources.Databar_gradient_pink_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.Bar, new BarParams(Color.FromArgb(255, 56, 185), true))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_white_blue_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.White, Color.FromArgb(76, 118, 255)))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_blue_white_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.FromArgb(76, 118, 255), Color.White))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_white_green_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.White, Color.FromArgb(95, 173, 123)))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_green_white_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.FromArgb(95, 173, 123), Color.White))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_white_red_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.White, Color.FromArgb(248, 108, 103)))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_red_white_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.FromArgb(248, 108, 103), Color.White))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_white_yellow_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.White, Color.FromArgb(255, 185, 56)))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_yellow_white_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.FromArgb(255, 185, 56), Color.White))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_white_violet_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.White, Color.FromArgb(185, 56, 255)))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_violet_white_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.FromArgb(185, 56, 255), Color.White))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_white_pink_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.White, Color.FromArgb(255, 56, 185)))); imgListFormatting.Images.Add(Properties.Resources.TwoColors_pink_white_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.TwoColorsRange, new TwoColorsParams(Color.FromArgb(255, 56, 185), Color.White))); imgListFormatting.Images.Add(Properties.Resources.ThreeColors_green_yellow_red_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.ThreeColorsRange, new ThreeColorsParams(Color.FromArgb(84, 179, 112), Color.FromArgb(252, 229, 130), Color.FromArgb(243, 120, 97)))); imgListFormatting.Images.Add(Properties.Resources.ThreeColors_red_yellow_green_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.ThreeColorsRange, new ThreeColorsParams(Color.FromArgb(243, 120, 97), Color.FromArgb(252, 229, 130), Color.FromArgb(84, 179, 112)))); imgListFormatting.Images.Add(Properties.Resources.ThreeColors_green_white_red_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.ThreeColorsRange, new ThreeColorsParams(Color.FromArgb(84, 179, 112), Color.White, Color.FromArgb(243, 120, 97)))); imgListFormatting.Images.Add(Properties.Resources.ThreeColors_red_white_green_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.ThreeColorsRange, new ThreeColorsParams(Color.FromArgb(243, 120, 97), Color.White, Color.FromArgb(84, 179, 112)))); imgListFormatting.Images.Add(Properties.Resources.ThreeColors_blue_white_red_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.ThreeColorsRange, new ThreeColorsParams(Color.FromArgb(134, 166, 253), Color.White, Color.FromArgb(243, 120, 97)))); imgListFormatting.Images.Add(Properties.Resources.ThreeColors_red_white_blue_32); tmpTag.Add(new ConditionalFormatting(EnumConditionalFormatType.ThreeColorsRange, new ThreeColorsParams(Color.FromArgb(243, 120, 97), Color.White, Color.FromArgb(134, 166, 253)))); it = null; names = Enum.GetNames(typeof(EnumConditionalFormatType)); arrayOptions = new KryptonContextMenuItemBase[names.Length + 2]; for (int i = 0; i < names.Length; i++) { it = new KryptonContextMenuItem(LangManager.Instance.GetString(names[i])); it.Tag = names[i]; if (names[i] == EnumConditionalFormatType.Bar.ToString()) { it.Image = Properties.Resources.databar_generic_16; //Solid KryptonContextMenuHeading KFormattingBarHeadingSolid = new KryptonContextMenuHeading(); KFormattingBarHeadingSolid.Text = LangManager.Instance.GetString("SolidFill"); KryptonContextMenuImageSelect KFormattingBarImgSelectSolid = new KryptonContextMenuImageSelect(); KFormattingBarImgSelectSolid.ImageList = imgListFormatting; KFormattingBarImgSelectSolid.ImageIndexStart = 0; KFormattingBarImgSelectSolid.ImageIndexEnd = 5; KFormattingBarImgSelectSolid.LineItems = 4; KFormattingBarImgSelectSolid.Tag = tmpTag; KFormattingBarImgSelectSolid.Click += OnConditionalFormattingClick; //Gradient KryptonContextMenuHeading KFormattingBarHeadingGradient = new KryptonContextMenuHeading(); KFormattingBarHeadingGradient.Text = LangManager.Instance.GetString("GradientFill"); KryptonContextMenuImageSelect KFormattingBarImgSelectGradient = new KryptonContextMenuImageSelect(); KFormattingBarImgSelectGradient.ImageList = imgListFormatting; KFormattingBarImgSelectGradient.ImageIndexStart = 6; KFormattingBarImgSelectGradient.ImageIndexEnd = 11; KFormattingBarImgSelectGradient.LineItems = 4; KFormattingBarImgSelectGradient.Tag = tmpTag; KFormattingBarImgSelectGradient.Click += OnConditionalFormattingClick; //Custom KryptonContextMenuHeading KFormattingBarHeadingOther = new KryptonContextMenuHeading(); KFormattingBarHeadingOther.Text = LangManager.Instance.GetString("Other"); KryptonContextMenuItem it2 = null; it2 = new KryptonContextMenuItem(LangManager.Instance.GetString("CustomThreeDots")); it2.Tag = ""; it2.Image = Properties.Resources.paint_bucket_green; it2.Click += OnBarCustomClick; KryptonContextMenuItems _Bars = new KryptonContextMenuItems(new ComponentFactory.Krypton.Toolkit.KryptonContextMenuItemBase[] { it2 }); //Menu construction it.Items.AddRange(new ComponentFactory.Krypton.Toolkit.KryptonContextMenuItemBase[] { KFormattingBarHeadingSolid, KFormattingBarImgSelectSolid, KFormattingBarHeadingGradient, KFormattingBarImgSelectGradient, KFormattingBarHeadingOther, _Bars }); } else if (names[i] == EnumConditionalFormatType.TwoColorsRange.ToString()) { it.Image = Properties.Resources.color2scale_generic_16; KryptonContextMenuItems _TwoColors; KryptonContextMenuImageSelect KTwoColorsImgSelect = new KryptonContextMenuImageSelect(); KTwoColorsImgSelect.ImageList = imgListFormatting; KTwoColorsImgSelect.ImageIndexStart = 12; KTwoColorsImgSelect.ImageIndexEnd = 23; KTwoColorsImgSelect.LineItems = 4; KTwoColorsImgSelect.Tag = tmpTag; KTwoColorsImgSelect.Click += OnConditionalFormattingClick; it.Items.Add(KTwoColorsImgSelect); KryptonContextMenuSeparator sep1 = new KryptonContextMenuSeparator(); sep1.Tag = ""; KryptonContextMenuItem it2 = null; it2 = new KryptonContextMenuItem(LangManager.Instance.GetString("CustomThreeDots")); it2.Tag = ""; it2.Image = Properties.Resources.paint_bucket_green; it2.Click += OnTwoColorsCustomClick; _TwoColors = new KryptonContextMenuItems(new ComponentFactory.Krypton.Toolkit.KryptonContextMenuItemBase[] { sep1, it2 }); it.Items.Add(_TwoColors); } else if (names[i] == EnumConditionalFormatType.ThreeColorsRange.ToString()) { it.Image = Properties.Resources.color3scale_generic_16; KryptonContextMenuItems _ThreeColors; KryptonContextMenuImageSelect KThreeColorsImgSelect = new KryptonContextMenuImageSelect(); KThreeColorsImgSelect.ImageList = imgListFormatting; KThreeColorsImgSelect.ImageIndexStart = 24; KThreeColorsImgSelect.ImageIndexEnd = 29; KThreeColorsImgSelect.LineItems = 4; KThreeColorsImgSelect.Tag = tmpTag; KThreeColorsImgSelect.Click += OnConditionalFormattingClick; it.Items.Add(KThreeColorsImgSelect); KryptonContextMenuSeparator sep1 = new KryptonContextMenuSeparator(); sep1.Tag = ""; KryptonContextMenuItem it2 = null; it2 = new KryptonContextMenuItem(LangManager.Instance.GetString("CustomThreeDots")); it2.Tag = ""; it2.Image = Properties.Resources.paint_bucket_green; it2.Click += OnThreeColorsCustomClick; _ThreeColors = new KryptonContextMenuItems(new ComponentFactory.Krypton.Toolkit.KryptonContextMenuItemBase[] { sep1, it2 }); it.Items.Add(_ThreeColors); } arrayOptions[i] = it; KryptonContextMenuSeparator sep2 = new KryptonContextMenuSeparator(); sep2.Tag = ""; arrayOptions[i + 1] = sep2; KryptonContextMenuItem it3 = null; it3 = new KryptonContextMenuItem(LangManager.Instance.GetString("ClearRules")); it3.Image = Properties.Resources.eraser; it3.Tag = ""; it3.Click += OnClearConditionalClick; arrayOptions[i + 2] = it3; } KryptonContextMenuItems _ConditionalFormattingItems = new KryptonContextMenuItems(arrayOptions); _menuConditionalFormatting.Items.Add(_ConditionalFormattingItems); //Add items inside an items collection (apart from separator1 which is only added if required) _menuItems = new KryptonContextMenuItems(new KryptonContextMenuItemBase[] { _menuSortAscending, _menuSortDescending, _menuSortBySummary, _menuClearSorting, _menuSeparator1, _menuExpand, _menuCollapse, _menuSeparator4, _menuGroupByThisColumn, _menuGroupInterval, _menuUngroupByThisColumn, _menuShowGroupBox, _menuHideGroupBox, _menuSeparator2, _menuBestFitColumn, _menuBestFitAllColumns, _menuSeparator3, _menuVisibleColumns, _menuSeparator5, _menuConditionalFormatting}); } // Ensure we have a krypton context menu if not already present if (KCtxMenu == null) KCtxMenu = new KryptonContextMenu(); // Update the individual menu options if (col != null) { _menuSortAscending.Visible = col.DataGridViewColumn.SortMode != DataGridViewColumnSortMode.NotSortable; _menuSortAscending.Checked = col.SortDirection == SortOrder.Ascending ? true : false; _menuSortDescending.Checked = col.SortDirection == SortOrder.Descending ? true : false; _menuSortDescending.Visible = col.DataGridViewColumn.SortMode != DataGridViewColumnSortMode.NotSortable; _menuSortBySummary.Visible = col.IsGrouped && col.GroupingType != null; if (_menuSortBySummary.Visible) _menuSortBySummary.Checked = col.GroupingType.SortBySummaryCount; _menuClearSorting.Enabled = col.SortDirection != SortOrder.None && !col.IsGrouped; _menuClearSorting.Visible = col.DataGridViewColumn.SortMode != DataGridViewColumnSortMode.NotSortable; _menuSeparator1.Visible = (_menuSortAscending.Visible || _menuSortDescending.Visible || _menuClearSorting.Visible); _menuExpand.Visible = col.IsGrouped; _menuCollapse.Visible = col.IsGrouped; _menuSeparator4.Visible = (_menuExpand.Visible || _menuCollapse.Visible); _menuGroupByThisColumn.Visible = !col.IsGrouped && col.DataGridViewColumn.SortMode != DataGridViewColumnSortMode.NotSortable; _menuGroupInterval.Visible = col.IsGrouped && col.DataGridViewColumn.SortMode != DataGridViewColumnSortMode.NotSortable && col.GroupingType.GetType() == typeof(OutlookGridDateTimeGroup); if (_menuGroupInterval.Visible) { string currentInterval = Enum.GetName(typeof(OutlookGridDateTimeGroup.DateInterval), ((OutlookGridDateTimeGroup)col.GroupingType).Interval); foreach (KryptonContextMenuItem item in ((KryptonContextMenuItems)_menuGroupInterval.Items[0]).Items) { item.Checked = item.Tag.ToString() == currentInterval; } } _menuUngroupByThisColumn.Visible = col.IsGrouped && col.DataGridViewColumn.SortMode != DataGridViewColumnSortMode.NotSortable; _menuShowGroupBox.Visible = (groupBox != null) && !groupBox.Visible; _menuHideGroupBox.Visible = (groupBox != null) && groupBox.Visible; _menuSeparator2.Visible = (_menuGroupByThisColumn.Visible || _menuUngroupByThisColumn.Visible || _menuShowGroupBox.Visible || _menuHideGroupBox.Visible); _menuBestFitColumn.Visible = true; if (col.DataGridViewColumn.GetType() == typeof(KryptonDataGridViewFormattingColumn)) { _menuSeparator5.Visible = true; _menuConditionalFormatting.Visible = true; //Get the format condition ConditionalFormatting format = formatConditions.Where(x => x.ColumnName == col.Name).FirstOrDefault(); for (int i = 0; i < _menuConditionalFormatting.Items[0].ItemChildCount; i++) { if (format != null && ((KryptonContextMenuItems)_menuConditionalFormatting.Items[0]).Items[i].Tag.ToString().Equals(format.FormatType.ToString())) { ((KryptonContextMenuItem)((KryptonContextMenuItems)_menuConditionalFormatting.Items[0]).Items[i]).Checked = true; } else { if (((KryptonContextMenuItems)_menuConditionalFormatting.Items[0]).Items[i].GetType() != typeof(KryptonContextMenuSeparator)) ((KryptonContextMenuItem)((KryptonContextMenuItems)_menuConditionalFormatting.Items[0]).Items[i]).Checked = false; } } } else { _menuSeparator5.Visible = false; _menuConditionalFormatting.Visible = false; } } else { _menuSortAscending.Visible = false; _menuSortDescending.Visible = false; _menuSortBySummary.Visible = false; _menuClearSorting.Visible = false; _menuSeparator1.Visible = (_menuSortAscending.Visible || _menuSortDescending.Visible || _menuClearSorting.Visible); _menuExpand.Visible = false; _menuCollapse.Visible = false; _menuSeparator4.Visible = (_menuExpand.Visible || _menuCollapse.Visible); _menuGroupByThisColumn.Visible = false; _menuGroupInterval.Visible = false; _menuUngroupByThisColumn.Visible = false; _menuShowGroupBox.Visible = (groupBox != null) && !groupBox.Visible; _menuHideGroupBox.Visible = (groupBox != null) && groupBox.Visible; _menuSeparator2.Visible = (_menuGroupByThisColumn.Visible || _menuUngroupByThisColumn.Visible || _menuShowGroupBox.Visible || _menuHideGroupBox.Visible); _menuBestFitColumn.Visible = false; _menuSeparator5.Visible = false; _menuConditionalFormatting.Visible = false; } if (!KCtxMenu.Items.Contains(_menuItems)) KCtxMenu.Items.Add(_menuItems); // Show the menu! KCtxMenu.Show(this); }
/// <summary> /// Show the context menu for column box /// </summary> private void ShowColumnBoxContextMenu() { if (_menuItems == null) { // Create individual items _menuSortAscending = new KryptonContextMenuItem(LangManager.Instance.GetString("SORTASCENDING"), Properties.Resources.sort_ascending, new EventHandler(OnSortAscending)); _menuSortDescending = new KryptonContextMenuItem(LangManager.Instance.GetString("SORTDESCENDING"), Properties.Resources.sort_descending, new EventHandler(OnSortDescending)); _menuSeparator1 = new KryptonContextMenuSeparator(); _menuExpand = new KryptonContextMenuItem(LangManager.Instance.GetString("EXPAND"), Properties.Resources.element_plus_16, new EventHandler(OnGroupExpand)); _menuCollapse = new KryptonContextMenuItem(LangManager.Instance.GetString("COLLAPSE"), Properties.Resources.element_minus_16, new EventHandler(OnGroupCollapse)); _menuUnGroup = new KryptonContextMenuItem(LangManager.Instance.GetString("UNGROUP"), Properties.Resources.element_delete, new EventHandler(OnUngroup)); _menuSeparator2 = new KryptonContextMenuSeparator(); _menuFullExpand = new KryptonContextMenuItem(LangManager.Instance.GetString("FULLEXPAND"), Properties.Resources.elements_plus_16, new EventHandler(OnFullExpand)); _menuFullCollapse = new KryptonContextMenuItem(LangManager.Instance.GetString("FULLCOLLAPSE"), Properties.Resources.elements_minus_16, new EventHandler(OnFullCollapse)); _menuSeparator3 = new KryptonContextMenuSeparator(); _menuClearGrouping = new KryptonContextMenuItem(LangManager.Instance.GetString("CLEARGROUPING"), Properties.Resources.element_selection_delete, new EventHandler(OnClearGrouping)); _menuHideGroupBox = new KryptonContextMenuItem(LangManager.Instance.GetString("HIDEGROUPBOX"), null, new EventHandler(OnHideGroupBox)); _menuGroupInterval = new KryptonContextMenuItem(LangManager.Instance.GetString("GROUPINTERVAL")); _menuSortBySummary = new KryptonContextMenuItem(LangManager.Instance.GetString("SORTBYSUMMARYCOUNT"), null, new EventHandler(OnSortBySummaryCount)); _menuSortBySummary.CheckOnClick = true; //Group Interval KryptonContextMenuItems _GroupIntervalItems; KryptonContextMenuItem it = null; string[] names = Enum.GetNames(typeof(OutlookGridDateTimeGroup.DateInterval)); KryptonContextMenuItemBase[] arrayOptions = new KryptonContextMenuItemBase[names.Length]; for (int i = 0; i < names.Length; i++) { it = new KryptonContextMenuItem(LangManager.Instance.GetString(names[i])); it.Tag = names[i]; it.Click += OnGroupIntervalClick; arrayOptions[i] = it; } _GroupIntervalItems = new KryptonContextMenuItems(arrayOptions); _menuGroupInterval.Items.Add(_GroupIntervalItems); // Add items inside an items collection (apart from separator1 which is only added if required) _menuItems = new KryptonContextMenuItems(new KryptonContextMenuItemBase[] { _menuSortAscending, _menuSortDescending, _menuSortBySummary, _menuSeparator1, _menuGroupInterval, _menuExpand, _menuCollapse, _menuUnGroup, _menuSeparator2, _menuFullExpand, _menuFullCollapse, _menuSeparator3, _menuClearGrouping, _menuHideGroupBox }); } // Ensure we have a krypton context menu if not already present if (this.KCtxMenu == null) KCtxMenu = new KryptonContextMenu(); // Update the individual menu options OutlookGridGroupBoxColumn col = null; if (indexselected > -1) col = columnsList[indexselected]; _menuSortAscending.Visible = col != null; _menuSortDescending.Visible = col != null; _menuSortAscending.Checked = col != null && col.SortDirection == SortOrder.Ascending; _menuSortDescending.Checked = col != null && col.SortDirection == SortOrder.Descending; _menuSortBySummary.Visible = col != null; _menuSortBySummary.Checked = col != null && col.SortBySummaryCount; _menuExpand.Visible = col != null; _menuCollapse.Visible = col != null; _menuGroupInterval.Visible = col != null && col.GroupingType == typeof(OutlookGridDateTimeGroup).Name; if (_menuGroupInterval.Visible) { foreach (KryptonContextMenuItem item in ((KryptonContextMenuItems)_menuGroupInterval.Items[0]).Items) { item.Checked = item.Tag.ToString() == col.GroupInterval; } } _menuUnGroup.Visible = col != null; _menuFullExpand.Enabled = columnsList.Count > 0; _menuFullCollapse.Enabled = columnsList.Count > 0; _menuClearGrouping.Enabled = columnsList.Count > 0; _menuSeparator1.Visible = (_menuSortAscending.Visible || _menuSortDescending.Visible); _menuSeparator2.Visible = (_menuExpand.Visible || _menuCollapse.Visible || _menuUnGroup.Visible); _menuSeparator3.Visible = (_menuFullExpand.Visible || _menuFullCollapse.Visible); if (!KCtxMenu.Items.Contains(_menuItems)) KCtxMenu.Items.Add(_menuItems); // Show the menu! KCtxMenu.Show(this); }