public DirectoryNodeViewModel(IEventAggregator events, IDirectoryTreeViewModel rootModel, IEntryModel curDirModel,
                                      IDirectoryNodeViewModel parentModel)
            : base(curDirModel)
        {
            _events    = events;
            _rootModel = rootModel;

            Entries = new EntriesHelper <IDirectoryNodeViewModel>(loadEntriesTask)
            {
                ClearBeforeLoad = true
            };
            Selection = new TreeSelector <IDirectoryNodeViewModel, IEntryModel>(curDirModel, this,
                                                                                parentModel == null ? rootModel.Selection : parentModel.Selection, Entries);
            Selection.PropertyChanged += (o, e) =>
            {
                if (e.PropertyName == "IsSelected")
                {
                    IsSelected = Selection.IsSelected;
                }
            };
            DropHelper = new DirectoryNodeDropHelper(curDirModel, Entries, Selection)
            {
                DisplayName = curDirModel.Label
            };
        }
Ejemplo n.º 2
0
        public DirectoryTreeCommandManager(IDirectoryTreeViewModel dlvm, IWindowManager windowManager,
                                           IEventAggregator events, params IExportCommandBindings[] additionalBindingExportSource)
            : base(additionalBindingExportSource)
        {
            _dlvm = dlvm;
            InitCommandManager();

            ToolbarCommands = new ToolbarCommandsHelper(events, ParameterDicConverter,
                                                        message => new[] { message.NewModel },
                                                        null)
            {
                ExtraCommandProviders = new[] {
                    new StaticCommandProvider(
                        new CommandModel(ApplicationCommands.New)
                    {
                        IsVisibleOnMenu = true
                    },
                        new CommandModel(ExplorerCommands.Refresh)
                    {
                        IsVisibleOnMenu = true
                    },
                        new CommandModel(ApplicationCommands.Delete)
                    {
                        IsVisibleOnMenu = true
                    },
                        new CommandModel(ExplorerCommands.Rename)
                    {
                        IsVisibleOnMenu = true
                    },

                        new CommandModel(ExplorerCommands.Map)
                    {
                        HeaderIconExtractor = ResourceIconExtractor <ICommandModel> .ForSymbol(0xE17B),
                        //Symbol = Convert.ToChar(0xE17B),
                        IsEnabled       = true,
                        IsHeaderVisible = false, IsVisibleOnToolbar = true
                    },

                        new CommandModel(ExplorerCommands.Unmap)
                    {
                        HeaderIconExtractor = ResourceIconExtractor <ICommandModel> .ForSymbol(0xE17A),
                        IsVisibleOnToolbar  = true, IsVisibleOnMenu = true
                    }
                        )
                }
            };
        }
        public override async Task <IScriptCommand> ExecuteAsync(ParameterDic pm)
        {
            IExplorerViewModel      evm = pm.GetValue <IExplorerViewModel>(ExplorerKey);
            IDirectoryTreeViewModel dvm = evm != null ? evm.DirectoryTree :
                                          pm.GetValue <IDirectoryTreeViewModel>(ExplorerKey);
            IEntryModel em = pm.GetValue <IEntryModel>(DirectoryEntryKey);

            if (dvm == null)
            {
                return(ResultCommand.Error(new KeyNotFoundException(ExplorerKey)));
            }
            if (em == null)
            {
                return(ResultCommand.Error(new KeyNotFoundException(DirectoryEntryKey)));
            }

            switch (ToggleMode)
            {
            case DirectoryTreeToggleMode.Expand:
                await dvm.Selection.LookupAsync(em,
                                                RecrusiveSearch <IDirectoryNodeViewModel, IEntryModel> .LoadSubentriesIfNotLoaded,
                                                SetCollapsed <IDirectoryNodeViewModel, IEntryModel> .WhenNotRelated,
                                                SetExpanded <IDirectoryNodeViewModel, IEntryModel> .WhenChildSelected,
                                                SetExpanded <IDirectoryNodeViewModel, IEntryModel> .WhenSelected,
                                                SetBringIntoView.WhenSelected);

                break;

            case DirectoryTreeToggleMode.Collapse:
                await dvm.Selection.LookupAsync(em,
                                                RecrusiveSearch <IDirectoryNodeViewModel, IEntryModel> .LoadSubentriesIfNotLoaded,
                                                SetCollapsed <IDirectoryNodeViewModel, IEntryModel> .WhenChildSelected);

                break;

            default: return(ResultCommand.Error(new NotSupportedException(ToggleMode.ToString())));
            }

            logger.Info(String.Format("{0} {1}", ToggleMode, em));

            return(NextCommand);
        }