public void Handle(RootChangedEvent message) { Queue <IScriptCommand> cmds = new Queue <IScriptCommand>(); cmds.Enqueue(Explorer.ChangeRoot(message.ChangeType, message.AppliedRootDirectories)); if (message.Sender != null && message.Sender != this) { cmds.Enqueue(UIScriptCommands.ExplorerGoToValue(CurrentDirectory.EntryModel)); } else { switch (message.ChangeType) { case ChangeType.Changed: cmds.Enqueue(UIScriptCommands.ExplorerGoToValue(message.AppliedRootDirectories.First())); break; case ChangeType.Deleted: cmds.Enqueue(UIScriptCommands.ExplorerGoToValue(RootModels.FirstOrDefault())); break; } } Commands.ExecuteAsync(cmds.ToArray()); }
public async Task GoAsync(IEntryModel entryModel) { entryModel = entryModel ?? RootModels.FirstOrDefault(); if (entryModel != null) { await Task.WhenAll( FileList.SetCurrentDirectoryAsync(entryModel), DirectoryTree.SelectAsync(entryModel), Breadcrumb.Selection.AsRoot().SelectAsync(entryModel)); NotifyOfPropertyChange(() => CurrentDirectory); NotifyOfPropertyChange(() => CurrentDirectory); } }
public async Task InitializeViewAttachedAsync(IExplorerViewModel evm) { evm.RootModels = RootModels; //Initializers.Add(ExplorerInitializers.StartupDirectory(RootModels.FirstOrDefault())); //Initializers.EnsureOneStartupDirectoryOnly(); if (!Initializers.Any(i => i is StartupDirInitializer)) { var firstDir = RootModels.FirstOrDefault(); if (firstDir != null) { await evm.GoAsync(firstDir); } } await Initializers.InitalizeAsync(evm); }