private void SetServerVMCommands(ServerViewModel serverVM) { serverVM.Commands.Clear(); if (this.Host.ActiveSection == null) { // Don't add command (which will be disabled). return; } var refreshContextualCommand = new ContextualCommandViewModel(serverVM, this.Host.ActiveSection.RefreshCommand) { DisplayText = Strings.RefreshCommandDisplayText, Tooltip = Strings.RefreshCommandTooltip, Icon = new IconViewModel(KnownMonikers.Refresh) }; var browseServerContextualCommand = new ContextualCommandViewModel(serverVM.Url.ToString(), this.Host.ActiveSection.BrowseToUrlCommand) { DisplayText = Strings.BrowseServerMenuItemDisplayText, Tooltip = Strings.BrowserServerMenuItemTooltip, Icon = new IconViewModel(KnownMonikers.OpenWebSite) }; var toggleShowAllProjectsCommand = new ContextualCommandViewModel(serverVM, this.Host.ActiveSection.ToggleShowAllProjectsCommand) { Tooltip = Strings.ToggleShowAllProjectsCommandTooltip }; toggleShowAllProjectsCommand.SetDynamicDisplayText(x => { ServerViewModel ctx = x as ServerViewModel; Debug.Assert(ctx != null, "Unexpected fixed context for ToggleShowAllProjects context command"); return(ctx?.ShowAllProjects ?? false ? Strings.HideUnboundProjectsCommandText : Strings.ShowAllProjectsCommandText); }); var unbindCommand = new ContextualCommandViewModel(serverVM, this.Host.ActiveSection.UnbindCommand); unbindCommand.DisplayText = Strings.Unbind_Command_DisplayText; unbindCommand.Tooltip = Strings.Unbind_Command_Tooltip; unbindCommand.Icon = new IconViewModel(KnownMonikers.Disconnect); // Note: the Disconnect command is not on the context menu, although it is // called directly from code e.g. when the solution unloads serverVM.Commands.Add(refreshContextualCommand); serverVM.Commands.Add(browseServerContextualCommand); serverVM.Commands.Add(toggleShowAllProjectsCommand); serverVM.Commands.Add(unbindCommand); }
public void ContextualCommandViewModel_DisplayText() { // Arrange var context = new object(); var command = new RelayCommand(() => { }); var testSubject = new ContextualCommandViewModel(context, command); using (var tracker = new PropertyChangedTracker(testSubject)) { // Case 1: null // Act + Assert testSubject.DisplayText.Should().BeNull("Expected display text to return null when not set"); // Case 2: static testSubject.DisplayText = "foobar9000"; // Act + Assert testSubject.DisplayText.Should().Be("foobar9000", "Unexpected static display text"); tracker.AssertPropertyChangedRaised(nameof(testSubject.DisplayText), 1); // Case 3: dynamic var funcInvoked = false; Func <object, string> func = x => { funcInvoked = true; return("1234"); }; testSubject.SetDynamicDisplayText(func); // Act + Assert testSubject.DisplayText.Should().Be("1234", "Unexpected dynamic display text"); funcInvoked.Should().BeTrue("Dynamic display text function was not invoked"); tracker.AssertPropertyChangedRaised(nameof(testSubject.DisplayText), 2); } // Case 4: dynamic - null exception Exceptions.Expect <ArgumentNullException>(() => testSubject.SetDynamicDisplayText(null)); }
private void SetServerVMCommands(ServerViewModel serverVM) { serverVM.Commands.Clear(); if (this.Host.ActiveSection == null) { // Don't add command (which will be disabled). return; } var refreshContextualCommand = new ContextualCommandViewModel(serverVM, this.Host.ActiveSection.RefreshCommand) { DisplayText = Strings.RefreshCommandDisplayText, Tooltip = Strings.RefreshCommandTooltip, Icon = new IconViewModel(KnownMonikers.Refresh) }; var disconnectContextualCommand = new ContextualCommandViewModel(serverVM, this.Host.ActiveSection.DisconnectCommand) { DisplayText = Strings.DisconnectCommandDisplayText, Tooltip = Strings.DisconnectCommandTooltip, Icon = new IconViewModel(KnownMonikers.Disconnect) }; var browseServerContextualCommand = new ContextualCommandViewModel(serverVM.Url.ToString(), this.Host.ActiveSection.BrowseToUrlCommand) { DisplayText = Strings.BrowseServerMenuItemDisplayText, Tooltip = Strings.BrowserServerMenuItemTooltip, Icon = new IconViewModel(KnownMonikers.OpenWebSite) }; var toggleShowAllProjectsCommand = new ContextualCommandViewModel(serverVM, this.Host.ActiveSection.ToggleShowAllProjectsCommand) { Tooltip = Strings.ToggleShowAllProjectsCommandTooltip }; toggleShowAllProjectsCommand.SetDynamicDisplayText(x => { ServerViewModel ctx = x as ServerViewModel; Debug.Assert(ctx != null, "Unexpected fixed context for ToggleShowAllProjects context command"); return(ctx?.ShowAllProjects ?? false ? Strings.HideUnboundProjectsCommandText : Strings.ShowAllProjectsCommandText); }); serverVM.Commands.Add(refreshContextualCommand); serverVM.Commands.Add(disconnectContextualCommand); serverVM.Commands.Add(browseServerContextualCommand); serverVM.Commands.Add(toggleShowAllProjectsCommand); }
private void SetServerProjectsVMCommands(ServerViewModel serverVM) { foreach (ProjectViewModel projectVM in serverVM.Projects) { projectVM.Commands.Clear(); if (this.Host.ActiveSection == null) { // Don't add command (which will be disabled). continue; } var bindContextCommand = new ContextualCommandViewModel(projectVM, this.Host.ActiveSection.BindCommand, new BindCommandArgs(projectVM.Key, projectVM.ProjectName, serverVM.ConnectionInformation)); bindContextCommand.SetDynamicDisplayText(x => { var ctx = x as ProjectViewModel; Debug.Assert(ctx != null, "Unexpected fixed context for bind context command"); return(ctx?.IsBound ?? false ? Strings.SyncButtonText : Strings.BindButtonText); }); bindContextCommand.SetDynamicIcon(x => { var ctx = x as ProjectViewModel; Debug.Assert(ctx != null, "Unexpected fixed context for bind context command"); return(new IconViewModel(ctx?.IsBound ?? false ? KnownMonikers.Sync : KnownMonikers.Link)); }); var openProjectDashboardCommand = new ContextualCommandViewModel(projectVM, this.Host.ActiveSection.BrowseToProjectDashboardCommand) { DisplayText = Strings.ViewInSonarQubeMenuItemDisplayText, Tooltip = Strings.ViewInSonarQubeMenuItemTooltip, Icon = new IconViewModel(KnownMonikers.OpenWebSite) }; projectVM.Commands.Add(bindContextCommand); projectVM.Commands.Add(openProjectDashboardCommand); } }