convert to 2-stage button

Finally realized what a 2-stage button is...

Clears search fields first if there are any values entered, otherwise
clears file pattern fields
This commit is contained in:
Ed Jeffreys 2020-06-12 21:17:39 +01:00
parent a655038695
commit 234bbef7b4
2 changed files with 8 additions and 32 deletions

View file

@ -446,7 +446,7 @@ export class ClearSearchResultsAction extends Action {
update(): void {
const searchView = getSearchView(this.viewsService);
this.enabled = !!searchView && (!searchView.allSearchFieldsClear() || searchView.hasSearchResults());
this.enabled = !!searchView && (!searchView.allSearchFieldsClear() || searchView.hasSearchResults() || !searchView.allFilePatternFieldsClear());
}
run(): Promise<void> {
@ -458,32 +458,6 @@ export class ClearSearchResultsAction extends Action {
}
}
export class ClearSearchPatternInputsAction extends Action {
static readonly ID: string = 'search.action.clearSearchPatternInputs';
static LABEL: string = nls.localize('ClearSearchPatternInputsAction.label', "Clear Search Pattern Inputs");
constructor(id: string, label: string,
@IViewsService private readonly viewsService: IViewsService
) {
super(id, label, 'search-action ' + searchClearIcon.classNames);
this.update();
}
update(): void {
const searchView = getSearchView(this.viewsService);
this.enabled = !!searchView && (!searchView.allSearchPatternFieldsClear());
}
run(): Promise<void> {
const searchView = getSearchView(this.viewsService);
if (searchView) {
searchView.clearSearchPatternInputs();
}
return Promise.resolve();
}
}
export class CancelSearchAction extends Action {
static readonly ID: string = 'search.action.cancelSearch';

View file

@ -43,7 +43,7 @@ import { OpenFileFolderAction, OpenFolderAction } from 'vs/workbench/browser/act
import { ResourceLabels } from 'vs/workbench/browser/labels';
import { IEditorPane } from 'vs/workbench/common/editor';
import { ExcludePatternInputWidget, PatternInputWidget } from 'vs/workbench/contrib/search/browser/patternInputWidget';
import { CancelSearchAction, ClearSearchResultsAction, ClearSearchPatternInputsAction, CollapseDeepestExpandedLevelAction, RefreshAction, IFindInFilesArgs, appendKeyBindingLabel, ExpandAllAction, ToggleCollapseAndExpandAction } from 'vs/workbench/contrib/search/browser/searchActions';
import { CancelSearchAction, ClearSearchResultsAction, CollapseDeepestExpandedLevelAction, RefreshAction, IFindInFilesArgs, appendKeyBindingLabel, ExpandAllAction, ToggleCollapseAndExpandAction } from 'vs/workbench/contrib/search/browser/searchActions';
import { FileMatchRenderer, FolderMatchRenderer, MatchRenderer, SearchAccessibilityProvider, SearchDelegate, SearchDND } from 'vs/workbench/contrib/search/browser/searchResultsView';
import { ISearchWidgetOptions, SearchWidget } from 'vs/workbench/contrib/search/browser/searchWidget';
import * as Constants from 'vs/workbench/contrib/search/common/constants';
@ -113,7 +113,7 @@ export class SearchView extends ViewPane {
private state: SearchUIState = SearchUIState.Idle;
private actions: Array<CollapseDeepestExpandedLevelAction | ClearSearchResultsAction | ClearSearchPatternInputsAction | OpenSearchEditorAction> = [];
private actions: Array<CollapseDeepestExpandedLevelAction | ClearSearchResultsAction | OpenSearchEditorAction> = [];
private toggleCollapseAction: ToggleCollapseAndExpandAction;
private cancelAction: CancelSearchAction;
private refreshAction: RefreshAction;
@ -236,7 +236,6 @@ export class SearchView extends ViewPane {
this.actions = [
this._register(this.instantiationService.createInstance(ClearSearchResultsAction, ClearSearchResultsAction.ID, ClearSearchResultsAction.LABEL)),
this._register(this.instantiationService.createInstance(ClearSearchPatternInputsAction, ClearSearchPatternInputsAction.ID, ClearSearchPatternInputsAction.LABEL)),
this._register(this.instantiationService.createInstance(OpenSearchEditorAction, OpenSearchEditorAction.ID, OpenSearchEditorAction.LABEL))
];
@ -1018,7 +1017,7 @@ export class SearchView extends ViewPane {
this.searchWidget.searchInput.getValue() === '';
}
allSearchPatternFieldsClear(): boolean {
allFilePatternFieldsClear(): boolean {
return this.searchExcludePattern.getValue() === '' &&
this.searchIncludePattern.getValue() === '';
}
@ -1038,6 +1037,9 @@ export class SearchView extends ViewPane {
this.showSearchWithoutFolderMessage();
}
if (clearInput) {
if (this.allSearchFieldsClear()) {
this.clearFilePatternFields();
}
this.searchWidget.clear();
}
this.viewModel.cancelSearch();
@ -1047,7 +1049,7 @@ export class SearchView extends ViewPane {
aria.status(nls.localize('ariaSearchResultsClearStatus', "The search results have been cleared"));
}
clearSearchPatternInputs(): void {
clearFilePatternFields(): void {
this.searchExcludePattern.clear();
this.searchIncludePattern.clear();
}