提交 a6e1b2a5 编写于 作者: R Rob Lourens

Collapse 'replace' when showing search viewlet via cmd+shift+f.

Fix #9513
上级 7e1e0171
......@@ -229,7 +229,7 @@ export class ToggleViewletAction extends Action {
id: string,
name: string,
viewletId: string,
@IViewletService private viewletService: IViewletService,
@IViewletService protected viewletService: IViewletService,
@IWorkbenchEditorService private editorService: IWorkbenchEditorService
) {
super(id, name);
......
......@@ -150,6 +150,22 @@ export class OpenSearchViewletAction extends ToggleViewletAction {
super(id, label, Constants.VIEWLET_ID, viewletService, editorService);
}
public run(): TPromise<any> {
const activeViewlet = this.viewletService.getActiveViewlet();
const searchViewletWasOpen = activeViewlet && activeViewlet.getId() === Constants.VIEWLET_ID;
return super.run().then(() => {
if (!searchViewletWasOpen) {
// Get the search viewlet and ensure that 'replace' is collapsed
const searchViewlet = this.viewletService.getActiveViewlet();
if (searchViewlet && searchViewlet.getId() === Constants.VIEWLET_ID) {
const searchAndReplaceWidget = (<SearchViewlet>searchViewlet).searchAndReplaceWidget;
searchAndReplaceWidget.toggleReplace(false);
}
}
});
}
}
export class FocusActiveEditorAction extends Action {
......@@ -168,33 +184,40 @@ export class FocusActiveEditorAction extends Action {
}
export class FindInFilesAction extends Action {
export abstract class FindOrReplaceInFilesAction extends Action {
constructor(id: string, label: string, @IViewletService private viewletService: IViewletService) {
constructor(id: string, label: string, private viewletService: IViewletService,
private expandSearchReplaceWidget: boolean, private selectWidgetText, private focusReplace) {
super(id, label);
}
public run(): TPromise<any> {
return this.viewletService.openViewlet(Constants.VIEWLET_ID, true);
const viewlet = this.viewletService.getActiveViewlet();
const searchViewletWasOpen = viewlet && viewlet.getId() === Constants.VIEWLET_ID;
return this.viewletService.openViewlet(Constants.VIEWLET_ID, true).then((viewlet) => {
if (!searchViewletWasOpen || this.expandSearchReplaceWidget) {
const searchAndReplaceWidget = (<SearchViewlet>viewlet).searchAndReplaceWidget;
searchAndReplaceWidget.toggleReplace(this.expandSearchReplaceWidget);
searchAndReplaceWidget.focus(this.selectWidgetText, this.focusReplace);
}
});
}
}
export class FindInFilesAction extends FindOrReplaceInFilesAction {
constructor(id: string, label: string, @IViewletService viewletService: IViewletService) {
super(id, label, viewletService, /*expandSearchReplaceWidget=*/false, /*selectWidgetText=*/true, /*focusReplace=*/false);
}
}
export class ReplaceInFilesAction extends Action {
export class ReplaceInFilesAction extends FindOrReplaceInFilesAction {
public static ID = 'workbench.action.replaceInFiles';
public static LABEL = nls.localize('replaceInFiles', "Replace in Files");
constructor(id: string, label: string, @IViewletService private viewletService: IViewletService) {
super(id, label);
}
public run(): TPromise<any> {
return this.viewletService.openViewlet(Constants.VIEWLET_ID, true).then((viewlet) => {
let searchAndReplaceWidget = (<SearchViewlet>viewlet).searchAndReplaceWidget;
searchAndReplaceWidget.toggleReplace(true);
searchAndReplaceWidget.focus(false, true);
});
constructor(id: string, label: string, @IViewletService viewletService: IViewletService) {
super(id, label, viewletService, /*expandSearchReplaceWidget=*/true, /*selectWidgetText=*/false, /*focusReplace=*/true);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册