private void ChangeFocusedTreeNode(IFileSystemElement targetElement)
        {
            Task.Run(() => SearchTreeInstance.EndSearch());

            var nwTreeRoot = FileSystemFacade.Instance.CreateFileSystemTree(targetElement as SFMDirectory).Root;

            DynamicFileSystemTree.LoadNodesChildren(nwTreeRoot);

            FocusedTreeNode = nwTreeRoot;
        }
 private void EndSearch()
 {
     if (SearchTreeInstance.IsSearching)
     {
         SearchTreeInstance.EndSearch();
     }
     if (FocusedTreeNode is SearchNode)
     {
         ChangeFocusedTreeNode(directoryBeforeSearch);
     }
 }
        private void SetSearchArguments(string request, SearchTree.SearchType searchType, bool considerContent, bool caseSensetive, bool isRegularExpression)
        {
            var args = new SearchTree.SearchArguments()
            {
                requestString        = request,
                considerFilesContent = considerContent,
                searchType           = searchType,
                caseSensetive        = caseSensetive,
                isRegularExpression  = isRegularExpression
            };

            if (FocusedTreeNode is SearchNode)
            {
                args.searchRootPath = SearchTreeInstance.Arguments.searchRootPath;
            }
            else
            {
                args.searchRootPath = FocusedTreeNode.Value.ElementPath;
            }

            SearchTreeInstance.SetArguments(args);
        }
        private void StartNewSearch(string request, SearchTree.SearchType searchType, bool considerContent, bool caseSensetive, bool isRegularExpression)
        {
            while (SearchTreeInstance.IsSearching)
            {
                SearchTreeInstance.EndSearch();
            }

            SetSearchArguments(request, searchType, considerContent, caseSensetive, isRegularExpression);

            if (!(FocusedTreeNode is SearchNode))
            {
                directoryBeforeSearch = new SFMDirectory(FocusedTreeNode.Value.ElementPath);

                if (!FileSystemTree.Contains(FocusedTreeNode))
                {
                    FocusedTreeNode.Tree.Dispose();
                }
            }

            FocusedTreeNode.DisposeObservableCollections();
            FocusedTreeNode = SearchTreeInstance.Root;

            SearchTreeInstance.StartSearch();
        }