Adds functionality to copy table column headers (#21564)

* Adds functionality to copy table column headers

* Minor clean up

* Code review changes

* Removes unneeded comma
This commit is contained in:
Lewis Sanchez
2023-01-11 09:17:05 -08:00
committed by GitHub
parent a400ff2f43
commit 16740ba61f
2 changed files with 24 additions and 2 deletions

View File

@@ -23,6 +23,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import { IStorageService } from 'vs/platform/storage/common/storage';
import { getChartMaxRowCount, notifyMaxRowCountExceeded } from 'sql/workbench/contrib/charts/browser/utils';
import { IEncodingSupport } from 'vs/workbench/services/textfile/common/textfiles';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
export interface IGridActionContext {
gridDataProvider: IGridDataProvider;
@@ -122,6 +123,26 @@ export class CopyResultAction extends Action {
}
}
export class CopyHeadersAction extends Action {
private static ID = 'grid.copyHeaders';
private static LABEL = localize('copyHeaders', 'Copy Headers');
constructor(
@IClipboardService private clipboardService: IClipboardService
) {
super(CopyHeadersAction.ID, CopyHeadersAction.LABEL);
}
public override async run(context: IGridActionContext): Promise<void> {
// Starting at index 1 to ignore the first column of row numbers
const columnHeaders = context.table.columns.slice(1, context.table.columns.length)
.map(c => c.name ? c.name : '')
.join(',');
await this.clipboardService.writeText(columnHeaders);
}
}
export class SelectAllGridAction extends Action {
public static ID = 'grid.selectAll';
public static LABEL = localize('selectAll', "Select All");

View File

@@ -13,7 +13,7 @@ import { VirtualizedCollection } from 'sql/base/browser/ui/table/asyncDataView';
import { Table } from 'sql/base/browser/ui/table/table';
import { MouseWheelSupport } from 'sql/base/browser/ui/table/plugins/mousewheelTableScroll.plugin';
import { AutoColumnSize } from 'sql/base/browser/ui/table/plugins/autoSizeColumns.plugin';
import { IGridActionContext, SaveResultAction, CopyResultAction, SelectAllGridAction, MaximizeTableAction, RestoreTableAction, ChartDataAction, VisualizerDataAction } from 'sql/workbench/contrib/query/browser/actions';
import { IGridActionContext, SaveResultAction, CopyResultAction, SelectAllGridAction, MaximizeTableAction, RestoreTableAction, ChartDataAction, VisualizerDataAction, CopyHeadersAction } from 'sql/workbench/contrib/query/browser/actions';
import { CellSelectionModel } from 'sql/base/browser/ui/table/plugins/cellSelectionModel.plugin';
import { RowNumberColumn } from 'sql/base/browser/ui/table/plugins/rowNumberColumn.plugin';
import { escape } from 'sql/base/common/strings';
@@ -854,7 +854,8 @@ export abstract class GridTableBase<T> extends Disposable implements IView {
}
actions.push(
this.instantiationService.createInstance(CopyResultAction, CopyResultAction.COPY_ID, CopyResultAction.COPY_LABEL, false),
this.instantiationService.createInstance(CopyResultAction, CopyResultAction.COPYWITHHEADERS_ID, CopyResultAction.COPYWITHHEADERS_LABEL, true)
this.instantiationService.createInstance(CopyResultAction, CopyResultAction.COPYWITHHEADERS_ID, CopyResultAction.COPYWITHHEADERS_LABEL, true),
this.instantiationService.createInstance(CopyHeadersAction)
);
if (this.state.canBeMaximized) {