Exemple #1
0
        /// <summary>
        /// Internal method for browsing the control along a given path.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="ResetBrowserStatus"></param>
        /// <returns>Whether path exists and was successfully browsed or not.</returns>
        private FinalBrowseResult InternalBrowsePath(BrowseRequest request,
                                                     bool ResetBrowserStatus)
        {
            IPathModel        pmodel = request.NewLocation;
            CancellationToken ct     = request.CancelTok;

            if (ResetBrowserStatus == true)
            {
                ClearBrowserStates();
            }

            if (pmodel.DirectoryPathExists() == false)
            {
                DisplayMessage.IsErrorMessageAvailable = true;
                DisplayMessage.Message = string.Format(FileSystemModels.Local.Strings.STR_ERROR_FOLDER_DOES_NOT_EXIST, pmodel.Path);

                return(FinalBrowseResult.FromRequest(request, BrowseResult.InComplete));
            }

            if (_Root.Count == 0)        // Make sure drives are available
            {
                SetInitialDrives(ct);
            }

            if (ct != null)
            {
                ct.ThrowIfCancellationRequested();
            }

            var pathItem = SelectDirectory(pmodel, ct);

            if (pathItem != null)
            {
                if (pathItem.Length > 0)
                {
                    SelectedItem = pathItem[pathItem.Length - 1];
                }

                return(FinalBrowseResult.FromRequest(request, BrowseResult.Complete));
            }

            return(FinalBrowseResult.FromRequest(request, BrowseResult.InComplete));
        }