Example #1
0
        public virtual void Clear()
        {
            SelectedItem = default(TViewModel);

            using (BusyStack.GetToken())
                _items.Clear();
        }
Example #2
0
        public override void AddRange(IEnumerable <TViewModel> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items), $"{nameof(items)} {Resources.IsRequired}");
            }

            using (BusyStack.GetToken())
            {
                var added    = false;
                var sequence = _sequenceProvider.Get(Items.Cast <ISequence>().ToList());

                foreach (var item in items)
                {
                    item.Sequence = sequence;
                    Add(item);

                    sequence++;
                    added = true;
                }

                if (SelectedItem == null && added)
                {
                    SelectedItem = Items.First();
                }
            }
        }
Example #3
0
        private FileSystemViewModel()
        {
            _busyStack            = new BusyStack();
            _busyStack.OnChanged += (hasItems) => IsBusy = hasItems;

            SelectCommand = new RelayCommand <IFileSystemInfo>(SetSelectedItem, CanSetSelectedItem);
        }
Example #4
0
 protected BaseDataViewModel(IMessenger messenger)
 {
     Messenger            = messenger ?? throw new ArgumentNullException(nameof(messenger), $"{nameof(messenger)} {Resources.IsRequired}");
     BusyStack            = new BusyStack();
     BusyStack.OnChanged += (isBusy) => IsBusy = isBusy;
     ChangeTracker        = new ChangeTracker();
 }
Example #5
0
        protected MapleFileSystemBase(string name, string fullName, IDepth depth, IFileSystemDirectory parent, IMessenger messenger)
            : this(messenger)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name), $"{nameof(name)} {Resources.IsRequired}");
            }

            if (string.IsNullOrEmpty(fullName))
            {
                throw new ArgumentNullException(nameof(fullName), $"{nameof(fullName)} {Resources.IsRequired}");
            }

            if (depth == null)
            {
                throw new ArgumentNullException(nameof(depth), $"{nameof(depth)} {Resources.IsRequired}");
            }

            if (!(this is IFileSystemDrive) && parent == null)
            {
                throw new ArgumentNullException(nameof(parent), $"{nameof(parent)} {Resources.IsRequired}");
            }

            using (BusyStack.GetToken())
            {
                Depth = depth;
                Depth.Current++;

                Name     = name;
                FullName = fullName;
                Parent   = parent;
            }
        }
Example #6
0
 /// <summary>
 /// Refreshes this instance.
 /// </summary>
 /// <autogeneratedoc />
 public override void Refresh()
 {
     using (BusyStack.GetToken())
     {
         OnFilterChanged(string.Empty);
     }
 }
Example #7
0
        protected ViewModel(IMessenger messenger)
        {
            BusyStack            = new BusyStack();
            BusyStack.OnChanged += (isBusy) => IsBusy = isBusy;
            MessageTokens        = new List <SubscriptionToken>();

            Messenger = messenger ?? throw new ArgumentNullException(nameof(messenger), $"{nameof(messenger)} {Resources.IsRequired}");
        }
Example #8
0
        /// <summary>
        /// Adds the specified item.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <exception cref="System.ArgumentNullException">item</exception>
        public virtual void Add(TViewModel item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            using (BusyStack.GetToken())
                _items.Add(item);
        }
Example #9
0
        /// <param name="items">The items.</param>
        /// <exception cref="System.ArgumentNullException">items</exception>
        public virtual void AddRange(IEnumerable <TViewModel> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            using (BusyStack.GetToken())
                _items.AddRange(items);
        }
Example #10
0
        /// <param name="items">The items.</param>
        /// <exception cref="System.ArgumentNullException">items</exception>
        public virtual void RemoveRange(IList items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            using (BusyStack.GetToken())
                _items.RemoveRange(items.Cast <TViewModel>());
        }
Example #11
0
 public MapleDirectory(DirectoryInfo info, IDepth depth, IFileSystemDirectory parent, IMessenger messenger, ILoggingService loggingService)
     : base(info.Name, info.FullName, depth, parent, messenger, loggingService)
 {
     using (BusyStack.GetToken())
     {
         if (!Depth.IsMaxReached)
         {
             Refresh();
         }
     }
 }
Example #12
0
        public override void Refresh()
        {
            using (BusyStack.GetToken())
            {
                Children.Clear();
                Children.AddRange(FileSystemExtensions.GetChildren(this, Depth, Messenger, _loggingService));
                HasContainers = Children.Any(p => p is MapleFileSystemContainerBase);

                OnFilterChanged(string.Empty);
            }
        }
Example #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MapleDrive"/> class.
 /// </summary>
 /// <param name="info">The information.</param>
 /// <param name="depth">The depth.</param>
 /// <autogeneratedoc />
 public MapleDrive(DriveInfo info, IDepth depth, IMessenger messenger, ILoggingService loggingService)
     : base(info.Name, info.Name, depth, null, messenger, loggingService)
 {
     using (BusyStack.GetToken())
     {
         if (!Depth.IsMaxReached)
         {
             Refresh();
         }
     }
 }
Example #14
0
        public override void OnFilterChanged(string filter)
        {
            using (BusyStack.GetToken())
            {
                Filter = filter;
                Children.ForEach(p => p.LoadMetaData());
                Children.ForEach(p => p.Filter = filter);

                using (DefaultCollectionView.DeferRefresh())
                    DefaultCollectionView.Filter = SearchFilter;
            }
        }
