mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Refresh master with initial release/0.24 snapshot (#332)
* Initial port of release/0.24 source code * Fix additional headers * Fix a typo in launch.json
This commit is contained in:
@@ -6,17 +6,17 @@
|
||||
'use strict';
|
||||
|
||||
import * as data from 'data';
|
||||
import * as DialogHelper from 'sql/base/browser/ui/modal/dialogHelper';
|
||||
import { IConnectionManagementService, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
|
||||
import { FileBrowserTree } from 'sql/parts/fileBrowser/common/fileBrowserTree';
|
||||
import { FileNode } from 'sql/parts/fileBrowser/common/fileNode';
|
||||
import { FileBrowserDialog } from 'sql/parts/fileBrowser/fileBrowserDialog';
|
||||
import { IFileBrowserService } from 'sql/parts/fileBrowser/common/interfaces';
|
||||
import * as Constants from 'sql/common/constants';
|
||||
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import Severity from 'vs/base/common/severity';
|
||||
import { localize } from 'vs/nls';
|
||||
import { createDecorator, IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import * as strings from 'vs/base/common/strings';
|
||||
|
||||
export class FileBrowserService implements IFileBrowserService {
|
||||
public _serviceBrand: any;
|
||||
@@ -25,10 +25,10 @@ export class FileBrowserService implements IFileBrowserService {
|
||||
private _onExpandFolder = new Emitter<FileNode>();
|
||||
private _onPathValidate = new Emitter<data.FileBrowserValidatedParams>();
|
||||
private _pathToFileNodeMap: { [path: string]: FileNode } = {};
|
||||
private _expandResolveMap: { [key: string]: any } = {};
|
||||
private _expandResolveMap: { [key: string]: any } = {};
|
||||
static fileNodeId: number = 0;
|
||||
|
||||
constructor(@IConnectionManagementService private _connectionService: IConnectionManagementService,
|
||||
constructor( @IConnectionManagementService private _connectionService: IConnectionManagementService,
|
||||
@IInstantiationService private _instantiationService: IInstantiationService,
|
||||
@IErrorMessageService private _errorMessageService: IErrorMessageService) {
|
||||
}
|
||||
@@ -52,7 +52,7 @@ export class FileBrowserService implements IFileBrowserService {
|
||||
public openFileBrowser(ownerUri: string, expandPath: string, fileFilters: string[], changeFilter: boolean): Thenable<boolean> {
|
||||
return new Promise<boolean>((resolve, reject) => {
|
||||
let provider = this.getProvider(ownerUri);
|
||||
if (provider) {
|
||||
if (provider) {
|
||||
provider.openFileBrowser(ownerUri, expandPath, fileFilters, changeFilter).then(result => {
|
||||
resolve(result);
|
||||
}, error => {
|
||||
@@ -71,11 +71,11 @@ export class FileBrowserService implements IFileBrowserService {
|
||||
&& fileBrowserOpenedParams.fileTree.selectedNode
|
||||
) {
|
||||
var fileTree = this.convertFileTree(null, fileBrowserOpenedParams.fileTree.rootNode, fileBrowserOpenedParams.fileTree.selectedNode.fullPath, fileBrowserOpenedParams.ownerUri);
|
||||
this._onAddFileTree.fire({rootNode: fileTree.rootNode, selectedNode: fileTree.selectedNode, expandedNodes: fileTree.expandedNodes});
|
||||
this._onAddFileTree.fire({ rootNode: fileTree.rootNode, selectedNode: fileTree.selectedNode, expandedNodes: fileTree.expandedNodes });
|
||||
} else {
|
||||
let genericErrorMessage = localize('fileBrowserErrorMessage', 'An error occured while loading the file browser.');
|
||||
let errorDialogTitle = localize('fileBrowserErrorDialogTitle', 'File Browser Error');
|
||||
let errorMessage = DialogHelper.isNullOrWhiteSpace(fileBrowserOpenedParams.message) ? genericErrorMessage : fileBrowserOpenedParams.message;
|
||||
let errorDialogTitle = localize('fileBrowserErrorDialogTitle', 'File browser error');
|
||||
let errorMessage = strings.isFalsyOrWhitespace(fileBrowserOpenedParams.message) ? genericErrorMessage : fileBrowserOpenedParams.message;
|
||||
this._errorMessageService.showDialog(Severity.Error, errorDialogTitle, errorMessage);
|
||||
}
|
||||
}
|
||||
@@ -85,7 +85,7 @@ export class FileBrowserService implements IFileBrowserService {
|
||||
let self = this;
|
||||
return new Promise<FileNode[]>((resolve, reject) => {
|
||||
let provider = this.getProvider(fileNode.ownerUri);
|
||||
if (provider) {
|
||||
if (provider) {
|
||||
provider.expandFolderNode(fileNode.ownerUri, fileNode.fullPath).then(result => {
|
||||
var mapKey = self.generateResolveMapKey(fileNode.ownerUri, fileNode.fullPath);
|
||||
self._expandResolveMap[mapKey] = resolve;
|
||||
@@ -102,12 +102,11 @@ export class FileBrowserService implements IFileBrowserService {
|
||||
var mapKey = this.generateResolveMapKey(fileBrowserExpandedParams.ownerUri, fileBrowserExpandedParams.expandPath);
|
||||
var expandResolve = this._expandResolveMap[mapKey];
|
||||
if (expandResolve) {
|
||||
if (fileBrowserExpandedParams.succeeded === true)
|
||||
{
|
||||
if (fileBrowserExpandedParams.succeeded === true) {
|
||||
// get the expanded folder node
|
||||
var expandedNode = this._pathToFileNodeMap[fileBrowserExpandedParams.expandPath];
|
||||
if (expandedNode) {
|
||||
if (fileBrowserExpandedParams.children && fileBrowserExpandedParams.children.length > 0) {
|
||||
if (fileBrowserExpandedParams.children && fileBrowserExpandedParams.children.length > 0) {
|
||||
expandedNode.children = this.convertChildren(expandedNode, fileBrowserExpandedParams.children, fileBrowserExpandedParams.ownerUri);
|
||||
}
|
||||
expandResolve(expandedNode.children ? expandedNode.children : []);
|
||||
@@ -124,7 +123,7 @@ export class FileBrowserService implements IFileBrowserService {
|
||||
public validateFilePaths(ownerUri: string, serviceType: string, selectedFiles: string[]): Thenable<boolean> {
|
||||
return new Promise<boolean>((resolve, reject) => {
|
||||
let provider = this.getProvider(ownerUri);
|
||||
if (provider) {
|
||||
if (provider) {
|
||||
provider.validateFilePaths(ownerUri, serviceType, selectedFiles).then(result => {
|
||||
resolve(result);
|
||||
}, error => {
|
||||
|
||||
@@ -7,11 +7,12 @@
|
||||
|
||||
import 'vs/css!sql/media/icons/common-icons';
|
||||
import 'vs/css!./media/fileBrowserDialog';
|
||||
import { Button } from 'sql/base/browser/ui/button/button';
|
||||
import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox';
|
||||
import { SelectBox } from 'sql/base/browser/ui/selectBox/selectBox';
|
||||
import * as DialogHelper from 'sql/base/browser/ui/modal/dialogHelper';
|
||||
import { Modal } from 'sql/base/browser/ui/modal/modal';
|
||||
import { attachModalDialogStyler } from 'sql/common/theme/styler';
|
||||
import { attachModalDialogStyler, attachButtonStyler } from 'sql/common/theme/styler';
|
||||
import * as TelemetryKeys from 'sql/common/telemetryKeys';
|
||||
import { FileNode } from 'sql/parts/fileBrowser/common/fileNode';
|
||||
import { FileBrowserTreeView } from 'sql/parts/fileBrowser/fileBrowserTreeView';
|
||||
@@ -19,19 +20,20 @@ import { FileBrowserViewModel } from 'sql/parts/fileBrowser/fileBrowserViewModel
|
||||
|
||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { Builder } from 'vs/base/browser/builder';
|
||||
import { Button } from 'vs/base/browser/ui/button/button';
|
||||
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||
import { MessageType } from 'vs/base/browser/ui/inputbox/inputBox';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { KeyCode } from 'vs/base/common/keyCodes';
|
||||
import { localize } from 'vs/nls';
|
||||
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { attachInputBoxStyler, attachButtonStyler, attachSelectBoxStyler } from 'vs/platform/theme/common/styler';
|
||||
import { IThemeService } from 'vs/platform/theme/common/themeService';
|
||||
import { attachInputBoxStyler, attachSelectBoxStyler } from 'vs/platform/theme/common/styler';
|
||||
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
|
||||
import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme';
|
||||
import { IPartService } from 'vs/workbench/services/part/common/partService';
|
||||
import * as DOM from 'vs/base/browser/dom';
|
||||
import * as strings from 'vs/base/common/strings';
|
||||
|
||||
export class FileBrowserDialog extends Modal {
|
||||
private _viewModel: FileBrowserViewModel;
|
||||
@@ -77,9 +79,19 @@ export class FileBrowserDialog extends Modal {
|
||||
|
||||
if (this.backButton) {
|
||||
|
||||
this._register(DOM.addDisposableListener(this.backButton.getElement(), DOM.EventType.CLICK, () => {
|
||||
this.backButton.addListener(DOM.EventType.CLICK, () => {
|
||||
this.close();
|
||||
}));
|
||||
});
|
||||
|
||||
this.backButton.addListener(DOM.EventType.KEY_DOWN, (e: KeyboardEvent) => {
|
||||
var event = new StandardKeyboardEvent(e);
|
||||
if (event.keyCode === KeyCode.Enter) {
|
||||
this.close();
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}
|
||||
});
|
||||
|
||||
this._register(attachButtonStyler(this.backButton, this._themeService, { buttonBackground: SIDE_BAR_BACKGROUND, buttonHoverBackground: SIDE_BAR_BACKGROUND }));
|
||||
}
|
||||
|
||||
@@ -141,7 +153,7 @@ export class FileBrowserDialog extends Modal {
|
||||
}
|
||||
|
||||
private enableOkButton() {
|
||||
if (DialogHelper.isNullOrWhiteSpace(this._selectedFilePath) || this._isFolderSelected === true) {
|
||||
if (strings.isFalsyOrWhitespace(this._selectedFilePath) || this._isFolderSelected === true) {
|
||||
this._okButton.enabled = false;
|
||||
} else {
|
||||
this._okButton.enabled = true;
|
||||
@@ -175,7 +187,7 @@ export class FileBrowserDialog extends Modal {
|
||||
}
|
||||
|
||||
private onFilePathBlur(param) {
|
||||
if (!DialogHelper.isNullOrWhiteSpace(param.value)) {
|
||||
if (!strings.isFalsyOrWhitespace(param.value)) {
|
||||
this._viewModel.validateFilePaths([param.value]);
|
||||
}
|
||||
}
|
||||
@@ -187,7 +199,7 @@ export class FileBrowserDialog extends Modal {
|
||||
|
||||
private handleOnValidate(succeeded: boolean, errorMessage: string) {
|
||||
if (succeeded === false) {
|
||||
if (DialogHelper.isNullOrWhiteSpace(errorMessage)) {
|
||||
if (strings.isFalsyOrWhitespace(errorMessage)) {
|
||||
errorMessage = 'The provided path is invalid.';
|
||||
}
|
||||
this._filePathInputBox.showMessage({ type: MessageType.ERROR, content: errorMessage });
|
||||
|
||||
@@ -4,10 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
import * as Utils from 'sql/parts/connection/common/utils';
|
||||
import { FileNode } from 'sql/parts/fileBrowser/common/fileNode';
|
||||
import { $ } from 'vs/base/browser/dom';
|
||||
import dom = require('vs/base/browser/dom');
|
||||
import { ITree, IRenderer } from 'vs/base/parts/tree/browser/tree';
|
||||
import { FileKind } from 'vs/platform/files/common/files';
|
||||
import URI from 'vs/base/common/uri';
|
||||
@@ -55,7 +52,7 @@ export class FileBrowserRenderer implements IRenderer {
|
||||
*/
|
||||
public renderElement(tree: ITree, element: FileNode, templateId: string, templateData: IFileTemplateData): void {
|
||||
if (element) {
|
||||
templateData.label.element.style.display = 'block';
|
||||
templateData.label.element.style.display = 'flex';
|
||||
const extraClasses = ['explorer-item'];
|
||||
|
||||
var fileuri = URI.file(element.fullPath);
|
||||
|
||||
Reference in New Issue
Block a user