/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import 'vs/css!./media/dialogModal'; import { Component, ViewChild, Inject, forwardRef, ElementRef, AfterViewInit } from '@angular/core'; import { ModelViewContent } from 'sql/workbench/electron-browser/modelComponents/modelViewContent.component'; import { IBootstrapParams } from 'sql/platform/bootstrap/node/bootstrapService'; import { DialogPane } from 'sql/platform/dialog/dialogPane'; import { ComponentEventType } from 'sql/workbench/electron-browser/modelComponents/interfaces'; import { Event, Emitter } from 'vs/base/common/event'; export interface LayoutRequestParams { modelViewId?: string; alwaysRefresh?: boolean; } export interface DialogComponentParams extends IBootstrapParams { modelViewId: string; validityChangedCallback: (valid: boolean) => void; onLayoutRequested: Event; dialogPane: DialogPane; } @Component({ selector: 'dialog-modelview-container', providers: [], template: `
Step {{_dialogPane.pageNumber}}

{{_dialogPane.title}}

{{_dialogPane.description}}
` }) export class DialogContainer implements AfterViewInit { private _onResize = new Emitter(); public readonly onResize: Event = this._onResize.event; private _dialogPane: DialogPane; public modelViewId: string; @ViewChild(ModelViewContent) private _modelViewContent: ModelViewContent; constructor( @Inject(forwardRef(() => ElementRef)) private _el: ElementRef, @Inject(IBootstrapParams) private _params: DialogComponentParams) { this.modelViewId = this._params.modelViewId; this._params.onLayoutRequested(layoutParams => { if (layoutParams && (layoutParams.alwaysRefresh || layoutParams.modelViewId === this.modelViewId)) { this.layout(); } }); this._dialogPane = this._params.dialogPane; } ngAfterViewInit(): void { this._modelViewContent.onEvent(event => { if (event.isRootComponent && event.eventType === ComponentEventType.validityChanged) { this._params.validityChangedCallback(event.args); } }); let element = this._el.nativeElement; element.style.height = '100%'; element.style.width = '100%'; } public layout(): void { this._modelViewContent.layout(); } }