/// <summary> /// Initializes a new instance of <seealso cref="ErrorFrameTooltipViewModel"/> class. /// </summary> /// <param name="errorItem">The error item the tooltip shows.</param> public ErrorFrameTooltipViewModel(ErrorGroupItem errorItem) { OnCloseButtonCommand = new ProtectedCommand(ShowTooltipUtils.HideTooltip); OnBackToErrorReportingCommand = new ProtectedCommand( () => ToolWindowCommandUtils.ShowToolWindow <ErrorReportingDetailToolWindow>()); Error = errorItem; }
/// <summary> /// Initializes a new instance of the <see cref="ErrorReportingToolWindowCommand"/> class. /// Adds our command handlers for menu (commands must exist in the command table file) /// </summary> /// <param name="package">Owner package, not null.</param> private ErrorReportingToolWindowCommand(Package package) { if (package == null) { throw new ArgumentNullException("package"); } _package = package; IMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as IMenuCommandService; if (commandService != null) { var menuCommandID = new CommandID(CommandSet, CommandId); var menuItem = new OleMenuCommand( (sender, e) => { ToolWindowCommandUtils.ShowToolWindow <ErrorReportingToolWindow>(); EventsReporterWrapper.ReportEvent(ErrorsViewerOpenEvent.Create()); }, menuCommandID); menuItem.BeforeQueryStatus += ToolWindowCommandUtils.EnableMenuItemOnValidProjectId; commandService.AddCommand(menuItem); } }
/// <summary> /// Detail view is a tree view. /// Each item at tree path is an <seealso cref="ObjectNodeTree"/> object. /// The tree view displays the <paramref name="node"/> as name : value pair. /// User can click at the "value" to show matching log entries. /// /// This method composes a filter on node value, adds it to existing AdvancedFilterText. /// The filter has format of root_node_name.node_name...node_name = "node.value". /// Example: jsonPayload.serviceContext.service="frontend" /// </summary> private async Task FilterOnTreeNodeValueAsync(ObjectNodeTree node) { IsAutoReloadChecked = false; // Firstly compose a new filter line. var newFilter = new StringBuilder(); newFilter.Append($"{node.FilterLabel}=\"{node.FilterValue}\""); while ((node = node.Parent)?.Parent != null) { if (!string.IsNullOrWhiteSpace(node.FilterLabel)) { newFilter.Insert(0, $"{node.FilterLabel}."); } } // Append the new filter line to existing filter text. // Or to the composed filter if it is currently showing simple filters. if (ShowAdvancedFilter) { newFilter.Insert(0, Environment.NewLine); newFilter.Insert(0, AdvancedFilterText); } else { newFilter.Insert(0, ComposeSimpleFilters()); } var newWindow = await ToolWindowCommandUtils.AddToolWindowAsync <LogsViewerToolWindow>(); newWindow.ViewModel.FilterLog(newFilter.ToString()); }
public void TestShowToolWindowNoPackage() { GoogleCloudExtensionPackage.Instance = null; var result = ToolWindowCommandUtils.ShowToolWindow <ToolWindowPane>(); Assert.IsNull(result); }
private void NavigateToDetailWindow(ErrorGroupItem groupItem) { var window = ToolWindowCommandUtils.ShowToolWindow <ErrorReportingDetailToolWindow>(); window.ViewModel.UpdateView(groupItem, _selectedTimeRange); EventsReporterWrapper.ReportEvent(ErrorsViewerNavigateToDetailWindowEvent.Create()); }
public async Task TestShowToolWindowNoWindowFrame() { PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(true, 0)) .Returns(new ToolWindowPane { Frame = null }); await ToolWindowCommandUtils.ShowToolWindowAsync <ToolWindowPane>(); }
public void TestShowToolWindowNoWindowFrame() { PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(true, 0)) .Returns(() => new ToolWindowPane { Frame = null }); ToolWindowCommandUtils.ShowToolWindow <ToolWindowPane>(); }
private async Task NavigateToDetailWindowAsync(ErrorGroupItem groupItem) { ErrorReportingDetailToolWindow window = await ToolWindowCommandUtils.ShowToolWindowAsync <ErrorReportingDetailToolWindow>(); window.ViewModel.UpdateView(groupItem, _selectedTimeRange); EventsReporterWrapper.ReportEvent(ErrorsViewerNavigateToDetailWindowEvent.Create()); }
/// <summary> /// Initializes a new instance of <seealso cref="ErrorReportingDetailViewModel"/> class. /// </summary> public ErrorReportingDetailViewModel() { OnGotoSourceCommand = new ProtectedCommand <StackFrame>( (frame) => ShowTooltipUtils.ErrorFrameToSourceLine(GroupItem, frame)); OnBackToOverViewCommand = new ProtectedCommand(() => ToolWindowCommandUtils.ShowToolWindow <ErrorReportingToolWindow>()); OnAutoReloadCommand = new ProtectedCommand(() => ErrorHandlerUtils.HandleAsyncExceptions(UpdateGroupAndEventAsync)); _datasource = new Lazy <StackdriverErrorReportingDataSource>(CreateDataSource); CredentialsStore.Default.Reset += (sender, e) => OnCurrentProjectChanged(); CredentialsStore.Default.CurrentProjectIdChanged += (sender, e) => OnCurrentProjectChanged(); }
public void TestEnableMenuItemOnValidProjectIdInvalidProjectId() { CredentialStoreMock.SetupGet(cs => cs.CurrentProjectId).Returns(() => null); var menuCommand = new OleMenuCommand((sender, args) => { }, (sender, args) => { }, (sender, args) => { }, new CommandID(Guid.Empty, 0)); ToolWindowCommandUtils.EnableMenuItemOnValidProjectId(menuCommand, null); Assert.IsFalse(menuCommand.Enabled); }
public void TestShowToolWindowShowError() { var mockedFrame = Mock.Of <IVsWindowFrame>(f => f.Show() == VSConstants.E_UNEXPECTED); PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(true, 0)) .Returns(() => new ToolWindowPane { Frame = mockedFrame }); ToolWindowCommandUtils.ShowToolWindow <ToolWindowPane>(); }
public async Task TestAddToolWindow() { var expectedResult = new ToolWindowPane { Frame = _defaultFrame }; PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(false, 0)).Returns(() => null); PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(true, 0)).Returns(expectedResult); ToolWindowPane actualResult = await ToolWindowCommandUtils.AddToolWindowAsync <ToolWindowPane>(); Assert.AreEqual(expectedResult, actualResult); }
public void TestShowToolWindowSuccess() { var mockedFrame = Mock.Of <IVsWindowFrame>(f => f.Show() == VSConstants.S_OK); var expectedResult = new ToolWindowPane { Frame = mockedFrame }; PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(true, 0)).Returns(() => expectedResult); var actualResult = ToolWindowCommandUtils.ShowToolWindow <ToolWindowPane>(); Assert.AreEqual(expectedResult, actualResult); }
private void BackToLogsViewer() { var window = ToolWindowCommandUtils.ShowToolWindow <LogsViewerToolWindow>(Log.ParentToolWindowId); if (Log.Entry == null || window == null) { Debug.WriteLine("Entry or window is null, this is likely a code bug"); return; } if (FilterLogsOfSourceLine) { window.FilterOnSourceLocation(Log); } }
public void TestShowToolWindowSpecificSuccess() { var expectedResult = new ToolWindowPane { Frame = _defaultFrame }; const int toolWindowId = 2; PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(true, toolWindowId)) .Returns(() => expectedResult); var actualResult = ToolWindowCommandUtils.ShowToolWindow <ToolWindowPane>(toolWindowId); Assert.AreEqual(expectedResult, actualResult); }
/// <summary> /// Initializes a new instance of the <see cref="LogsViewerToolWindowCommand"/> class. /// Adds our command handlers for menu (commands must exist in the command table file) /// </summary> /// <param name="package">Owner package, not null.</param> private LogsViewerToolWindowCommand(IGoogleCloudExtensionPackage package) { if (package == null) { throw new ArgumentNullException(nameof(package)); } _package = package; var commandService = ServiceProvider.GetService(typeof(IMenuCommandService)) as IMenuCommandService; if (commandService != null) { var menuItem = new OleMenuCommand( (sender, e) => ToolWindowCommandUtils.AddToolWindow <LogsViewerToolWindow>(), MenuCommandID); menuItem.BeforeQueryStatus += ToolWindowCommandUtils.EnableMenuItemOnValidProjectId; commandService.AddCommand(menuItem); } }
/// <summary> /// Initializes a new instance of the <see cref="LogsViewerToolWindowCommand"/> class. /// Adds our command handlers for menu (commands must exist in the command table file) /// </summary> /// <param name="package">Owner package, not null.</param> private LogsViewerToolWindowCommand(Package package) { if (package == null) { throw new ArgumentNullException("package"); } _package = package; OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; if (commandService != null) { var menuCommandID = new CommandID(CommandSet, CommandId); var menuItem = new OleMenuCommand( (sender, e) => ToolWindowCommandUtils.ShowToolWindow <LogsViewerToolWindow>(), menuCommandID); menuItem.BeforeQueryStatus += ToolWindowCommandUtils.EnableMenuItemOnValidProjectId; commandService.AddCommand(menuItem); } }
public void TestAddToolWindowAdditional() { var existingWindow = new ToolWindowPane { Frame = _defaultFrame }; var expectedResult = new ToolWindowPane { Frame = _defaultFrame }; PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(false, 0)) .Returns(() => existingWindow); PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(false, 1)) .Returns(() => null); PackageMock.Setup(p => p.FindToolWindow <ToolWindowPane>(true, 1)) .Returns(() => expectedResult); var actualResult = ToolWindowCommandUtils.AddToolWindow <ToolWindowPane>(); Assert.AreEqual(expectedResult, actualResult); }
/// <summary> /// Initializes the singleton instance of the command. /// </summary> /// <param name="package">Owner package, not null.</param> /// <param name="token">The token to cancel adding the command.</param> public static async Task InitializeAsync(IGoogleCloudExtensionPackage package, CancellationToken token) { package.ThrowIfNull(nameof(package)); IMenuCommandService commandService = await package.GetServiceAsync <IMenuCommandService, IMenuCommandService>(); await package.JoinableTaskFactory.SwitchToMainThreadAsync(token); var menuCommandID = new CommandID(CommandSet, CommandId); var menuItem = new OleMenuCommand( async(sender, e) => { await ToolWindowCommandUtils.ShowToolWindowAsync <ErrorReportingToolWindow>(); EventsReporterWrapper.ReportEvent(ErrorsViewerOpenEvent.Create()); }, menuCommandID); menuItem.BeforeQueryStatus += ToolWindowCommandUtils.EnableMenuItemOnValidProjectId; commandService.AddCommand(menuItem); }
private void OnBrowseStackdriverLogCommand() { var window = ToolWindowCommandUtils.ShowToolWindow <LogsViewerToolWindow>(); window?.FilterGAEServiceLog(_service.Id, _version.Id); }
private async Task OnBrowseStackdriverLogCommandAsync() { LogsViewerToolWindow window = await ToolWindowCommandUtils.AddToolWindowAsync <LogsViewerToolWindow>(); window?.FilterVMInstanceLog(Instance.Id.ToString()); }
private void NavigateToDetailWindow(ErrorGroupItem groupItem) { var window = ToolWindowCommandUtils.ShowToolWindow <ErrorReportingDetailToolWindow>(); window.ViewModel.UpdateView(groupItem, _selectedTimeRange); }
private async Task OnBrowseStackdriverLogCommandAsync() { LogsViewerToolWindow window = await ToolWindowCommandUtils.AddToolWindowAsync <LogsViewerToolWindow>(); window?.FilterGAEServiceLog(Service.Id); }
private void OnBrowseStackdriverLogCommand() { var window = ToolWindowCommandUtils.AddToolWindow <LogsViewerToolWindow>(); window?.FilterVMInstanceLog(Instance.Id.ToString()); }
public void TestEnableMenuItemOnValidProjectIdInvalidSender() { ToolWindowCommandUtils.EnableMenuItemOnValidProjectId(Mock.Of <object>(), null); }
public void TestEnableMenuItemOnValidProjectIdNullSender() { ToolWindowCommandUtils.EnableMenuItemOnValidProjectId(null, null); }