public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { Debug.Assert(provider != null, "No service provider; we cannot edit the value"); if (provider != null) { IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); Debug.Assert(edSvc != null, "No editor service; we cannot edit the value"); if (edSvc != null) { IWindowsFormsEditorService service = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); CategoryFilterEditorUI dialog = new CategoryFilterEditorUI(); CategoryFilterNode currentSettings = (CategoryFilterNode)context.Instance; InitializeDialog(dialog, currentSettings); if (DialogResult.OK == service.ShowDialog(dialog)) { CategoryFilterMode categoryFilterMode = dialog.FilterMode; NamedElementCollection <CategoryFilterEntry> categoryFilters = new NamedElementCollection <CategoryFilterEntry>(); foreach (string category in dialog.SelectedCategoryNames) { CategoryFilterEntry categoryFilter = new CategoryFilterEntry(); categoryFilter.Name = category; categoryFilters.Add(categoryFilter); } return(new CategoryFilterSettings(categoryFilterMode, categoryFilters)); } } } return(value); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="provider"></param> /// <param name="value"></param> /// <returns></returns> public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { Debug.Assert(provider != null, "No service provider; we cannot edit the value"); if (provider != null) { IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); Debug.Assert(edSvc != null, "No editor service; we cannot edit the value"); if (edSvc != null) { IWindowsFormsEditorService service = (IWindowsFormsEditorService) provider.GetService(typeof(IWindowsFormsEditorService)); CategoryFilterEditorUI dialog = new CategoryFilterEditorUI(); CategoryFilterNode currentSettings = (CategoryFilterNode)context.Instance; InitializeDialog(dialog, currentSettings); service.ShowDialog(dialog); CategoryFilterMode categoryFilterMode = dialog.FilterMode; NamedElementCollection<CategoryFilterEntry> categoryFilters = new NamedElementCollection<CategoryFilterEntry>(); foreach (string category in dialog.SelectedCategoryNames) { CategoryFilterEntry categoryFilter = new CategoryFilterEntry(); categoryFilter.Name = category; categoryFilters.Add(categoryFilter); } return new CategoryFilterSettings(categoryFilterMode, categoryFilters); } } return value; }
private static void InitializeDialog(CategoryFilterEditorUI dialog, CategoryFilterNode node) { dialog.FilterMode = node.CategoryFilterExpression.CategoryFilterMode; SetCategoryFilterSettings(dialog, node); SetAvailableCategoryNames(dialog, node); }
private static void SetCategoryFilterSettings(CategoryFilterEditorUI dialog, CategoryFilterNode node) { ArrayList selectedCategoryNames = new ArrayList(); foreach (CategoryFilterEntry categoryFilter in node.CategoryFilterExpression.CategoryFilters) { selectedCategoryNames.Add(categoryFilter.Name); } dialog.SetSelectedCategoryNames(selectedCategoryNames); }
private static void SetAvailableCategoryNames(CategoryFilterEditorUI dialog, ConfigurationNode node) { List <ConfigurationNode> nodes = new List <ConfigurationNode>(node.Hierarchy.FindNodesByType(typeof(CategoryTraceSourceNode))); IList <string> categoryNames = new List <string>(); if (nodes != null) { ConfigurationNode[] sortedNodes = nodes.ToArray(); Array.Sort(sortedNodes); foreach (ConfigurationNode categoryNode in sortedNodes) { categoryNames.Add(categoryNode.Name); } } dialog.UpdateAvailableCategoryNames(categoryNames); }
private static void SetAvailableCategoryNames(CategoryFilterEditorUI dialog, ConfigurationNode node) { List<ConfigurationNode> nodes = new List<ConfigurationNode>(node.Hierarchy.FindNodesByType(typeof(CategoryTraceSourceNode))); IList<string> categoryNames = new List<string>(); if (nodes != null) { ConfigurationNode[] sortedNodes = nodes.ToArray(); Array.Sort(sortedNodes); foreach (ConfigurationNode categoryNode in sortedNodes) { categoryNames.Add(categoryNode.Name); } } dialog.UpdateAvailableCategoryNames(categoryNames); }