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)); } }
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); } }
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); }
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); }
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); }
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(); }
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); }
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)); } }
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"); }
private void ChangeView(IMenuItemViewModel menuItem) { HamburgerMenu.Content = menuItem.Content; HamburgerMenu.IsPaneOpen = false; }
private static IControl CreateTopLevelToolbarItem(IMenuItemViewModel viewModel) => CreateToolbarItem(viewModel, true);
private static IControl CreateToolbarItem(IMenuItemViewModel viewModel) => CreateToolbarItem(viewModel, false);
public TreeViewSelectionChangedMessage(IMenuItemViewModel selectedItem) { SelectedItem = selectedItem; }