Example #1
0
        /// <summary>
        /// A control has send an event that it has (been) browsing to a new location.
        /// Lets sync this with all other controls.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Control_BrowseEvent(object sender,
                                         FileSystemModels.Browse.BrowsingEventArgs e)
        {
            if (e.IsBrowsing == false && e.Result == BrowseResult.Complete)
            {
                var request = new BrowseRequest(e.Location);
                FinalBrowseResult browseResult = null;

                if (FolderTextPath != sender)
                {
                    // Navigate Folder ComboBox to this folder
                    browseResult = FolderTextPath.NavigateTo(request);

                    if (browseResult.Result != BrowseResult.Complete)
                    {
                        return;
                    }
                }

                if (FolderItemsView != sender)
                {
                    // Navigate Folder/File ListView to this folder
                    browseResult = FolderItemsView.NavigateTo(request);

                    if (browseResult.Result != BrowseResult.Complete)
                    {
                        return;
                    }
                }

                if (browseResult != null) // There should be at least one succesfull browse
                {                         // to change selection and log history
                    if (browseResult.Result == BrowseResult.Complete)
                    {
                        // Log location into history of recent locations
                        SelectedFolder = request.NewLocation.Path;
                        NaviHistory.Forward(request.NewLocation);
                    }
                }
            }
            else
            {
                if (e.IsBrowsing == true)
                {
                    if (FolderTextPath != sender)
                    {
                        // Navigate Folder ComboBox to this folder
                        FolderTextPath.SetExternalBrowsingState(true);
                    }

                    if (FolderItemsView != sender)
                    {
                        // Navigate Folder/File ListView to this folder
                        FolderItemsView.SetExternalBrowsingState(true);
                    }
                }
            }
        }
Example #2
0
 /// <summary>
 /// Initializes the Navigational History with sample items.
 /// </summary>
 public void Init()
 {
     NaviHistory.Forward(new LocationItem(@"C:\"));
     NaviHistory.Forward(new LocationItem(@"F:\Program Files\My Program\My  Dir 1\My  Dir 2"));
     NaviHistory.Forward(new LocationItem(@"F:\"));
     NaviHistory.Forward(new LocationItem(@"F:\Temp"));
     NaviHistory.Forward(new LocationItem(@"F:\Temp\More Files"));
     NaviHistory.Forward(new LocationItem(@"G:\"));
     NaviHistory.Forward(new LocationItem(@"H:\"));
 }
Example #3
0
        /// <summary>
        /// Master controler interface method to navigate all views
        /// to the folder indicated in <paramref name="folder"/>
        /// - updates all related viewmodels.
        /// </summary>
        /// <param name="request"></param>
        private async Task <FinalBrowseResult> NavigateToFolderAsync(BrowseRequest request,
                                                                     object sender)
        {
            // Make sure the task always processes the last input but is not started twice
            await _SlowStuffSemaphore.WaitAsync();

            try
            {
                var newPath = request.NewLocation;
                var cancel  = request.CancelTok;

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

                TreeBrowser.SetExternalBrowsingState(true);
                FolderItemsView.SetExternalBrowsingState(true);
                FolderTextPath.SetExternalBrowsingState(true);

                FinalBrowseResult browseResult = null;

                // Navigate TreeView to this file system location
                if (TreeBrowser != sender)
                {
                    browseResult = await TreeBrowser.NavigateToAsync(request);

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

                    if (browseResult.Result != BrowseResult.Complete)
                    {
                        return(FinalBrowseResult.FromRequest(request, BrowseResult.InComplete));
                    }
                }

                // Navigate Folder ComboBox to this folder
                if (FolderTextPath != sender)
                {
                    browseResult = await FolderTextPath.NavigateToAsync(request);

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

                    if (browseResult.Result != BrowseResult.Complete)
                    {
                        return(FinalBrowseResult.FromRequest(request, BrowseResult.InComplete));
                    }
                }

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

                // Navigate Folder/File ListView to this folder
                if (FolderItemsView != sender)
                {
                    browseResult = await FolderItemsView.NavigateToAsync(request);

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

                    if (browseResult.Result != BrowseResult.Complete)
                    {
                        return(FinalBrowseResult.FromRequest(request, BrowseResult.InComplete));
                    }
                }

                if (browseResult != null)
                {
                    if (browseResult.Result == BrowseResult.Complete)
                    {
                        SelectedFolder = newPath.Path;

                        // Log location into history of recent locations
                        NaviHistory.Forward(newPath);
                    }
                }

                return(browseResult);
            }
            catch (Exception exp)
            {
                var result = FinalBrowseResult.FromRequest(request, BrowseResult.InComplete);
                result.UnexpectedError = exp;
                return(result);
            }
            finally
            {
                TreeBrowser.SetExternalBrowsingState(true);
                FolderItemsView.SetExternalBrowsingState(false);
                FolderTextPath.SetExternalBrowsingState(false);

                _SlowStuffSemaphore.Release();
            }
        }