コード例 #1
0
 private static IControl CreateMenuItem(IMenuItemViewModel viewModel)
 {
     if (viewModel is SeparatorMenuItemViewModel)
     {
         return(new Separator());
     }
     else if (viewModel is MenuItemViewModel itemViewModel)
     {
         return(new MenuItem
         {
             Header = itemViewModel.Header,
             Icon = itemViewModel.Icon,
             Command = itemViewModel.Command
         });
     }
     else if (viewModel is ParentMenuItemViewModel parentViewModel)
     {
         return(new MenuItem
         {
             Header = parentViewModel.Header,
             Icon = parentViewModel.Icon,
             Items = CreateMenuItems(parentViewModel.SubItems)
         });
     }
     else
     {
         throw new ArgumentException("Unknown view model type", nameof(viewModel));
     }
 }
コード例 #2
0
 public static bool IsEnabled(this IMenuItemViewModel item, object context = null)
 {
     if (item?.Command == null)
     {
         return(false);
     }
     try { return(item.Command.CanExecute(context)); }
     catch (Exception) { return(false); }
 }
コード例 #3
0
        public PartitionFileEntryItemViewModel(PartitionFileEntryItemBase partitionFileEntryItem, IServiceProvider serviceProvider)
            : base(partitionFileEntryItem, serviceProvider)
        {
            _partitionFileEntryItem = partitionFileEntryItem;

            var savePartitionFileItemCommand = serviceProvider.GetRequiredService <ISavePartitionFileCommand>();

            savePartitionFileItemCommand.PartitionFileItem = partitionFileEntryItem;
            _menuItemSavePartitionFile = CreateLocalizedMenuItem(nameof(ILocalizationKeys.ContextMenu_SavePartitionFileItem), savePartitionFileItemCommand);
        }
コード例 #4
0
        public SectionItemViewModel(SectionItem sectionItem, IServiceProvider serviceProvider)
            : base(sectionItem, serviceProvider)
        {
            _sectionItem = sectionItem;
            _sectionItem.PropertyChanged += OnSectionItemPropertyChanged;

            var saveSectionContentCommand = serviceProvider.GetRequiredService <ISaveSectionContentCommand>();

            saveSectionContentCommand.SectionItem = sectionItem;
            _menuItemSaveSection = CreateLocalizedMenuItem(nameof(ILocalizationKeys.ContextMenu_SaveSectionItem), saveSectionContentCommand);
        }
コード例 #5
0
        public DirectoryEntryItemViewModel(DirectoryEntryItem directoryEntryItem, IServiceProvider serviceProvider)
            : base(directoryEntryItem, serviceProvider)
        {
            _directoryEntryItem = directoryEntryItem;


            SizeStr = _directoryEntryItem.Size.ToFileSize();

            var keyName = directoryEntryItem.DirectoryEntryType == DirectoryEntryType.Directory ? nameof(ILocalizationKeys.ContextMenu_SaveDirectoryItem) : nameof(ILocalizationKeys.ContextMenu_SaveFileItem);
            var saveDirectoryEntryItemCommand = serviceProvider.GetRequiredService <ISaveDirectoryEntryCommand>();

            saveDirectoryEntryItemCommand.DirectoryEntryItem = directoryEntryItem;
            _menuItemSaveEntry = CreateLocalizedMenuItem(keyName, saveDirectoryEntryItemCommand);
        }
コード例 #6
0
        public ItemViewModel(IItem item, IServiceProvider serviceProvider)
        {
            _item           = item ?? throw new ArgumentNullException(nameof(item));
            serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));

            var itemViewModelBuilder = serviceProvider.GetRequiredService <IItemViewModelBuilder>();

            Children = _item.ChildItems.Select(childItem => itemViewModelBuilder.Build(childItem)).ToList();

            _menuItemShowErrors = CreateLocalizedMenuItem(nameof(ILocalizationKeys.ContextMenu_ShowItemErrors), serviceProvider.GetRequiredService <IShowItemErrorsWindowCommand>());

            _item.PropertyChanged      += OnItemPropertyChanged;
            _item.Errors.ErrorsChanged += (_, _) => { UpdateErrors(); };

            UpdateErrors();
        }