Example #15
0
 public MapleFile(FileInfo info, IDepth depth, IFileSystemDirectory parent, IMessenger messenger)
     : base(info.Name, info.FullName, depth, parent, messenger)
 {
     using (BusyStack.GetToken())
     {
         if (!Depth.IsMaxReached)
         {
             Refresh();
             IsExpanded = true;
         }
     }
 }
Example #16
0
        /// <summary>
        /// Removes the range.
        /// </summary>
        /// <param name="items">The items.</param>
        public override void RemoveRange(IEnumerable <TViewModel> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items), $"{nameof(items)} {Resources.IsRequired}");
            }

            using (BusyStack.GetToken())
            {
                items.ForEach(p => p.Model.IsDeleted = true);
                base.RemoveRange(items);
            }
        }
Example #17
0
        private MapleFileSystemBase()
        {
            _busyStack            = new BusyStack();
            _busyStack.OnChanged += (hasItems) => IsBusy = hasItems;

            LoadCommand    = new RelayCommand(Load, CanLoad);
            RefreshCommand = new RelayCommand(Refresh, CanRefresh);
            DeleteCommand  = new RelayCommand(Delete, CanDelete);

            Exists        = true;
            IsHidden      = false;
            IsContainer   = false;
            HasContainers = false;
        }
Example #18
0
        /// <summary>
        /// Removes the range.
        /// </summary>
        /// <param name="items">The items.</param>
        /// <exception cref="System.ArgumentNullException">items</exception>
        public override void RemoveRange(IList items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items), $"{nameof(items)} {Resources.IsRequired}");
            }

            using (BusyStack.GetToken())
            {
                foreach (var item in items)
                {
                    Remove(item as TViewModel);
                }
            }
        }
Example #19
0
        /// <summary>
        /// Removes the specified item.
        /// </summary>
        /// <param name="item">The item.</param>
        public override void Remove(TViewModel viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel), $"{nameof(viewModel)} {Resources.IsRequired}");
            }

            using (BusyStack.GetToken())
            {
                while (Items.Contains(viewModel))
                {
                    viewModel.Model.IsDeleted = true;
                    base.Remove(viewModel);
                }
            }
        }
Example #20
0
        public FileSystemViewModel(IMessenger messenger, ILoggingService loggingService)
            : base(messenger)
        {
            using (BusyStack.GetToken())
            {
                DisplayListView = false;

                Drives        = new RangeObservableCollection <MapleDrive>();
                SelectedItems = new RangeObservableCollection <IFileSystemInfo>();

                var drives = DriveInfo.GetDrives()
                             .Where(p => p.IsReady && p.DriveType != DriveType.CDRom && p.DriveType != DriveType.Unknown)
                             .Select(p => new MapleDrive(p, new FileSystemDepth(0), Messenger, loggingService))
                             .ToList();
                Drives.AddRange(drives);

                SelectCommand = new RelayCommand <object>(SetSelectedItem, CanSetSelectedItem);
            }
        }
Example #21
0
        protected MapleFileSystemContainerBase(string name, string fullName, IDepth depth, IFileSystemDirectory parent, IMessenger messenger, ILoggingService loggingService)
            : base(name, fullName, depth, parent, messenger)
        {
            using (BusyStack.GetToken())
            {
                IsContainer = true;

                Children = new RangeObservableCollection <IFileSystemInfo>();

                NoFilesCollectionView = CollectionViewSource.GetDefaultView(Children);
                DefaultCollectionView = CollectionViewSource.GetDefaultView(Children);

                using (NoFilesCollectionView.DeferRefresh())
                    NoFilesCollectionView.Filter = NoFilesFilter;

                using (DefaultCollectionView.DeferRefresh())
                    DefaultCollectionView.Filter = SearchFilter;

                _loggingService = loggingService ?? throw new ArgumentNullException(nameof(loggingService), $"{nameof(loggingService)} {Resources.IsRequired}");
            }
        }
Example #22
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FileSystemViewModel"/> class.
        /// </summary>
        /// <autogeneratedoc />
        public FileSystemViewModel()
        {
            _busyStack            = new BusyStack();
            _busyStack.OnChanged += (hasItems) => IsBusy = hasItems;
            SelectCommand         = new RelayCommand <IFileSystemInfo>(SetSelectedItem, CanSetSelectedItem);

            using (_busyStack.GetToken())
            {
                DisplayListView = false;

                Drives              = new RangeObservableCollection <MapleDrive>();
                SelectedItems       = new RangeObservableCollection <IFileSystemInfo>();
                SelectedDetailItems = new RangeObservableCollection <IFileSystemInfo>();

                var drives = DriveInfo.GetDrives()
                             .Where(p => p.IsReady && p.DriveType != DriveType.CDRom && p.DriveType != DriveType.Unknown)
                             .Select(p => new MapleDrive(p, new FileSystemDepth(0)))
                             .ToList();
                Drives.AddRange(drives);
            }
        }
Example #23
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BusyToken"/> class.
 /// </summary>
 /// <param name="stack">The stack.</param>
 public BusyToken(BusyStack stack) : base(stack)
 {
     stack.Push(this);
 }
 public RangeObservableCollection()
     : base()
 {
     _busyStack            = new BusyStack();
     _busyStack.OnChanged += (updatePending) => _suppressNotification = updatePending;
 }
Example #25
0
 /// <summary>
 /// Removes the specified item.
 /// </summary>
 /// <param name="item">The item.</param>
 public virtual void Remove(TViewModel item)
 {
     using (BusyStack.GetToken())
         _items.Remove(item);
 }