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());
        }
Example #2
0
        public void PickFiles()
        {
            ScriptRunner.RunScriptAsync(
                new ParameterDic()
            {
                { "WindowManager", _windowManager },
                { "GlobalEvents", _events },
                { "Header", "OpenFile(s)" },
                { "StartupPath", OpenPath }
            },
                IOScriptCommands.FileOpen(_profiles, RootModels.ToArray(), true, FileFilter, "{Selection}",
                                          UIScriptCommands.MessageBoxOK("{Header}", "{Selection[0]} Selected"),
                                          UIScriptCommands.MessageBoxOK("{Header}", "User Cancelled"))
                );

            #region Obsoluted - 1 (Use WPFScriptCommands.OpenFileDialog() IScriptCommand)
            //ScriptRunner.RunScriptAsync(
            //    new ParameterDic() { { "WindowManager", _windowManager } },
            //    WPFScriptCommands.OpenFileDialog(_windowManager, _events, RootModels.ToArray(), FileFilter, "demo.txt",
            //        (fpvm) => WPFScriptCommands.MessageBox("Open", fpvm.FileName), ResultCommand.OK));
            #endregion

            #region Obsoluted - 0 (Create FilePickerViewModel Manually)
            //var filePicker = new FilePickerViewModel(_events, _windowManager, FileFilter, FilePickerMode.Open, RootModels.ToArray());
            //updateExplorerModel(initExplorerModel(filePicker));
            //if (_windowManager.ShowDialog(filePicker).Value)
            //{
            //    MessageBox.Show(String.Join(",", filePicker.SelectedFiles.Select(em => em.FullPath)));
            //}
            #endregion
        }
Example #3
0
 public void Remove()
 {
     if (SelectedRootModel != null)
     {
         _events.PublishOnUIThread(new RootChangedEvent(ChangeType.Deleted, SelectedRootModel));
         RootModels.Remove(SelectedRootModel);
     }
 }
Example #4
0
        public void SaveFile()
        {
            ScriptRunner.RunScriptAsync(
                new ParameterDic()
            {
                { "WindowManager", _windowManager },
                { "GlobalEvents", _events },
                { "Header", "SaveFile" },
                { "FileName", "OpenFile.txt" },
                { "StartupPath", OpenPath }
            },
                IOScriptCommands.FileSave(_profiles, RootModels.ToArray(), FileFilter, "{Selection}",
                                          UIScriptCommands.MessageBoxOK("{Header}", "{Selection[0]} Selected"),
                                          UIScriptCommands.MessageBoxOK("{Header}", "User Cancelled"))
                );

            #region Obsolute - 2 (Use UIScriptCommands.FileSave)
            //ScriptRunner.RunScriptAsync(
            //     new ParameterDic()
            //     {
            //     { "WindowManager", _windowManager },
            //     { "RootModels", RootModels.ToArray() },
            //     { "FilterStr", FileFilter },
            //     { "ProfileEx", _profileEx }
            //     },
            //   UIScriptCommands.FileSave(
            //     ScriptCommands.RunCommandsInQueue(null,
            //        UIScriptCommands.ExplorerSetParameters(ExplorerParameterType.RootModels, "{RootModels}",
            //        UIScriptCommands.ExplorerSetParameters(ExplorerParameterType.FilterStr, "{FilterStr}"))
            //     ),

            //     UIScriptCommands.ExplorerParseAndGoTo("{Explorer}", "{ProfileEx}", ""),
            //     "{WindowsManager}", "{Events}", "{DialogResult}", "{SelectionPaths}",

            //     ScriptCommands.IfTrue("{DialogResult}",
            //        UIScriptCommands.MessageBoxOK("SaveFile", "{SelectionPaths}"),
            //        UIScriptCommands.MessageBoxOK("SaveFile", "Cancelled"))
            //        ));
            #endregion

            #region Obsolute - 1 (Use WPFScriptCommands.SaveFilePicker() IScriptCommand)
            //ScriptRunner.RunScriptAsync(
            //     new ParameterDic() { { "WindowManager", _windowManager } },
            //   WPFScriptCommands.SaveFilePicker(_windowManager, null, RootModels.ToArray(), FileFilter, "demo.txt",
            //       (fpvm) => WPFScriptCommands.MessageBox("Save", fpvm.FileName), ResultCommand.OK));
            #endregion

            #region Obsolute - 0 (Create FilePickerViewModel manually)
            //var filePicker = new FilePickerViewModel(_events, _windowManager, FileFilter, FilePickerMode.Save, RootModels.ToArray());
            //updateExplorerModel(initExplorerModel(filePicker));
            //if (_windowManager.ShowDialog(filePicker).Value)
            //{
            //    MessageBox.Show(filePicker.FileName);
            //}
            #endregion
        }
        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);
        }
