Пример #1
0
 private void LoadTreeIntoView(BookmarksTree tree)
 {
     foreach (IModelType item in tree.Bookmarks)
     {
         LoadNode(item);
     }
 }
Пример #2
0
        private void FilterTree(object sender, FilterTreeEventArgs e)
        {
            if (string.IsNullOrWhiteSpace(e.SearchText))
            {
                _view.ClearTree();
                LoadTreeIntoView(_bookmarksTree);
                return;
            }

            BookmarksTree filterdTree = (BookmarksTree)_bookmarksTree.Clone();

            foreach (IModelType node in filterdTree.Bookmarks.ToList())
            {
                FilterChildren(e.SearchText, node, ref filterdTree);
            }
            _view.ClearTree();
            LoadTreeIntoView(filterdTree);
        }
Пример #3
0
        private IModelType GetModelTypeById(string id, BookmarksTree tree)
        {
            if (id == null)
            {
                return(null);
            }

            foreach (IModelType type in tree.Bookmarks)
            {
                IModelType t = GetModelTypeById(type, id);
                if (t != null)
                {
                    return(t);
                }
            }

            return(null);
        }
Пример #4
0
        public ClientPresenter(IClientView view, IDialogService dialogService)
        {
            _view          = view;
            _dialogService = dialogService;

            _view.AddNewFolder    += AddNewFolder;
            _view.AddNewBookmark  += AddNewBookmark;
            _view.OpenBookmark    += OpenBookmarkInBrowser;
            _view.RemoveNode      += RemoveNode;
            _view.FilterTree      += FilterTree;
            _view.SearchFocusLost += FocusTextBoxLost;

            _bookmarksTree = new BookmarksTree();

            string filename = "bookmarks.xml";

            _bookmarksTree.Read(filename);
            LoadTreeIntoView(_bookmarksTree);
        }
Пример #5
0
        private void FilterChildren(string query, IModelType node, ref BookmarksTree tree)
        {
            bool isFolder = node.GetType() == typeof(Folder);

            if (isFolder)
            {
                if (node.Label.ToLower().Contains(query.ToLower()))
                {
                    return;
                }

                Folder folder = (Folder)node;
                foreach (IModelType child in folder.Children.ToList())
                {
                    FilterChildren(query, child, ref tree);
                }

                if (folder.Children.Count != 0)
                {
                    return;
                }
            }

            if (!node.Label.ToLower().Contains(query.ToLower()))
            {
                if (string.IsNullOrEmpty(node.ParentId))
                {
                    tree.Bookmarks.Remove(node);
                }
                else
                {
                    Folder parentFolder = (Folder)GetModelTypeById(node.ParentId, tree);
                    parentFolder.Children.Remove(node);
                }
            }
        }