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);
 }
        public void CategoryFilterNodeDefaults()
        {
            CategoryFilterNode categoryFilter = new CategoryFilterNode();

            Assert.AreEqual("Category Filter", categoryFilter.Name);
            Assert.AreEqual(CategoryFilterMode.DenyAllExceptAllowed, categoryFilter.CategoryFilterExpression.CategoryFilterMode);
            Assert.AreEqual(0, categoryFilter.CategoryFilterExpression.CategoryFilters.Count);
        }
        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);
        }
        public void CategoryFilterDataTest()
        {
            string name = "some name";
            CategoryFilterMode filterMode = CategoryFilterMode.AllowAllExceptDenied;
            string filterName = "some filter";

            CategoryFilterData data = new CategoryFilterData();
            data.Name = name;
            data.CategoryFilterMode = filterMode;
            data.CategoryFilters.Add(new CategoryFilterEntry(filterName));

            CategoryFilterNode node = new CategoryFilterNode(data);

            Assert.AreEqual(name, node.Name);
            Assert.AreEqual(filterMode, node.CategoryFilterExpression.CategoryFilterMode);
            Assert.AreEqual(1, node.CategoryFilterExpression.CategoryFilters.Count);
            Assert.AreEqual(filterName, node.CategoryFilterExpression.CategoryFilters.Get(0).Name);
        }
        public void CategoryFilterNodeTest()
        {
            string name = "some name";
            CategoryFilterMode filterMode = CategoryFilterMode.AllowAllExceptDenied;
            string filterName = "some filter";
            
            CategoryFilterSettings filterSettings = new CategoryFilterSettings(filterMode, new NamedElementCollection<CategoryFilterEntry>());
            filterSettings.CategoryFilters.Add(new CategoryFilterEntry(filterName));

            CategoryFilterNode node = new CategoryFilterNode();
            node.Name = name;
            node.CategoryFilterExpression = filterSettings;

            CategoryFilterData nodeData = (CategoryFilterData) node.LogFilterData;

            Assert.AreEqual(name, nodeData.Name);
            Assert.AreEqual(filterMode, nodeData.CategoryFilterMode);
            Assert.AreEqual(1, nodeData.CategoryFilters.Count);
            Assert.AreEqual(filterName, nodeData.CategoryFilters.Get(0).Name);
        }
        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);
        }