Programm_Wirl/AA-Klassen/MeinFilterMenu.cs

75 lines
2.4 KiB
C#

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<ICluster> 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;
}
}