/// <summary> /// Initializes an instance of <seealso cref="MenuItemViewModel"/> class. /// </summary> /// <param name="parent">The parent menu item view model.</param> public MenuItemViewModel(MenuItemViewModel parent) { IsVisible = true; MenuItemParent = parent; MenuCommand = new ProtectedCommand(() => CommandBubblingHandler(this)); MenuItems = new ObservableCollection <MenuItemViewModel>(); OnSubmenuOpenCommand = new ProtectedAsyncCommand(AddItemsAsync); }
public CsrAddRepoWindowViewModel(CsrAddRepoWindow owner, IList <Repo> repos, Project project) { _owner = owner.ThrowIfNull(nameof(owner)); _repos = repos.ThrowIfNull(nameof(repos)); _project = project.ThrowIfNull(nameof(project)); OkCommand = new ProtectedAsyncCommand(CreateRepoAsync, canExecuteCommand: false); CsrLinkCommand = new ProtectedCommand(() => Process.Start(CsrConsoleLink)); }
private ListProcessStepViewModel( ListProcessStepContent content, AttachDebuggerContext context) : base(context) { Content = content; RefreshCommand = new ProtectedAsyncCommand(GetAllProcessesListAsync); }
public void TestLatestExecution_TracksActionTask() { var tcs = new TaskCompletionSource <object>(); var objectUnderTest = new ProtectedAsyncCommand(() => tcs.Task); objectUnderTest.Execute(null); Assert.AreEqual(tcs.Task, objectUnderTest.LatestExecution.ActualTask); }
public void TestExecute_UpdatesLatestExecution() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.CompletedTask); AsyncProperty originalExecution = objectUnderTest.LatestExecution; objectUnderTest.Execute(null); Assert.AreNotEqual(originalExecution, objectUnderTest.LatestExecution); }
private FlexStepViewModel(FlexStepContent content, IGaeDataSource dataSource = null, IApiManager apiManager = null) : base(apiManager) { _content = content; _dataSource = dataSource; EnableApiCommand = new ProtectedAsyncCommand(OnEnableApiCommandAsync); SetAppRegionCommand = new ProtectedAsyncCommand(OnSetAppRegionCommandAsync); }
public AttachDebuggerWindowViewModel(Instance gceInstance, AttachDebuggerWindow dialogWindow) { OKCommand = new ProtectedAsyncCommand(() => ExceuteAsync(OnOKCommand), canExecuteCommand: false); CancelCommand = new ProtectedCommand(OnCancelCommand, canExecuteCommand: false); var context = new AttachDebuggerContext(gceInstance, dialogWindow); var firstStep = SetCredentialStepViewModel.CreateStep(context); ErrorHandlerUtils.HandleExceptionsAsync(() => ExceuteAsync(() => GotoStep(firstStep))); }
public void TestLatestExecution_NotifiesOnChange() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.CompletedTask); var changedProperties = new List <string>(); objectUnderTest.PropertyChanged += (sender, args) => changedProperties.Add(args.PropertyName); objectUnderTest.Execute(null); CollectionAssert.AreEqual(new[] { nameof(objectUnderTest.LatestExecution) }, changedProperties); }
public ManageWindowsCredentialsViewModel(Instance instance, ManageWindowsCredentialsWindow owner) { _instance = instance; _owner = owner; CredentialsList = LoadCredentialsForInstance(instance); AddCredentialsCommand = new ProtectedAsyncCommand(OnAddCredentialsCommandAsync); DeleteCredentialsCommand = new ProtectedCommand(OnDeleteCredentialsCommand, canExecuteCommand: false); ShowCredentialsCommand = new ProtectedCommand(OnShowCredentialsCommand, canExecuteCommand: false); }
/// <summary> /// Initializes a new instance of <seealso cref="ErrorReportingDetailViewModel"/> class. /// </summary> public ErrorReportingDetailViewModel() { _package = GoogleCloudExtensionPackage.Instance; IsVisibleUnbound = true; OnGotoSourceCommand = new ProtectedCommand <StackFrame>(frame => ErrorFrameToSourceLine(GroupItem, frame)); OnBackToOverViewCommand = new ProtectedAsyncCommand(async() => await ShowErrorReportingToolWindow()); OnAutoReloadCommand = new ProtectedCommand(() => ErrorHandlerUtils.HandleExceptionsAsync(UpdateGroupAndEventAsync)); _datasource = new Lazy <IStackdriverErrorReportingDataSource>(CreateDataSource); CredentialsStore.Default.CurrentProjectIdChanged += OnCurrentProjectChanged; }
public void TestExecute_InvokesProvidedAction() { var tcs = new TaskCompletionSource <object>(); var actionMock = new Mock <Func <Task> >(); actionMock.Setup(f => f()).Returns(tcs.Task); var objectUnderTest = new ProtectedAsyncCommand(actionMock.Object); objectUnderTest.Execute(null); actionMock.Verify(f => f(), Times.Once); }
public CsrReposViewModel(ITeamExplorerUtils teamExplorer) { _teamExplorer = teamExplorer.ThrowIfNull(nameof(teamExplorer)); ListDoubleClickCommand = new ProtectedCommand(() => { SetRepoActive(SelectedRepository); // Note, the order is critical. // When switching to HomeSection, current "this" object is destroyed. _teamExplorer.ShowHomeSection(); }); CloneCreateRepoCommand = new ProtectedAsyncCommand(CloneCreateRepoAsync); }
/// <summary> /// Create a new instance of <seealso cref="ErrorReportingViewModel"/> class. /// </summary> public ErrorReportingViewModel() { IsVisibleUnbound = true; _package = GoogleCloudExtensionPackage.Instance; _dataSourceLazy = new Lazy <IStackdriverErrorReportingDataSource>(CreateDataSource); _groupStatsCollection = new ObservableCollection <ErrorGroupItem>(); GroupStatsView = new ListCollectionView(_groupStatsCollection); SelectedTimeRangeItem = TimeRangeItemList.Last(); OnGotoDetailCommand = new ProtectedAsyncCommand <ErrorGroupItem>(NavigateToDetailWindowAsync); OnAutoReloadCommand = new ProtectedCommand(Reload); CredentialsStore.Default.CurrentProjectIdChanged += (sender, e) => OnProjectIdChanged(); }
/// <summary> /// Initializes a new instance of the <seealso cref="LogItem"/> class. /// </summary> /// <param name="logEntry">A log entry.</param> /// <param name="timeZoneInfo">The current selected timezone.</param> /// <param name="parentToolWindowId">The id of the parent multi-instance tool window.</param> public LogItem(LogEntry logEntry, TimeZoneInfo timeZoneInfo, int parentToolWindowId) { ParentToolWindowId = parentToolWindowId; if (logEntry == null) { // Todo(jimwp): Change to NullArgumentException. Protect caller from null. return; } Entry = logEntry; TimeStamp = ConvertTimestamp(logEntry.Timestamp, timeZoneInfo); Message = ComposeMessage(); LogSeverity severity; if (string.IsNullOrWhiteSpace(Entry.Severity) || !Enum.TryParse <LogSeverity>(Entry.Severity, ignoreCase: true, result: out severity)) { severity = LogSeverity.Default; } LogLevel = severity; _treeViewObjects = new Lazy <List <ObjectNodeTree> >(() => new LogEntryNode(Entry).Children); Function = Entry.SourceLocation?.Function; SourceFilePath = Entry?.SourceLocation?.File; SourceLine = Entry.SourceLocation?.Line; if (Function != null && SourceFilePath != null && SourceLine.HasValue) { // Example: [Log4NetSample.Program, Log4NetExample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null].WriteRandomSeverityLog Match match = s_functionRegex.Match(Function); if (match.Success) { AssemblyName = match.Groups[2].Value; AssemblyVersion = match.Groups[3].Value; } SourceLinkVisible = true; OnNavigateToSourceCommand = new ProtectedAsyncCommand( () => SourceVersionUtils.NavigateToSourceLineCommandAsync(this)); SourceLinkCaption = string.Format( Resources.LogsViewerSourceLinkCaptionFormat, System.IO.Path.GetFileName(SourceFilePath), SourceLine); } }
public CsrCloneWindowViewModel(CsrCloneWindow owner, IList <Project> projects) { _owner = owner.ThrowIfNull(nameof(owner)); Projects = projects.ThrowIfNull(nameof(projects)); if (!Projects.Any()) { throw new ArgumentException($"{nameof(projects)} must not be empty"); } PickFolderCommand = new ProtectedCommand(PickFoloder); CloneRepoCommand = new ProtectedAsyncCommand(() => ExecuteAsync(CloneAsync), canExecuteCommand: false); CreateRepoCommand = new ProtectedCommand(OpenCreateRepoDialog, canExecuteCommand: false); RepositoriesAsync.PropertyChanged += RepositoriesAsyncPropertyChanged; var projectId = CredentialsStore.Default.CurrentProjectId; // If projectId is null, choose first project. Otherwise, choose the project. SelectedProject = Projects.FirstOrDefault(x => projectId == null || x.ProjectId == projectId); }
/// <summary> /// Initializes an instance of <seealso cref="LogsViewerViewModel"/> class. /// </summary> /// <param name="toolWindowIdNumber"></param> public LogsViewerViewModel(int toolWindowIdNumber) { IsVisibleUnbound = true; _package = GoogleCloudExtensionPackage.Instance; _toolWindowIdNumber = toolWindowIdNumber; RefreshCommand = new ProtectedCommand(OnRefreshCommand); LogItemCollection = new ListCollectionView(_logs); LogItemCollection.GroupDescriptions.Add(new PropertyGroupDescription(nameof(LogItem.Date))); CancelRequestCommand = new ProtectedCommand(CancelRequest); SimpleTextSearchCommand = new ProtectedCommand(() => { EventsReporterWrapper.ReportEvent(LogsViewerSimpleTextSearchEvent.Create()); AsyncAction = new AsyncProperty(ReloadAsync()); }); FilterSwitchCommand = new ProtectedCommand(SwapFilter); SubmitAdvancedFilterCommand = new ProtectedCommand(() => { EventsReporterWrapper.ReportEvent(LogsViewerAdvancedFilterEvent.Create()); AsyncAction = new AsyncProperty(ReloadAsync()); }); AdvancedFilterHelpCommand = new ProtectedCommand(ShowAdvancedFilterHelp); DateTimePickerModel = new DateTimePickerViewModel( TimeZoneInfo.Local, DateTime.UtcNow, isDescendingOrder: true); DateTimePickerModel.DateTimeFilterChange += (sender, e) => AsyncAction = new AsyncProperty(ReloadAsync()); ResourceTypeSelector = new ResourceTypeMenuViewModel(() => DataSource); ResourceTypeSelector.PropertyChanged += (sender, args) => { if (args.PropertyName == null || args.PropertyName == nameof(ResourceTypeMenuViewModel.SelectedMenuItem)) { LogIdList = null; AsyncAction = new AsyncProperty(ReloadAsync()); } }; OnDetailTreeNodeFilterCommand = new ProtectedAsyncCommand <ObjectNodeTree>(FilterOnTreeNodeValueAsync); OnAutoReloadCommand = new ProtectedCommand(AutoReload); }
/// <summary> /// Initializes a new instance of <seealso cref="LoggerTooltipViewModel"/> class. /// </summary> /// <param name="logItem">The log item the tooltip shows.</param> public LoggerTooltipViewModel(LogItem logItem) { OnCloseButtonCommand = new ProtectedCommand(ShowTooltipUtils.HideTooltip); BackToLogsViewerCommand = new ProtectedAsyncCommand(BackToLogsViewerAsync); Log = logItem; }
public ShowPasswordViewModel(ShowPasswordWindow.Options options) { _options = options; CopyCommand = new ProtectedAsyncCommand(OnCopyCommandAsync); }
public void TestConstrutor_OverridesDefaultCanExecuteCommandWithParameter() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.CompletedTask, false); Assert.IsFalse(objectUnderTest.CanExecuteCommand); }
public void TestConstrutor_InitalizesLatestExecutionWithCompletedTask() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.CompletedTask); Assert.IsTrue(objectUnderTest.LatestExecution.IsCompleted); }
public void TestExecute_DoesNotThrowWhenActionErrors() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.FromException(new Exception())); objectUnderTest.Execute(null); }
public void TestConstrutor_DefaultsCanExecuteCommandToTrue() { var objectUnderTest = new ProtectedAsyncCommand(() => Task.CompletedTask); Assert.IsTrue(objectUnderTest.CanExecuteCommand); }
private void UpdateContextMenu() { var getPublishSettingsCommand = new ProtectedCommand(OnSavePublishSettingsCommand, canExecuteCommand: Instance.IsAspnetInstance()); var openWebSite = new ProtectedCommand(OnOpenWebsite, canExecuteCommand: Instance.IsAspnetInstance() && Instance.IsRunning()); var openTerminalServerSessionCommand = new ProtectedCommand( OnOpenTerminalServerSessionCommand, canExecuteCommand: Instance.IsWindowsInstance() && Instance.IsRunning()); var startInstanceCommand = new ProtectedAsyncCommand(OnStartInstanceCommandAsync); var stopInstanceCommand = new ProtectedAsyncCommand(OnStopInstanceCommandAsync); var manageFirewallPorts = new ProtectedAsyncCommand(OnManageFirewallPortsCommandAsync); var manageWindowsCredentials = new ProtectedCommand(OnManageWindowsCredentialsCommand, canExecuteCommand: Instance.IsWindowsInstance()); _attachDebuggerCommand = new ProtectedAsyncCommand(OnAttachDebuggerAsync); var menuItems = new List <MenuItem> { new MenuItem { Header = Resources.CloudExplorerGceSavePublishSettingsMenuHeader, Command = getPublishSettingsCommand }, new MenuItem { Header = Resources.CloudExplorerGceOpenTerminalSessionMenuHeader, Command = openTerminalServerSessionCommand }, new MenuItem { Header = Resources.CloudExplorerGceOpenWebSiteMenuHeader, Command = openWebSite }, new MenuItem { Header = Resources.CloudExplorerGceManageFirewallPortsMenuHeader, Command = manageFirewallPorts }, new MenuItem { Header = Resources.CloudExplorerGceManageWindowsCredentialsMenuHeader, Command = manageWindowsCredentials }, new MenuItem { Header = Resources.CloudExplorerGceAttachDebuggerMenuHeader, Command = _attachDebuggerCommand } }; if (Instance.Id.HasValue) { menuItems.Add( new MenuItem { Header = Resources.CloudExplorerLaunchLogsViewerMenuHeader, Command = new ProtectedAsyncCommand(OnBrowseStackdriverLogCommandAsync) }); } if (Instance.IsRunning()) { menuItems.Add(new MenuItem { Header = Resources.CloudExplorerGceStopInstanceMenuHeader, Command = stopInstanceCommand }); } else { menuItems.Add(new MenuItem { Header = Resources.CloudExplorerGceStartInstanceMenuHeader, Command = startInstanceCommand }); } menuItems.Add( new MenuItem { Header = Resources.UiOpenOnCloudConsoleMenuHeader, Command = new ProtectedCommand(OnOpenOnCloudConsoleCommand) }); menuItems.Add( new MenuItem { Header = Resources.UiPropertiesMenuHeader, Command = new ProtectedAsyncCommand(OnPropertiesWindowCommandAsync) }); ContextMenu = new ContextMenu { ItemsSource = menuItems }; SyncContextMenuState(); }