public bool Remove(EditorViewModel editor)
        {
            if (editor == null)
            {
                throw new ArgumentNullException(nameof(editor));
            }

            var list = GetListCore(editor);

            if (editor is PropertyViewModel pvm && this.targetPlatform.GroupedTypes != null && this.targetPlatform.GroupedTypes.TryGetValue(pvm.Property.Type, out string groupName))
            {
                var group = list.OfType <PropertyGroupViewModel> ().FirstOrDefault(gvm => gvm.Category == groupName);
                if (group != null)
                {
                    bool found = group.Remove(pvm);
                    if (!group.HasChildElements)
                    {
                        list.Remove(group);
                    }

                    return(found);
                }
            }

            bool result = list.Remove(editor);

            if (result)
            {
                OnPropertyChanged(nameof(HasChildElements));
                OnPropertyChanged(nameof(HasUncommonElements));
            }

            return(result);
        }
        public IReadOnlyList <EditorViewModel> GetList(EditorViewModel evm)
        {
            if (evm == null)
            {
                throw new ArgumentNullException(nameof(evm));
            }

            return((IReadOnlyList <EditorViewModel>)GetListCore(evm));
        }
        private bool MatchesFilter(EditorViewModel vm)
        {
            if (String.IsNullOrWhiteSpace(FilterText))
            {
                return(true);
            }
            if (ArrangeMode == PropertyArrangeMode.Category && vm.Category != null && vm.Category.Contains(FilterText, StringComparison.OrdinalIgnoreCase))
            {
                return(true);
            }
            if (String.IsNullOrWhiteSpace(vm.Name))
            {
                return(false);
            }

            return(vm.Name.Contains(FilterText, StringComparison.OrdinalIgnoreCase));
        }
        private void AddCore(EditorViewModel editor)
        {
            if (editor == null)
            {
                throw new ArgumentNullException(nameof(editor));
            }

            var list = GetListCore(editor);

            if (editor is PropertyViewModel pvm && this.targetPlatform.GroupedTypes != null && this.targetPlatform.GroupedTypes.TryGetValue(pvm.Property.Type, out string groupName))
            {
                var group = list.OfType <PropertyGroupViewModel> ().FirstOrDefault(gvm => gvm.Category == groupName);
                if (group != null)
                {
                    group.Add(pvm);
                }
                else
                {
                    list.Add(editor);
                }
            }
 public void Add(EditorViewModel editor)
 {
     AddCore(editor);
 }
 private string GetGroup(EditorViewModel vm)
 {
     return((ArrangeMode == PropertyArrangeMode.Name) ? "0" : vm.Category);
 }