using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using BrightIdeasSoftware; namespace Deckungsbeitrag { public class MeinFilterMenu : FilterMenuBuilder { public MeinFilterMenu() { APPLY_LABEL = "Filter Durchführen"; CLEAR_ALL_FILTERS_LABEL = "Alle Filter Löschen"; FILTERING_LABEL = "Filter"; SELECT_ALL_LABEL = "Alle Auswählen"; MaxObjectsToConsider = 10000; //Max Anzahl Gruppen die erstellt werden können. } override protected ToolStripMenuItem CreateFilteringMenuItem(OLVColumn column, List clusters) { ToolStripCheckedListBox checkedList = new ToolStripCheckedListBox(); checkedList.Tag = column; checkedList.AutoSize = false; checkedList.Size = new System.Drawing.Size(150, 200); foreach (ICluster cluster in clusters) checkedList.AddItem(cluster, column.ValuesChosenForFiltering.Contains(cluster.ClusterKey)); if (!String.IsNullOrEmpty(SELECT_ALL_LABEL)) { int checkedCount = checkedList.CheckedItems.Count; if (checkedCount == 0) checkedList.AddItem(SELECT_ALL_LABEL, CheckState.Unchecked); else checkedList.AddItem(SELECT_ALL_LABEL, checkedCount == clusters.Count ? CheckState.Checked : CheckState.Indeterminate); } checkedList.ItemCheck += new ItemCheckEventHandler(HandleItemCheckedWrapped); ToolStripMenuItem clearAll = new ToolStripMenuItem(CLEAR_ALL_FILTERS_LABEL, ClearFilteringImage, delegate (object sender, EventArgs args) { this.ClearAllFilters(column); }); ToolStripMenuItem apply = new ToolStripMenuItem(APPLY_LABEL, FilteringImage, delegate (object sender, EventArgs args) { this.EnactFilter(checkedList, column); }); ToolStripMenuItem subMenu = new ToolStripMenuItem(FILTERING_LABEL, null, new ToolStripItem[] { clearAll, new ToolStripSeparator(), checkedList, apply }); return subMenu; } private void HandleItemCheckedWrapped(object sender, ItemCheckEventArgs e) { if (alreadyInHandleItemChecked) return; try { alreadyInHandleItemChecked = true; this.HandleItemChecked(sender, e); } finally { alreadyInHandleItemChecked = false; } } bool alreadyInHandleItemChecked = false; } }