コード例 #7
0
        public NcaItemViewModel(NcaItem ncaItem, IServiceProvider serviceProvider)
            : base(ncaItem, serviceProvider)
        {
            _ncaItem = ncaItem;

            _ncaItem.PropertyChanged += OnNcaItemPropertyChanged;

            var savePartitionFileCommand = serviceProvider.GetRequiredService <ISavePartitionFileCommand>();

            savePartitionFileCommand.PartitionFileItem = ncaItem;
            _menuItemSaveNcaRaw = CreateLocalizedMenuItem(nameof(ILocalizationKeys.ContextMenu_SaveNcaFileRaw), savePartitionFileCommand);

            var savePlaintextNcaFileCommand = serviceProvider.GetRequiredService <ISavePlaintextNcaFileCommand>();

            savePlaintextNcaFileCommand.NcaItem = ncaItem;
            _menuItemSavePlaintextNca           = CreateLocalizedMenuItem(nameof(ILocalizationKeys.ContextMenu_SaveNcaFilePlaintext), savePlaintextNcaFileCommand);
        }
コード例 #8
0
        private static IControl CreateToolbarItem(IMenuItemViewModel viewModel, bool isTopLevel)
        {
            if (viewModel is SeparatorMenuItemViewModel)
            {
                return(new Separator());
            }
            else if (viewModel is MenuItemViewModel itemViewModel)
            {
                var item = new ToolbarItem
                {
                    Header  = itemViewModel.Header,
                    Icon    = itemViewModel.Icon,
                    Command = itemViewModel.Command
                };

                if (isTopLevel)
                {
                    item.SetValue(ToolTip.TipProperty, itemViewModel.Header);
                }

                return(item);
            }
            else if (viewModel is ParentMenuItemViewModel parentViewModel)
            {
                var item = new ToolbarItem
                {
                    Header = parentViewModel.Header,
                    Icon   = parentViewModel.Icon,
                    Items  = CreateToolbarItems(parentViewModel.SubItems)
                };

                if (isTopLevel)
                {
                    item.SetValue(ToolTip.TipProperty, parentViewModel.Header);
                }

                return(item);
            }
            else
            {
                throw new ArgumentException("Unknown view model type", nameof(viewModel));
            }
        }
コード例 #9
0
        public void Test_MenuItem_IsEnabled()
        {
            IMenuItemViewModel menuItem = null;

            // ReSharper disable once ExpressionIsAlwaysNull
            menuItem.IsEnabled().Should().BeFalse("menu item is null");

            menuItem = Substitute.For <IMenuItemViewModel>();

            menuItem.Command.Returns((ICommand)null);
            menuItem.IsEnabled().Should().BeFalse("command is null");

            menuItem = Substitute.For <IMenuItemViewModel>();
            menuItem.Command.CanExecute(Arg.Any <object>()).Returns(false);
            menuItem.IsEnabled().Should().BeFalse("cannot execute command");

            menuItem.Command.CanExecute(Arg.Any <object>()).Returns(true);
            menuItem.IsEnabled().Should().BeTrue("can execute command");
        }
コード例 #10
0
 private void ChangeView(IMenuItemViewModel menuItem)
 {
     HamburgerMenu.Content    = menuItem.Content;
     HamburgerMenu.IsPaneOpen = false;
 }
コード例 #11
0
 private static IControl CreateTopLevelToolbarItem(IMenuItemViewModel viewModel)
 => CreateToolbarItem(viewModel, true);
コード例 #12
0
 private static IControl CreateToolbarItem(IMenuItemViewModel viewModel)
 => CreateToolbarItem(viewModel, false);
コード例 #13
0
 public TreeViewSelectionChangedMessage(IMenuItemViewModel selectedItem)
 {
     SelectedItem = selectedItem;
 }