diff --git a/src/sql/workbench/browser/modelComponents/button.component.ts b/src/sql/workbench/browser/modelComponents/button.component.ts index 83e8369a1e..ec937ec62b 100644 --- a/src/sql/workbench/browser/modelComponents/button.component.ts +++ b/src/sql/workbench/browser/modelComponents/button.component.ts @@ -22,6 +22,7 @@ import { Color } from 'vs/base/common/color'; import { IComponentDescriptor, IComponent, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; import { convertSize } from 'sql/base/browser/dom'; import { createIconCssClass } from 'sql/workbench/browser/modelComponents/iconUtils'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-button', @@ -54,9 +55,10 @@ export default class ButtonComponent extends ComponentWithIconBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService, - @Inject(forwardRef(() => ElementRef)) el: ElementRef + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/card.component.ts b/src/sql/workbench/browser/modelComponents/card.component.ts index ff62c0e11b..b24fdf45bc 100644 --- a/src/sql/workbench/browser/modelComponents/card.component.ts +++ b/src/sql/workbench/browser/modelComponents/card.component.ts @@ -19,6 +19,7 @@ import { KeyCode } from 'vs/base/common/keyCodes'; import * as DOM from 'vs/base/browser/dom'; import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; import { IColorTheme } from 'vs/platform/theme/common/themeService'; +import { ILogService } from 'vs/platform/log/common/log'; export interface ActionDescriptor { label: string; @@ -66,9 +67,10 @@ export default class CardComponent extends ComponentWithIconBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, - @Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService + @Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/checkbox.component.ts b/src/sql/workbench/browser/modelComponents/checkbox.component.ts index 898280e332..16131a2e73 100644 --- a/src/sql/workbench/browser/modelComponents/checkbox.component.ts +++ b/src/sql/workbench/browser/modelComponents/checkbox.component.ts @@ -17,6 +17,7 @@ import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/work import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; import { isNumber } from 'vs/base/common/types'; import { convertSize } from 'sql/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-checkbox', @@ -33,8 +34,9 @@ export default class CheckBoxComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService, + @Inject(ILogService) logService: ILogService, @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/componentBase.ts b/src/sql/workbench/browser/modelComponents/componentBase.ts index e940c8b526..9a7f454a3f 100644 --- a/src/sql/workbench/browser/modelComponents/componentBase.ts +++ b/src/sql/workbench/browser/modelComponents/componentBase.ts @@ -20,6 +20,7 @@ import { EventType, addDisposableListener } from 'vs/base/browser/dom'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { IComponentDescriptor, IComponent, IModelStore, IComponentEventArgs, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; import { convertSize } from 'sql/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; export type IUserFriendlyIcon = string | URI | { light: string | URI; dark: string | URI }; @@ -35,7 +36,8 @@ export abstract class ComponentBase; constructor( _changeRef: ChangeDetectorRef, - _el: ElementRef + _el: ElementRef, + logService: ILogService ) { - super(_changeRef, _el); + super(_changeRef, _el, logService); this.items = []; - this._validations.push(() => this.items.every(item => { - return this.modelStore.getComponent(item.descriptor.id)?.valid || false; - })); + this._validations.push(() => { + this.logService.debug(`Running container validation on component ${this.descriptor.id} to check validity of all child items`); + return this.items.every(item => { + const valid = this.modelStore.getComponent(item.descriptor.id)?.valid; + this.logService.debug(`Child item ${item.descriptor.id} validity is ${valid}`); + return valid || false; + }); + }); } /// IComponent container-related implementation public addToContainer(componentDescriptor: IComponentDescriptor, config: any, index?: number): void { + this.logService.debug(`Adding component ${componentDescriptor.id} to container ${this.descriptor.id}`); if (!componentDescriptor) { return; } @@ -304,11 +313,17 @@ export abstract class ContainerBase component.registerEventHandler(event => { - if (event.eventType === ComponentEventType.validityChanged) { - this.validate(); - } - }), true); + + this.logService.debug(`Queueing up action to register validation event handler on component ${componentDescriptor.id} in container ${this.descriptor.id}`); + this.modelStore.eventuallyRunOnComponent(componentDescriptor.id, component => { + this.logService.debug(`Registering validation event handler on component ${componentDescriptor.id} in container ${this.descriptor.id}`); + component.registerEventHandler(async event => { + if (event.eventType === ComponentEventType.validityChanged) { + this.logService.debug(`Running validation on container ${this.descriptor.id} because validity of child component ${componentDescriptor.id} changed`); + this.validate(); + } + }); + }, true); this._changeRef.detectChanges(); this.onItemsUpdated(); return; diff --git a/src/sql/workbench/browser/modelComponents/componentWithIconBase.ts b/src/sql/workbench/browser/modelComponents/componentWithIconBase.ts index 1f381119f6..cc2c6d0ee0 100644 --- a/src/sql/workbench/browser/modelComponents/componentWithIconBase.ts +++ b/src/sql/workbench/browser/modelComponents/componentWithIconBase.ts @@ -11,6 +11,7 @@ import { removeCSSRulesContainingSelector } from 'vs/base/browser/dom'; import { URI } from 'vs/base/common/uri'; import { IComponentDescriptor } from 'sql/platform/dashboard/browser/interfaces'; import { convertSize } from 'sql/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; export class ItemDescriptor { constructor(public descriptor: IComponentDescriptor, public config: T) { } @@ -22,8 +23,9 @@ export abstract class ComponentWithIconBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/diffeditor.component.ts b/src/sql/workbench/browser/modelComponents/diffeditor.component.ts index a278622cdb..878cf54483 100644 --- a/src/sql/workbench/browser/modelComponents/diffeditor.component.ts +++ b/src/sql/workbench/browser/modelComponents/diffeditor.component.ts @@ -27,6 +27,7 @@ import { SimpleProgressIndicator } from 'sql/workbench/services/progress/browser import { IEditorProgressService } from 'vs/platform/progress/common/progress'; import { IComponent, IComponentDescriptor, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; import { convertSizeToNumber } from 'sql/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ template: ` @@ -56,9 +57,10 @@ export default class DiffEditorComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, - @Inject(forwardRef(() => Renderer2)) private renderer: Renderer2 + @Inject(forwardRef(() => Renderer2)) private renderer: Renderer2, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); this._overflowY = ''; // default } diff --git a/src/sql/workbench/browser/modelComponents/dom.component.ts b/src/sql/workbench/browser/modelComponents/dom.component.ts index 2a303a2379..f9658f70d8 100644 --- a/src/sql/workbench/browser/modelComponents/dom.component.ts +++ b/src/sql/workbench/browser/modelComponents/dom.component.ts @@ -15,6 +15,7 @@ import * as DOM from 'vs/base/browser/dom'; import { ComponentBase } from 'sql/workbench/browser/modelComponents/componentBase'; import { IComponent, IComponentDescriptor, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ template: '', @@ -29,9 +30,10 @@ export default class DomComponent extends ComponentBase im constructor( @Inject(forwardRef(() => ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/dropdown.component.ts b/src/sql/workbench/browser/modelComponents/dropdown.component.ts index f4abb9b60a..74256c9e2c 100644 --- a/src/sql/workbench/browser/modelComponents/dropdown.component.ts +++ b/src/sql/workbench/browser/modelComponents/dropdown.component.ts @@ -21,6 +21,7 @@ import { IContextViewService } from 'vs/platform/contextview/browser/contextView import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; import { localize } from 'vs/nls'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-dropdown', @@ -52,9 +53,10 @@ export default class DropDownComponent extends ComponentBase ElementRef)) el: ElementRef, - @Inject(IConfigurationService) private readonly configurationService: IConfigurationService + @Inject(IConfigurationService) private readonly configurationService: IConfigurationService, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); if (this.configurationService) { this._isInAccessibilityMode = this.configurationService.getValue('editor.accessibilitySupport') === 'on'; diff --git a/src/sql/workbench/browser/modelComponents/editor.component.ts b/src/sql/workbench/browser/modelComponents/editor.component.ts index 9401ec2110..521198afd7 100644 --- a/src/sql/workbench/browser/modelComponents/editor.component.ts +++ b/src/sql/workbench/browser/modelComponents/editor.component.ts @@ -50,9 +50,10 @@ export default class EditorComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(IInstantiationService) private _instantiationService: IInstantiationService, - @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService) { + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/flexContainer.component.ts b/src/sql/workbench/browser/modelComponents/flexContainer.component.ts index 0ea67f3027..1c89c79e95 100644 --- a/src/sql/workbench/browser/modelComponents/flexContainer.component.ts +++ b/src/sql/workbench/browser/modelComponents/flexContainer.component.ts @@ -14,6 +14,7 @@ import { FlexLayout, FlexItemLayout } from 'azdata'; import { ContainerBase } from 'sql/workbench/browser/modelComponents/componentBase'; import { IComponentDescriptor, IComponent, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; import { convertSize } from 'sql/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; export class FlexItem { constructor(public descriptor: IComponentDescriptor, public config: FlexItemLayout) { } @@ -45,9 +46,10 @@ export default class FlexContainer extends ContainerBase impleme constructor( @Inject(forwardRef(() => ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); this._flexFlow = ''; // default this._justifyContent = ''; // default } diff --git a/src/sql/workbench/browser/modelComponents/formContainer.component.ts b/src/sql/workbench/browser/modelComponents/formContainer.component.ts index ec0fd43f95..a97d72170f 100644 --- a/src/sql/workbench/browser/modelComponents/formContainer.component.ts +++ b/src/sql/workbench/browser/modelComponents/formContainer.component.ts @@ -14,6 +14,7 @@ import { FormLayout, FormItemLayout } from 'azdata'; import { ContainerBase } from 'sql/workbench/browser/modelComponents/componentBase'; import { IComponentDescriptor, IComponent, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; import { convertSize } from 'sql/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; export interface TitledFormItemLayout { title: string; @@ -95,8 +96,9 @@ export default class FormContainer extends ContainerBase impleme constructor( @Inject(forwardRef(() => ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService) { + super(changeRef, el, logService); } ngOnDestroy(): void { diff --git a/src/sql/workbench/browser/modelComponents/groupContainer.component.ts b/src/sql/workbench/browser/modelComponents/groupContainer.component.ts index c5b1705486..21b93a4dee 100644 --- a/src/sql/workbench/browser/modelComponents/groupContainer.component.ts +++ b/src/sql/workbench/browser/modelComponents/groupContainer.component.ts @@ -17,6 +17,7 @@ import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; import * as DOM from 'vs/base/browser/dom'; import { IComponent, IComponentDescriptor, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-groupContainer', @@ -44,8 +45,9 @@ export default class GroupContainer extends ContainerBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService) { + super(changeRef, el, logService); this.collapsed = false; } diff --git a/src/sql/workbench/browser/modelComponents/hyperlink.component.ts b/src/sql/workbench/browser/modelComponents/hyperlink.component.ts index e90718357d..fe68ca4b41 100644 --- a/src/sql/workbench/browser/modelComponents/hyperlink.component.ts +++ b/src/sql/workbench/browser/modelComponents/hyperlink.component.ts @@ -16,6 +16,7 @@ import { registerThemingParticipant, IColorTheme, ICssStyleCollector } from 'vs/ import { textLinkForeground, textLinkActiveForeground } from 'vs/platform/theme/common/colorRegistry'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import * as DOM from 'vs/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-hyperlink', @@ -28,9 +29,10 @@ export default class HyperlinkComponent extends TitledComponent ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, - @Inject(IOpenerService) private openerService: IOpenerService + @Inject(IOpenerService) private openerService: IOpenerService, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/image.component.ts b/src/sql/workbench/browser/modelComponents/image.component.ts index 0ab59818e6..7e3c482584 100644 --- a/src/sql/workbench/browser/modelComponents/image.component.ts +++ b/src/sql/workbench/browser/modelComponents/image.component.ts @@ -13,6 +13,7 @@ import * as azdata from 'azdata'; import { ITitledComponent } from 'sql/workbench/browser/modelComponents/interfaces'; import { ComponentWithIconBase } from 'sql/workbench/browser/modelComponents/componentWithIconBase'; import { IComponent, IComponentDescriptor, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-image', @@ -26,8 +27,9 @@ export default class ImageComponent extends ComponentWithIconBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService) { + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/inputbox.component.ts b/src/sql/workbench/browser/modelComponents/inputbox.component.ts index ab2eacdc0d..55ad7ab9a9 100644 --- a/src/sql/workbench/browser/modelComponents/inputbox.component.ts +++ b/src/sql/workbench/browser/modelComponents/inputbox.component.ts @@ -26,6 +26,7 @@ import { assign } from 'vs/base/common/objects'; import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; import { isNumber } from 'vs/base/common/types'; import { convertSize, convertSizeToNumber } from 'sql/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-inputBox', @@ -46,9 +47,10 @@ export default class InputBoxComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService, @Inject(IContextViewService) private contextViewService: IContextViewService, - @Inject(forwardRef(() => ElementRef)) el: ElementRef + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/listView.component.ts b/src/sql/workbench/browser/modelComponents/listView.component.ts index a822bd55b9..12f68899b2 100644 --- a/src/sql/workbench/browser/modelComponents/listView.component.ts +++ b/src/sql/workbench/browser/modelComponents/listView.component.ts @@ -17,6 +17,7 @@ import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/work import { IListRenderer, IListVirtualDelegate } from 'vs/base/browser/ui/list/list'; import { attachListStyler } from 'vs/platform/theme/common/styler'; import { ScrollbarVisibility } from 'vs/base/common/scrollable'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ templateUrl: decodeURI(require.toUrl('./listView.component.html')) @@ -35,8 +36,9 @@ export default class ListViewComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService, @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/listbox.component.ts b/src/sql/workbench/browser/modelComponents/listbox.component.ts index fe1ebc1094..1e23bb6b51 100644 --- a/src/sql/workbench/browser/modelComponents/listbox.component.ts +++ b/src/sql/workbench/browser/modelComponents/listbox.component.ts @@ -19,6 +19,7 @@ import { IContextViewService } from 'vs/platform/contextview/browser/contextView import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { KeyCode } from 'vs/base/common/keyCodes'; import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-listBox', @@ -38,8 +39,9 @@ export default class ListBoxComponent extends ComponentBase ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/loadingComponent.component.ts b/src/sql/workbench/browser/modelComponents/loadingComponent.component.ts index e4173e75c5..0cb15ab635 100644 --- a/src/sql/workbench/browser/modelComponents/loadingComponent.component.ts +++ b/src/sql/workbench/browser/modelComponents/loadingComponent.component.ts @@ -14,6 +14,7 @@ import { ComponentBase } from 'sql/workbench/browser/modelComponents/componentBa import { localize } from 'vs/nls'; import { IComponent, IComponentDescriptor, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; import { status } from 'vs/base/browser/ui/aria/aria'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-loadingComponent', @@ -34,8 +35,9 @@ export default class LoadingComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService) { + super(changeRef, el, logService); this._validations.push(() => { if (!this._component) { return true; diff --git a/src/sql/workbench/browser/modelComponents/propertiesContainer.component.ts b/src/sql/workbench/browser/modelComponents/propertiesContainer.component.ts index 1986e6c262..af586e6d0d 100644 --- a/src/sql/workbench/browser/modelComponents/propertiesContainer.component.ts +++ b/src/sql/workbench/browser/modelComponents/propertiesContainer.component.ts @@ -15,6 +15,7 @@ import { IComponent, IComponentDescriptor, IModelStore } from 'sql/platform/dash import { PropertiesContainer, PropertyItem } from 'sql/base/browser/ui/propertiesContainer/propertiesContainer.component'; import { registerThemingParticipant, IColorTheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService'; import { PROPERTIES_CONTAINER_PROPERTY_NAME, PROPERTIES_CONTAINER_PROPERTY_VALUE } from 'vs/workbench/common/theme'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: `modelview-properties-container`, @@ -30,8 +31,9 @@ export default class PropertiesContainerComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/radioButton.component.ts b/src/sql/workbench/browser/modelComponents/radioButton.component.ts index 7e66f32392..179c1e4d7e 100644 --- a/src/sql/workbench/browser/modelComponents/radioButton.component.ts +++ b/src/sql/workbench/browser/modelComponents/radioButton.component.ts @@ -14,6 +14,7 @@ import * as azdata from 'azdata'; import { ComponentBase } from 'sql/workbench/browser/modelComponents/componentBase'; import { RadioButton } from 'sql/base/browser/ui/radioButton/radioButton'; import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: 'modelview-radioButton', @@ -31,8 +32,9 @@ export default class RadioButtonComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService) { + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/radioCardGroup.component.ts b/src/sql/workbench/browser/modelComponents/radioCardGroup.component.ts index 3fea5553bd..4b82603dfd 100644 --- a/src/sql/workbench/browser/modelComponents/radioCardGroup.component.ts +++ b/src/sql/workbench/browser/modelComponents/radioCardGroup.component.ts @@ -15,6 +15,7 @@ import 'vs/css!./media/verticalCard'; import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; import { deepClone } from 'vs/base/common/objects'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ templateUrl: decodeURI(require.toUrl('./radioCardGroup.component.html')) @@ -30,8 +31,9 @@ export default class RadioCardGroup extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/separator.component.ts b/src/sql/workbench/browser/modelComponents/separator.component.ts index ff8022915e..065b73a302 100644 --- a/src/sql/workbench/browser/modelComponents/separator.component.ts +++ b/src/sql/workbench/browser/modelComponents/separator.component.ts @@ -13,6 +13,7 @@ import * as azdata from 'azdata'; import { ComponentBase } from 'sql/workbench/browser/modelComponents/componentBase'; import { IComponent, IComponentDescriptor, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; import { Separator } from 'sql/base/browser/ui/separator/separator'; +import { ILogService } from 'vs/platform/log/common/log'; @Component({ selector: `modelview-separator`, @@ -29,8 +30,9 @@ export default class SeparatorComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/splitviewContainer.component.ts b/src/sql/workbench/browser/modelComponents/splitviewContainer.component.ts index e73932eb56..99c36826d6 100644 --- a/src/sql/workbench/browser/modelComponents/splitviewContainer.component.ts +++ b/src/sql/workbench/browser/modelComponents/splitviewContainer.component.ts @@ -65,9 +65,9 @@ export default class SplitViewContainerImpl extends ContainerBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, - @Inject(ILogService) private readonly logService: ILogService + @Inject(ILogService) readonly logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); this._flexFlow = ''; // default this._justifyContent = ''; // default this._orientation = Orientation.VERTICAL; // default diff --git a/src/sql/workbench/browser/modelComponents/tabbedPanel.component.ts b/src/sql/workbench/browser/modelComponents/tabbedPanel.component.ts index d947a8450f..049f04500c 100644 --- a/src/sql/workbench/browser/modelComponents/tabbedPanel.component.ts +++ b/src/sql/workbench/browser/modelComponents/tabbedPanel.component.ts @@ -52,9 +52,9 @@ export default class TabbedPanelComponent extends ContainerBase imple @Inject(forwardRef(() => ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, @Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService, - @Inject(ILogService) private logService: ILogService + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/table.component.ts b/src/sql/workbench/browser/modelComponents/table.component.ts index 0d63bff3ed..4075408bf5 100644 --- a/src/sql/workbench/browser/modelComponents/table.component.ts +++ b/src/sql/workbench/browser/modelComponents/table.component.ts @@ -30,6 +30,7 @@ import { convertSizeToNumber } from 'sql/base/browser/dom'; import { ButtonColumn, ButtonClickEventArgs } from 'sql/base/browser/ui/table/plugins/buttonColumn.plugin'; import { IUserFriendlyIcon, createIconCssClass, getIconKey } from 'sql/workbench/browser/modelComponents/iconUtils'; import { HeaderFilter } from 'sql/base/browser/ui/table/plugins/headerFilter.plugin'; +import { ILogService } from 'vs/platform/log/common/log'; export enum ColumnSizingMode { ForceFit = 0, // all columns will be sized to fit in viewable space, no horiz scroll bar @@ -70,8 +71,9 @@ export default class TableComponent extends ComponentBase ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(IWorkbenchThemeService) private themeService: IWorkbenchThemeService, - @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService) { + super(changeRef, el, logService); } transformColumns(columns: string[] | azdata.TableColumn[]): Slick.Column[] { diff --git a/src/sql/workbench/browser/modelComponents/text.component.ts b/src/sql/workbench/browser/modelComponents/text.component.ts index 26a1c83fd7..a8438ff438 100644 --- a/src/sql/workbench/browser/modelComponents/text.component.ts +++ b/src/sql/workbench/browser/modelComponents/text.component.ts @@ -46,9 +46,9 @@ export default class TextComponent extends TitledComponent ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(forwardRef(() => ElementRef)) el: ElementRef, @Inject(IInstantiationService) private instantiationService: IInstantiationService, - @Inject(ILogService) private logService: ILogService, + @Inject(ILogService) logService: ILogService, @Inject(IThemeService) private themeService: IThemeService) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/browser/modelComponents/titledComponent.ts b/src/sql/workbench/browser/modelComponents/titledComponent.ts index e3314213b6..97fd85e9bb 100644 --- a/src/sql/workbench/browser/modelComponents/titledComponent.ts +++ b/src/sql/workbench/browser/modelComponents/titledComponent.ts @@ -9,14 +9,16 @@ import { import { ITitledComponent } from 'sql/workbench/browser/modelComponents/interfaces'; import * as azdata from 'azdata'; import { ComponentBase } from 'sql/workbench/browser/modelComponents/componentBase'; +import { ILogService } from 'vs/platform/log/common/log'; export abstract class TitledComponent extends ComponentBase implements ITitledComponent { constructor( protected _changeRef: ChangeDetectorRef, - protected _el: ElementRef) { - super(_changeRef, _el); + protected _el: ElementRef, + logService: ILogService) { + super(_changeRef, _el, logService); } public get title(): string { diff --git a/src/sql/workbench/browser/modelComponents/toolbarContainer.component.ts b/src/sql/workbench/browser/modelComponents/toolbarContainer.component.ts index 58da0f1cb3..0f710e6744 100644 --- a/src/sql/workbench/browser/modelComponents/toolbarContainer.component.ts +++ b/src/sql/workbench/browser/modelComponents/toolbarContainer.component.ts @@ -11,6 +11,7 @@ import { import { ContainerBase } from 'sql/workbench/browser/modelComponents/componentBase'; import { IComponentDescriptor, IComponent, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; +import { ILogService } from 'vs/platform/log/common/log'; export enum Orientation { Horizontal = 'horizontal', @@ -58,8 +59,9 @@ export default class ToolbarContainer extends ContainerBase i constructor( @Inject(forwardRef(() => ChangeDetectorRef)) changeRef: ChangeDetectorRef, - @Inject(forwardRef(() => ElementRef)) el: ElementRef) { - super(changeRef, el); + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService) { + super(changeRef, el, logService); this._orientation = Orientation.Horizontal; } diff --git a/src/sql/workbench/browser/modelComponents/tree.component.ts b/src/sql/workbench/browser/modelComponents/tree.component.ts index 95a6717759..4299ae7baa 100644 --- a/src/sql/workbench/browser/modelComponents/tree.component.ts +++ b/src/sql/workbench/browser/modelComponents/tree.component.ts @@ -27,6 +27,7 @@ import { values } from 'vs/base/common/collections'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IComponentDescriptor, IComponent, IModelStore } from 'sql/platform/dashboard/browser/interfaces'; import { convertSizeToNumber } from 'sql/base/browser/dom'; +import { ILogService } from 'vs/platform/log/common/log'; class Root implements ITreeComponentItem { label = { @@ -57,9 +58,10 @@ export default class TreeComponent extends ComponentBase @Inject(forwardRef(() => ChangeDetectorRef)) changeRef: ChangeDetectorRef, @Inject(IThemeService) private themeService: IThemeService, @Inject(IInstantiationService) private _instantiationService: IInstantiationService, - @Inject(forwardRef(() => ElementRef)) el: ElementRef + @Inject(forwardRef(() => ElementRef)) el: ElementRef, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/contrib/modelView/browser/webview.component.ts b/src/sql/workbench/contrib/modelView/browser/webview.component.ts index 4c6db39659..e7a25f9a50 100644 --- a/src/sql/workbench/contrib/modelView/browser/webview.component.ts +++ b/src/sql/workbench/contrib/modelView/browser/webview.component.ts @@ -20,6 +20,7 @@ import { generateUuid } from 'vs/base/common/uuid'; import { ComponentBase } from 'sql/workbench/browser/modelComponents/componentBase'; import { ComponentEventType, IModelStore, IComponentDescriptor, IComponent } from 'sql/platform/dashboard/browser/interfaces'; import { onUnexpectedError } from 'vs/base/common/errors'; +import { ILogService } from 'vs/platform/log/common/log'; function reviveWebviewOptions(options: vscode.WebviewOptions): vscode.WebviewOptions { return { @@ -57,9 +58,10 @@ export default class WebViewComponent extends ComponentBase i @Inject(forwardRef(() => ElementRef)) el: ElementRef, @Inject(IOpenerService) private readonly _openerService: IOpenerService, @Inject(IWorkspaceContextService) private readonly _contextService: IWorkspaceContextService, - @Inject(IWebviewService) private readonly webviewService: IWebviewService + @Inject(IWebviewService) private readonly webviewService: IWebviewService, + @Inject(ILogService) logService: ILogService ) { - super(changeRef, el); + super(changeRef, el, logService); } ngAfterViewInit(): void { diff --git a/src/sql/workbench/test/electron-browser/modalComponents/componentBase.test.ts b/src/sql/workbench/test/electron-browser/modalComponents/componentBase.test.ts index 74725d0f19..65af6317dc 100644 --- a/src/sql/workbench/test/electron-browser/modalComponents/componentBase.test.ts +++ b/src/sql/workbench/test/electron-browser/modalComponents/componentBase.test.ts @@ -9,13 +9,14 @@ import { ComponentBase, ContainerBase, ItemDescriptor } from 'sql/workbench/brow import { ModelStore } from 'sql/workbench/browser/modelComponents/modelStore'; import { ChangeDetectorRef } from '@angular/core'; import { IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; +import { NullLogService } from 'vs/platform/log/common/log'; class TestComponent extends ComponentBase { public descriptor: IComponentDescriptor; constructor(public modelStore: IModelStore, id: string) { - super(undefined, undefined); + super(undefined, undefined, new NullLogService()); this.descriptor = modelStore.createComponentDescriptor('TestComponent', id); this.baseInit(); } @@ -32,7 +33,7 @@ class TestContainer extends ContainerBase { public descriptor: IComponentDescriptor; constructor(public modelStore: IModelStore, id: string) { - super(undefined, undefined); + super(undefined, undefined, new NullLogService()); this.descriptor = modelStore.createComponentDescriptor('TestContainer', id); this._changeRef = { detectChanges: () => undefined diff --git a/src/sql/workbench/test/electron-browser/modalComponents/table.component.test.ts b/src/sql/workbench/test/electron-browser/modalComponents/table.component.test.ts index 23d34ae987..fd6f047dc6 100644 --- a/src/sql/workbench/test/electron-browser/modalComponents/table.component.test.ts +++ b/src/sql/workbench/test/electron-browser/modalComponents/table.component.test.ts @@ -6,6 +6,7 @@ import * as assert from 'assert'; import TableComponent from 'sql/workbench/browser/modelComponents/table.component'; import { CssIconCellValue } from 'sql/base/browser/ui/table/formatters'; +import { NullLogService } from 'vs/platform/log/common/log'; suite('TableComponent Tests', () => { @@ -19,7 +20,7 @@ suite('TableComponent Tests', () => { ['4', '5', '6'] ]; let columns = ['c1', 'c2', 'c3']; - const tableComponent = new TableComponent(undefined, undefined, undefined); + const tableComponent = new TableComponent(undefined, undefined, undefined, new NullLogService()); let actual: { [key: string]: string | CssIconCellValue }[] = tableComponent.transformData(data, columns); let expected: { [key: string]: string }[] = [ @@ -39,7 +40,7 @@ suite('TableComponent Tests', () => { test('Table transformData should return empty array given undefined rows', () => { let data = undefined; - const tableComponent = new TableComponent(undefined, undefined, undefined); + const tableComponent = new TableComponent(undefined, undefined, undefined, new NullLogService()); let columns = ['c1', 'c2', 'c3']; let actual: { [key: string]: string | CssIconCellValue }[] = tableComponent.transformData(data, columns); let expected: { [key: string]: string }[] = []; @@ -52,7 +53,7 @@ suite('TableComponent Tests', () => { ['4', '5', '6'] ]; let columns; - const tableComponent = new TableComponent(undefined, undefined, undefined); + const tableComponent = new TableComponent(undefined, undefined, undefined, new NullLogService()); let actual: { [key: string]: string | CssIconCellValue }[] = tableComponent.transformData(data, columns); let expected: { [key: string]: string }[] = []; assert.deepEqual(actual, expected); @@ -63,7 +64,7 @@ suite('TableComponent Tests', () => { ['1', '2'], ['4', '5'] ]; - const tableComponent = new TableComponent(undefined, undefined, undefined); + const tableComponent = new TableComponent(undefined, undefined, undefined, new NullLogService()); let columns = ['c1', 'c2', 'c3']; let actual: { [key: string]: string | CssIconCellValue }[] = tableComponent.transformData(data, columns); let expected: { [key: string]: string }[] = [