@@ -15,7 +15,7 @@ import { diffInserted, diffRemoved } from 'vs/platform/theme/common/colorRegistr
1515import { localize } from 'vs/nls' ;
1616import { DisposableStore } from 'vs/base/common/lifecycle' ;
1717import { IEditorService } from 'vs/workbench/services/editor/common/editorService' ;
18- import { BulkEditPreviewProvider , BulkFileOperations } from 'vs/workbench/contrib/bulkEdit/browser/bulkEditPreview' ;
18+ import { BulkEditPreviewProvider , BulkFileOperations , BulkTextEdit , BulkFileOperationType } from 'vs/workbench/contrib/bulkEdit/browser/bulkEditPreview' ;
1919import { ILabelService } from 'vs/platform/label/common/label' ;
2020import { ITextModelService } from 'vs/editor/common/services/resolverService' ;
2121import { URI } from 'vs/base/common/uri' ;
@@ -28,6 +28,7 @@ import { IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewl
2828import { ResourceLabels , IResourceLabelsContainer } from 'vs/workbench/browser/labels' ;
2929import { IDialogService } from 'vs/platform/dialogs/common/dialogs' ;
3030import Severity from 'vs/base/common/severity' ;
31+ import { basename } from 'vs/base/common/resources' ;
3132
3233const enum State {
3334 Data = 'data' ,
@@ -107,9 +108,9 @@ export class BulkEditPane extends ViewPane {
107108 this . _disposables . add ( this . _tree . onDidOpen ( e => {
108109 const [ first ] = e . elements ;
109110 if ( first instanceof TextEditElement ) {
110- this . _previewTextEditElement ( first ) ;
111+ this . _openElementAsEditor ( first . parent , first . edit ) ;
111112 } else if ( first instanceof FileElement ) {
112- this . _previewFileElement ( ) ;
113+ this . _openElementAsEditor ( first ) ;
113114 }
114115 } ) ) ;
115116
@@ -214,32 +215,54 @@ export class BulkEditPane extends ViewPane {
214215 this . _sessionDisposables . clear ( ) ;
215216 }
216217
217- private async _previewTextEditElement ( element : TextEditElement ) : Promise < void > {
218+ private async _openElementAsEditor ( fileElement : FileElement , textElement ?: BulkTextEdit ) : Promise < void > {
218219
219- let leftResource : URI ;
220- try {
221- ( await this . _textModelService . createModelReference ( element . parent . uri ) ) . dispose ( ) ;
222- leftResource = element . parent . uri ;
223- } catch {
224- leftResource = BulkEditPreviewProvider . emptyPreview ;
220+ if ( ! textElement ) {
221+ textElement = fileElement . edit . textEdits [ 0 ] ;
225222 }
226223
227- const previewUri = BulkEditPreviewProvider . asPreviewUri ( element . parent . uri ) ;
228-
229- this . _editorService . openEditor ( {
230- leftResource,
231- rightResource : previewUri ,
232- label : localize ( 'edt.title' , "{0} (Refactor Preview)" , this . _labelService . getUriLabel ( element . parent . uri ) ) ,
233- options : {
234- selection : element . edit . edit . range ,
235- revealInCenterIfOutsideViewport : true ,
236- preserveFocus : true
224+ let leftResource : URI | undefined ;
225+ if ( fileElement . edit . type & BulkFileOperationType . TextEdit ) {
226+ try {
227+ ( await this . _textModelService . createModelReference ( fileElement . uri ) ) . dispose ( ) ;
228+ leftResource = fileElement . uri ;
229+ } catch {
230+ leftResource = BulkEditPreviewProvider . emptyPreview ;
237231 }
238- } ) ;
239- }
232+ }
240233
241- private _previewFileElement ( ) : void {
234+ const previewUri = BulkEditPreviewProvider . asPreviewUri ( fileElement . uri ) ;
235+
236+ if ( leftResource ) {
237+ // show diff editor
238+ this . _editorService . openEditor ( {
239+ leftResource,
240+ rightResource : previewUri ,
241+ label : localize ( 'edt.title' , "{0} (refactor preview)" , basename ( fileElement . uri ) ) ,
242+ options : {
243+ selection : textElement ?. edit . range ,
244+ revealInCenterIfOutsideViewport : true ,
245+ preserveFocus : true
246+ }
247+ } ) ;
248+ } else {
249+ // show 'normal' editor
250+
251+ let typeLabel : string | undefined ;
252+ if ( fileElement . edit . type & BulkFileOperationType . Rename ) {
253+ typeLabel = localize ( 'rename' , "rename" ) ;
254+ } else if ( fileElement . edit . type & BulkFileOperationType . Create ) {
255+ typeLabel = localize ( 'create' , "create" ) ;
256+ } else if ( fileElement . edit . type & BulkFileOperationType . Delete ) {
257+ typeLabel = localize ( 'delete' , "delete" ) ;
258+ }
242259
260+ this . _editorService . openEditor ( {
261+ label : typeLabel && localize ( 'edt.title2' , "{0} ({1}, refactor preview)" , basename ( fileElement . uri ) , typeLabel ) ,
262+ resource : previewUri ,
263+ options : { preserveFocus : true }
264+ } ) ;
265+ }
243266 }
244267}
245268
0 commit comments