Example #7
0
        public void Handle(RootChangedEvent message)
        {
            switch (message.ChangeType)
            {
            case ChangeType.Created:
            case ChangeType.Changed:
                if (message.ChangeType == ChangeType.Changed)
                {
                    RootModels.Clear();
                }
                foreach (var root in message.AppliedRootDirectories)
                {
                    RootModels.Add(root);
                }
                break;

            case ChangeType.Deleted:
                foreach (var root in message.AppliedRootDirectories)
                {
                    RootModels.Remove(root);
                }
                break;
            }
        }
Example #8
0
        public void TabWindow()
        {
            ScriptRunner.RunScriptAsync(new ParameterDic()
            {
                { "StartupPath", OpenPath },
                { "GlobalEvents", _events },
                { "WindowManager", _windowManager },
                { "EnableDrag", _enableDrag },
                { "EnableDrop", _enableDrop },
                { "EnableContextMenu", _enableContextMenu },
                { "EnableBookmark", _enableBookmark },
                { "EnableMultiSelect", _enableMultiSelect },
                { "EnableTabsWhenOneTab", _showTabsWhenOneTab }
            },
                                        IOScriptCommands.ExplorerNewTabWindow(_profiles, RootModels.ToArray(), "{TabbedExplorer}"));


            //var tabVM = new TabbedExplorerViewModel(_windowManager, _events);
            //tabVM.Initializer = new ScriptCommandInitializer()
            //{
            //    Events = _events,
            //    WindowManager = _windowManager,
            //    OnModelCreated = ScriptCommands.RunScriptCommand("{OnModelCreated}"),
            //    OnViewAttached = ScriptCommands.RunScriptCommand("{OnViewAttached}"),
            //    StartupParameters = new FileExplorer.ParameterDic()
            //    {
            //        {"TabbedExplorer", tabVM },
            //        {"Profiles", _profiles },
            //        {"RootDirectories", RootModels.ToArray() },
            //        {"OnModelCreated", IOInitializeHelpers.Explorer_Initialize_Default },
            //        {"OnViewAttached", UIScriptCommands.ExplorerGotoStartupPathOrFirstRoot() },
            //    }
            //};


            //_windowManager.ShowWindow(tabVM);


            //ScriptRunner.RunScriptAsync(new ParameterDic() {
            //        { "StartupPath", OpenPath },
            //        { "GlobalEvents", _events },
            //        { "WindowManager", _windowManager },
            //        { "EnableDrag", _enableDrag },
            //        { "EnableDrop", _enableDrop },
            //        { "EnableMultiSelect", _enableMultiSelect},
            //    },
            //   IOScriptCommands.ExplorerShow(_profiles, RootModels.ToArray()));


            //var profiles = new IProfile[] {
            //    _profileEx, _profileSkyDrive, _profileDropBox, _profileGoogleDrive
            //};

            //var initializer = getInitializer(_windowManager, _events, RootModels.ToArray(),
            //    ExplorerInitializers.Parameter(new FileListParameters() { ViewMode = "Icon", ItemSize = 100 }),
            //    ExplorerInitializers.Parameter(new ExplorerParameters() { UIScale = 1.1f, FileListSize = "3*", NavigationSize = 45 }),
            //    new BasicParamInitalizers(_expandRootDirectories, _enableMultiSelect, _enableDrag, _enableDrop),
            //    new ColumnInitializers(),
            //    new ScriptCommandsInitializers(_windowManager, _events, profiles),
            //    new ToolbarCommandsInitializers(_windowManager));

            //var initializer =

            //var tabVM = new TabbedExplorerViewModel(initializer);

            //var windowManager = new TabbedAppWindowManager(tabVM);


            //_windowManager.ShowWindow(tabVM);
        }
Example #9
0
 public void MdiWindow()
 {
     new MdiWindow(_windowManager, _events, RootModels.ToArray()).Show();
 }
