mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-17 01:25:36 -05:00
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:
@@ -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");
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user