75 lines
2.4 KiB
C#
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;
|
|
|
|
}
|
|
}
|