Example #10
0
        public AppViewModel(IEventAggregator events, IWindowManager windowManager)
        {
            //FileExplorer.Models.Bookmark.BookmarkSerializeTest.Test();
            _windowManager = windowManager;
            _events        = events;

            _events.Subscribe(this);

            _profile   = new FileSystemInfoProfile(_events);
            _profileEx = new FileSystemInfoExProfile(_events, _windowManager, new FileExplorer.Models.SevenZipSharp.SzsProfile(_events));

            Func <string> loginSkyDrive = () =>
            {
                var login = new SkyDriveLogin(AuthorizationKeys.SkyDrive_Client_Id);
                if (_windowManager.ShowDialog(new LoginViewModel(login)).Value)
                {
                    return(login.AuthCode);
                }
                return(null);
            };

            if (AuthorizationKeys.SkyDrive_Client_Secret != null)
            {
                _profileSkyDrive = new SkyDriveProfile(_events, AuthorizationKeys.SkyDrive_Client_Id, loginSkyDrive, skyDriveAliasMask);
            }


            Func <UserLogin> loginDropBox = () =>
            {
                var login = new DropBoxLogin(AuthorizationKeys.DropBox_Client_Id,
                                             AuthorizationKeys.DropBox_Client_Secret);
                if (_windowManager.ShowDialog(new LoginViewModel(login)).Value)
                {
                    return(login.AccessToken);
                }
                return(null);
            };

            if (AuthorizationKeys.DropBox_Client_Secret != null)
            {
                _profileDropBox = new DropBoxProfile(_events,
                                                     AuthorizationKeys.DropBox_Client_Id,
                                                     AuthorizationKeys.DropBox_Client_Secret,
                                                     loginDropBox);
            }

            if (System.IO.File.Exists("gapi_client_secret.json"))
            {
                using (var gapi_secret_stream = System.IO.File.OpenRead("gapi_client_secret.json")) //For demo only.
                {
                    _profileGoogleDrive = new GoogleDriveProfile(_events, gapi_secret_stream);
                }
            }


            string appDataPath = Environment.ExpandEnvironmentVariables("%AppData%\\FileExplorer3");

            System.IO.Directory.CreateDirectory(appDataPath);
            string bookmarkPath = Path.Combine(appDataPath, "Bookmarks.xml");

            _profileBm = new BookmarkProfile(_profileEx as IDiskProfile, bookmarkPath,
                                             new IProfile[] { _profileEx, _profileSkyDrive, _profileDropBox, _profileGoogleDrive });


            RootModels.Add((_profileBm as BookmarkProfile).RootModel);
            RootModels.Add(AsyncUtils.RunSync(() => _profileEx.ParseAsync(System.IO.DirectoryInfoEx.DesktopDirectory.FullName)));

            _profiles = new IProfile[] {
                _profileBm, _profileEx, _profileSkyDrive, _profileDropBox, _profileGoogleDrive
            }.Where(p => p != null).ToArray();
        }
Example #11
0
 public void Clear()
 {
     RootModels.Clear();
     _events.PublishOnUIThread(new RootChangedEvent(ChangeType.Changed, RootModels.ToArray()));
 }
Example #12
0
 public void OpenToolWindow()
 {
     new TestApp.ToolWindowTest(_profiles, RootModels.ToArray(), FileFilter, "c:\\").Show();
 }
Example #13
0
 public void OpenWindow(object context = null)
 {
     if (UseScriptCommandInitializer)
     {
         OpenWindowUsingScriptCommand();
     }
     else
     {
         #region Obsoluting - Use ExplorerInitializer
         IExplorerInitializer initializer = new ExplorerInitializer(_windowManager, _events, RootModels.ToArray())
         {
             Initializers = new List <IViewModelInitializer <IExplorerViewModel> >()
             {
                 new BasicParamInitalizers(_expandRootDirectories, _enableMultiSelect, _enableDrag, _enableDrop),
                 new ColumnInitializers(),
                 new ScriptCommandsInitializers(_windowManager, _events, _profiles),
                 new ToolbarCommandsInitializers(_windowManager)
             }
         };
         ExplorerViewModel evm = new ExplorerViewModel(_windowManager, _events)
         {
             Initializer = initializer
         };
         _windowManager.ShowWindow(evm);
         #endregion
     }
 }
Example #14
0
        public void OpenWindowUsingScriptCommand()
        {
            #region Obsoluted - Same as the code below.
            //IScriptCommand onModelCreated =
            //    ScriptCommands.RunCommandsInSequence(null,
            //        IOScriptCommands.ExplorerDefault(),
            //        IOScriptCommands.ExplorerDefaultToolbarCommands(),
            //        UIScriptCommands.ExplorerAssignScriptParameters("{Explorer}",
            //                "{OnViewAttached},{OnModelCreated},{EnableDrag},{EnableDrop},{EnableMultiSelect}")
            //        );

            //ScriptRunner.RunScriptAsync(new ParameterDic() {
            //        //Required
            //        { "Profiles", _profiles },
            //        { "OnModelCreated", onModelCreated },
            //        { "OnViewAttached", UIScriptCommands.ExplorerGotoStartupPathOrFirstRoot()},
            //        { "RootDirectories", RootModels.ToArray() },
            //        //Optional
            //        { "StartupPath", OpenPath },
            //        { "Events", _events },
            //        { "WindowManager", _windowManager },
            //        { "EnableDrag", _enableDrag },
            //        { "EnableDrop", _enableDrop },
            //        { "EnableMultiSelect", _enableMultiSelect},
            //    }, UIScriptCommands.ExplorerShow());
            #endregion

            //IOScriptCommands.ExplorerShow initialize {OnModelCreated} and {OnViewAttached} to IO based.
            //While UIScriptCommands.ExplorerShow have to specify explicitly.
            ScriptRunner.RunScriptAsync(new ParameterDic()
            {
                { "StartupPath", OpenPath },
                { "GlobalEvents", _events },
                { "WindowManager", _windowManager },
                { "EnableDrag", _enableDrag },
                { "EnableDrop", _enableDrop },
                { "EnableContextMenu", _enableContextMenu },
                { "EnableBookmark", _enableBookmark },
                { "EnableMap", true },
                { "EnableMultiSelect", _enableMultiSelect },
            },
                                        IOScriptCommands.ExplorerNewWindow(_profiles, RootModels.ToArray()));
        }