Adding button plugin to table component (#10918)

* Added delete plugin to table component
This commit is contained in:
Leila Lali
2020-07-22 16:26:16 -07:00
committed by GitHub
parent 587abd43c2
commit 4a88adffd2
13 changed files with 155 additions and 21 deletions

View File

@@ -5,12 +5,14 @@
import * as nls from 'vscode-nls';
import * as azdata from 'azdata';
import * as vscode from 'vscode';
import { JupyterServerInstallation, PythonPkgDetails } from '../../jupyter/jupyterServerInstallation';
import * as utils from '../../common/utils';
import { ManagePackagesDialog } from './managePackagesDialog';
import CodeAdapter from '../../prompts/adapter';
import { IQuestion, confirm } from '../../prompts/question';
import { IconPathHelper } from '../../common/iconHelper';
const localize = nls.loadMessageBundle();
@@ -27,6 +29,7 @@ export class InstalledPackagesTab {
private uninstallPackageButton: azdata.ButtonComponent;
private view: azdata.ModelView | undefined;
private formBuilder: azdata.FormBuilder;
private disposables: vscode.Disposable[] = [];
constructor(private dialog: ManagePackagesDialog, private jupyterInstallation: JupyterServerInstallation) {
this.prompter = new CodeAdapter();
@@ -35,6 +38,13 @@ export class InstalledPackagesTab {
this.installedPkgTab.registerContent(async view => {
this.view = view;
// Dispose the resources
this.disposables.push(view.onClosed(() => {
this.disposables.forEach(d => {
try { d.dispose(); } catch { }
});
}));
let dropdownValues = this.dialog.model.getPackageTypes().map(x => {
return {
name: x.providerId,
@@ -67,20 +77,39 @@ export class InstalledPackagesTab {
this.installedPackagesTable = view.modelBuilder.table()
.withProperties({
columns: [
localize('managePackages.pkgNameColumn', "Name"),
localize('managePackages.newPkgVersionColumn', "Version")
{
value: localize('managePackages.pkgNameColumn', "Name"),
type: azdata.ColumnType.text
},
{
value: localize('managePackages.newPkgVersionColumn', "Version"),
type: azdata.ColumnType.text
},
{
value: localize('managePackages.deleteColumn', "Delete"),
type: azdata.ColumnType.button,
options: {
icon: IconPathHelper.delete
}
}
],
data: [[]],
height: '600px',
width: '400px'
}).component();
this.disposables.push(this.installedPackagesTable.onCellAction(async (rowState) => {
let buttonState = <azdata.ICellActionEventArgs>rowState;
if (buttonState) {
await this.doUninstallPackage([rowState.row]);
}
}));
this.uninstallPackageButton = view.modelBuilder.button()
.withProperties({
label: localize('managePackages.uninstallButtonText', "Uninstall selected packages"),
width: '200px'
}).component();
this.uninstallPackageButton.onDidClick(() => this.doUninstallPackage());
this.uninstallPackageButton.onDidClick(() => this.doUninstallPackage(this.installedPackagesTable.selectedRows));
this.formBuilder = view.modelBuilder.formContainer()
.withFormItems([{
@@ -214,8 +243,7 @@ export class InstalledPackagesTab {
}
}
private async doUninstallPackage(): Promise<void> {
let rowNums = this.installedPackagesTable.selectedRows;
private async doUninstallPackage(rowNums: number[]): Promise<void> {
if (!rowNums || rowNums.length === 0) {
return;
}

View File

@@ -5,6 +5,7 @@
import * as nls from 'vscode-nls';
import * as azdata from 'azdata';
import * as vscode from 'vscode';
import { JupyterServerInstallation } from '../../jupyter/jupyterServerInstallation';
import { InstalledPackagesTab } from './installedPackagesTab';
@@ -19,7 +20,7 @@ export class ManagePackagesDialog {
private addNewPkgTab: AddNewPackageTab;
constructor(
private _managePackageDialogModel: ManagePackagesDialogModel) {
private _managePackageDialogModel: ManagePackagesDialogModel, private _extensionContext: vscode.ExtensionContext) {
}
/**
@@ -58,6 +59,10 @@ export class ManagePackagesDialog {
return this._managePackageDialogModel;
}
public get extensionContext(): vscode.ExtensionContext {
return this._extensionContext;
}
/**
* Changes the current provider id
* @param providerId Provider Id