From 67b4230978fc5a101170a1fed2dc768f84ed8b12 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Thu, 7 Nov 2019 15:17:04 +0100 Subject: [PATCH] Group all filters under single filter action --- .../markers/browser/markersFilterOptions.ts | 14 +- .../contrib/markers/browser/markersPanel.ts | 49 ++-- .../markers/browser/markersPanelActions.ts | 214 ++++++++++-------- .../markers/browser/markersTreeViewer.ts | 6 +- .../contrib/markers/browser/media/markers.css | 10 +- .../contrib/markers/browser/messages.ts | 14 +- 6 files changed, 155 insertions(+), 152 deletions(-) diff --git a/src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts b/src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts index 0e1913da892..5d928a6cc1f 100644 --- a/src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts +++ b/src/vs/workbench/contrib/markers/browser/markersFilterOptions.ts @@ -14,18 +14,18 @@ export class FilterOptions { static readonly _filter: IFilter = matchesFuzzy2; static readonly _messageFilter: IFilter = matchesFuzzy; - readonly _showWarnings: boolean = false; - readonly _showErrors: boolean = false; - readonly _showInfos: boolean = false; + readonly showWarnings: boolean = false; + readonly showErrors: boolean = false; + readonly showInfos: boolean = false; readonly textFilter: string = ''; readonly excludesMatcher: ResourceGlobMatcher; readonly includesMatcher: ResourceGlobMatcher; - constructor(readonly filter: string = '', filesExclude: { root: URI, expression: IExpression }[] | IExpression = [], readonly showWarnings: boolean = false, readonly showErrors: boolean = false, readonly showInfos: boolean = false) { + constructor(readonly filter: string = '', filesExclude: { root: URI, expression: IExpression }[] | IExpression = [], showWarnings: boolean = false, showErrors: boolean = false, showInfos: boolean = false) { filter = filter.trim(); - this._showWarnings = showWarnings; - this._showErrors = showErrors; - this._showInfos = showInfos; + this.showWarnings = showWarnings; + this.showErrors = showErrors; + this.showInfos = showInfos; const filesExcludeByRoot = Array.isArray(filesExclude) ? filesExclude : []; const excludesExpression: IExpression = Array.isArray(filesExclude) ? getEmptyExpression() : filesExclude; diff --git a/src/vs/workbench/contrib/markers/browser/markersPanel.ts b/src/vs/workbench/contrib/markers/browser/markersPanel.ts index 0e6850b3c2a..a3598e8af8b 100644 --- a/src/vs/workbench/contrib/markers/browser/markersPanel.ts +++ b/src/vs/workbench/contrib/markers/browser/markersPanel.ts @@ -37,8 +37,7 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView import { Separator, ActionViewItem, ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { IMenuService, MenuId } from 'vs/platform/actions/common/actions'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { IKeyboardEvent, StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; -import { KeyCode } from 'vs/base/common/keyCodes'; +import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { domEvent } from 'vs/base/browser/event'; import { ResourceLabels } from 'vs/workbench/browser/labels'; import { IMarker } from 'vs/platform/markers/common/markers'; @@ -119,7 +118,14 @@ export class MarkersPanel extends Panel implements IMarkerFilterController { // actions this.collapseAllAction = this._register(new Action('vs.tree.collapse', localize('collapseAll', "Collapse All"), 'monaco-tree-action codicon-collapse-all', true, async () => this.collapseAll())); - this.filterAction = this._register(this.instantiationService.createInstance(MarkersFilterAction, { filterText: this.panelState['filter'] || '', filterHistory: this.panelState['filterHistory'] || [], useFilesExclude: !!this.panelState['useFilesExclude'] })); + this.filterAction = this._register(this.instantiationService.createInstance(MarkersFilterAction, { + filterText: this.panelState['filter'] || '', + filterHistory: this.panelState['filterHistory'] || [], + showErrors: this.panelState['showErrors'] !== false, + showWarnings: this.panelState['showWarnings'] !== false, + showInfos: this.panelState['showInfos'] !== false, + useFilesExclude: !!this.panelState['useFilesExclude'] + })); } public create(parent: HTMLElement): void { @@ -497,11 +503,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController { this.messageBoxContainer.style.display = 'block'; this.messageBoxContainer.setAttribute('tabIndex', '0'); if (total > 0) { - if (this.filter.options.filter) { - this.renderFilteredByFilterMessage(this.messageBoxContainer); - } else { - this.renderFilteredByFilesExcludeMessage(this.messageBoxContainer); - } + this.renderFilteredByFilterMessage(this.messageBoxContainer); } else { this.renderNoProblemsMessage(this.messageBoxContainer); } @@ -516,37 +518,9 @@ export class MarkersPanel extends Panel implements IMarkerFilterController { } } - private renderFilteredByFilesExcludeMessage(container: HTMLElement) { - const span1 = dom.append(container, dom.$('span')); - span1.textContent = Messages.MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER; - const link = dom.append(container, dom.$('a.messageAction')); - link.textContent = localize('disableFilesExclude', "Disable Files Exclude Filter."); - link.setAttribute('tabIndex', '0'); - dom.addStandardDisposableListener(link, dom.EventType.CLICK, () => this.filterAction.useFilesExclude = false); - dom.addStandardDisposableListener(link, dom.EventType.KEY_DOWN, (e: IKeyboardEvent) => { - if (e.equals(KeyCode.Enter) || e.equals(KeyCode.Space)) { - this.filterAction.useFilesExclude = false; - e.stopPropagation(); - } - }); - this.ariaLabelElement.setAttribute('aria-label', Messages.MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER); - } - private renderFilteredByFilterMessage(container: HTMLElement) { const span1 = dom.append(container, dom.$('span')); span1.textContent = Messages.MARKERS_PANEL_NO_PROBLEMS_FILTERS; - const link = dom.append(container, dom.$('a.messageAction')); - link.textContent = localize('clearFilter', "Clear Filter"); - link.setAttribute('tabIndex', '0'); - const span2 = dom.append(container, dom.$('span')); - span2.textContent = '.'; - dom.addStandardDisposableListener(link, dom.EventType.CLICK, () => this.filterAction.filterText = ''); - dom.addStandardDisposableListener(link, dom.EventType.KEY_DOWN, (e: IKeyboardEvent) => { - if (e.equals(KeyCode.Enter) || e.equals(KeyCode.Space)) { - this.filterAction.filterText = ''; - e.stopPropagation(); - } - }); this.ariaLabelElement.setAttribute('aria-label', Messages.MARKERS_PANEL_NO_PROBLEMS_FILTERS); } @@ -728,6 +702,9 @@ export class MarkersPanel extends Panel implements IMarkerFilterController { protected saveState(): void { this.panelState['filter'] = this.filterAction.filterText; this.panelState['filterHistory'] = this.filterAction.filterHistory; + this.panelState['showErrors'] = this.filterAction.showErrors; + this.panelState['showWarnings'] = this.filterAction.showWarnings; + this.panelState['showInfos'] = this.filterAction.showInfos; this.panelState['useFilesExclude'] = this.filterAction.useFilesExclude; this.panelState['multiline'] = this.markersViewModel.multiline; diff --git a/src/vs/workbench/contrib/markers/browser/markersPanelActions.ts b/src/vs/workbench/contrib/markers/browser/markersPanelActions.ts index a8f3a211ce7..ec0dd5602d4 100644 --- a/src/vs/workbench/contrib/markers/browser/markersPanelActions.ts +++ b/src/vs/workbench/contrib/markers/browser/markersPanelActions.ts @@ -5,7 +5,7 @@ import { Delayer } from 'vs/base/common/async'; import * as DOM from 'vs/base/browser/dom'; -import { Action, IActionChangeEvent, IAction } from 'vs/base/common/actions'; +import { Action, IActionChangeEvent, IAction, IActionRunner } from 'vs/base/common/actions'; import { HistoryInputBox } from 'vs/base/browser/ui/inputbox/inputBox'; import { KeyCode } from 'vs/base/common/keyCodes'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; @@ -15,14 +15,12 @@ import Messages from 'vs/workbench/contrib/markers/browser/messages'; import Constants from 'vs/workbench/contrib/markers/browser/constants'; import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; -import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { attachInputBoxStyler, attachStylerCallback, attachCheckboxStyler } from 'vs/platform/theme/common/styler'; -import { IMarkersWorkbenchService } from 'vs/workbench/contrib/markers/browser/markers'; +import { IThemeService, registerThemingParticipant, ICssStyleCollector, ITheme } from 'vs/platform/theme/common/themeService'; +import { attachInputBoxStyler, attachStylerCallback } from 'vs/platform/theme/common/styler'; import { toDisposable } from 'vs/base/common/lifecycle'; -import { BaseActionViewItem, ActionViewItem } from 'vs/base/browser/ui/actionbar/actionbar'; -import { badgeBackground, badgeForeground, contrastBorder } from 'vs/platform/theme/common/colorRegistry'; +import { BaseActionViewItem, ActionViewItem, ActionBar, Separator } from 'vs/base/browser/ui/actionbar/actionbar'; +import { badgeBackground, badgeForeground, contrastBorder, inputActiveOptionBorder, inputActiveOptionBackground } from 'vs/platform/theme/common/colorRegistry'; import { localize } from 'vs/nls'; -import { Checkbox } from 'vs/base/browser/ui/checkbox/checkbox'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ContextScopedHistoryInputBox } from 'vs/platform/browser/contextScopedHistoryWidget'; import { Marker } from 'vs/workbench/contrib/markers/browser/markersModel'; @@ -30,6 +28,8 @@ import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/c import { Event, Emitter } from 'vs/base/common/event'; import { FilterOptions } from 'vs/workbench/contrib/markers/browser/markersFilterOptions'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdown'; +import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; export class ToggleMarkersPanelAction extends TogglePanelAction { @@ -38,8 +38,7 @@ export class ToggleMarkersPanelAction extends TogglePanelAction { constructor(id: string, label: string, @IWorkbenchLayoutService layoutService: IWorkbenchLayoutService, - @IPanelService panelService: IPanelService, - @IMarkersWorkbenchService markersWorkbenchService: IMarkersWorkbenchService + @IPanelService panelService: IPanelService ) { super(id, label, Constants.MARKERS_PANEL_ID, panelService, layoutService); } @@ -73,6 +72,9 @@ export interface IMarkersFilterActionChangeEvent extends IActionChangeEvent { export interface IMarkersFilterActionOptions { filterText: string; filterHistory: string[]; + showErrors: boolean; + showWarnings: boolean; + showInfos: boolean; useFilesExclude: boolean; } @@ -86,6 +88,9 @@ export class MarkersFilterAction extends Action { constructor(options: IMarkersFilterActionOptions) { super(MarkersFilterAction.ID, Messages.MARKERS_PANEL_ACTION_TOOLTIP_FILTER, 'markers-panel-action-filter', true); this._filterText = options.filterText; + this._showErrors = options.showErrors; + this._showWarnings = options.showWarnings; + this._showInfos = options.showInfos; this._useFilesExclude = options.useFilesExclude; this.filterHistory = options.filterHistory; } @@ -168,6 +173,79 @@ export interface IMarkerFilterController { getFilterStats(): { total: number, filtered: number }; } +class FiltersDropdownMenuActionViewItem extends DropdownMenuActionViewItem { + + constructor( + action: IAction, private filterAction: MarkersFilterAction, actionRunner: IActionRunner, + @IContextMenuService contextMenuService: IContextMenuService + ) { + super(action, + { getActions: () => this.getActions() }, + contextMenuService, + action => undefined, + actionRunner!, + undefined, + action.class, + () => { return AnchorAlignment.RIGHT; }); + } + + render(container: HTMLElement): void { + super.render(container); + this.updateChecked(); + } + + private getActions(): IAction[] { + return [ + { + checked: this.filterAction.showErrors, + class: undefined, + enabled: true, + id: 'showErrors', + label: Messages.MARKERS_PANEL_ACTION_LABEL_SHOW_ERRORS, + run: async () => this.filterAction.showErrors = !this.filterAction.showErrors, + tooltip: '', + dispose: () => null + }, + { + checked: this.filterAction.showWarnings, + class: undefined, + enabled: true, + id: 'showWarnings', + label: Messages.MARKERS_PANEL_ACTION_LABEL_SHOW_WARNINGS, + run: async () => this.filterAction.showWarnings = !this.filterAction.showWarnings, + tooltip: '', + dispose: () => null + }, + { + checked: this.filterAction.showInfos, + class: undefined, + enabled: true, + id: 'showInfos', + label: Messages.MARKERS_PANEL_ACTION_LABEL_SHOW_INFOS, + run: async () => this.filterAction.showInfos = !this.filterAction.showInfos, + tooltip: '', + dispose: () => null + }, + new Separator(), + { + checked: this.filterAction.useFilesExclude, + class: undefined, + enabled: true, + id: 'useFilesExclude', + label: Messages.MARKERS_PANEL_ACTION_LABEL_USE_FILES_EXCLUDE, + run: async () => this.filterAction.useFilesExclude = !this.filterAction.useFilesExclude, + tooltip: '', + dispose: () => null + } + ]; + } + + updateChecked(): void { + DOM.toggleClass(this.element!, 'checked', this._action.checked); + } + +} + export class MarkersFilterActionViewItem extends BaseActionViewItem { private delayedFilterUpdate: Delayer; @@ -175,6 +253,7 @@ export class MarkersFilterActionViewItem extends BaseActionViewItem { private filterInputBox: HistoryInputBox | null = null; private filterBadge: HTMLElement | null = null; private focusContextKey: IContextKey; + private readonly filtersAction: IAction; constructor( readonly action: MarkersFilterAction, @@ -190,6 +269,9 @@ export class MarkersFilterActionViewItem extends BaseActionViewItem { this.delayedFilterUpdate = new Delayer(200); this._register(toDisposable(() => this.delayedFilterUpdate.cancel())); this._register(action.onFocus(() => this.focus())); + this.filtersAction = new Action('markersFiltersAction', Messages.MARKERS_PANEL_ACTION_TOOLTIP_MORE_FILTERS, 'markers-filters codicon-filter'); + this.filtersAction.checked = this.hasFiltersChanged(); + this._register(action.onDidChange(() => this.filtersAction.checked = this.hasFiltersChanged())); } render(container: HTMLElement): void { @@ -210,6 +292,10 @@ export class MarkersFilterActionViewItem extends BaseActionViewItem { } } + private hasFiltersChanged(): boolean { + return !this.action.showErrors || !this.action.showWarnings || !this.action.showInfos || this.action.useFilesExclude; + } + private createInput(container: HTMLElement): void { this.filterInputBox = this._register(this.instantiationService.createInstance(ContextScopedHistoryInputBox, container, this.contextViewService, { placeholder: Messages.MARKERS_PANEL_FILTER_PLACEHOLDER, @@ -238,10 +324,7 @@ export class MarkersFilterActionViewItem extends BaseActionViewItem { private createControls(container: HTMLElement): void { const controlsContainer = DOM.append(container, DOM.$('.markers-panel-filter-controls')); this.createBadge(controlsContainer); - this.createFilesExcludeCheckbox(controlsContainer); - this.createErrorsCheckbox(controlsContainer); - this.createWarningsCheckbox(controlsContainer); - this.createInfosCheckbox(controlsContainer); + this.createFilters(controlsContainer); } private createBadge(container: HTMLElement): void { @@ -262,88 +345,16 @@ export class MarkersFilterActionViewItem extends BaseActionViewItem { this._register(this.filterController.onDidFilter(() => this.updateBadge())); } - private createFilesExcludeCheckbox(container: HTMLElement): void { - const filesExcludeFilter = this._register(new Checkbox({ - actionClassName: 'codicon codicon-exclude', - title: this.action.useFilesExclude ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE, - isChecked: this.action.useFilesExclude - })); - this._register(filesExcludeFilter.onChange(() => { - filesExcludeFilter.domNode.title = filesExcludeFilter.checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE : Messages.MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE; - this.action.useFilesExclude = filesExcludeFilter.checked; - this.focus(); - })); - this._register(this.action.onDidChange((event: IMarkersFilterActionChangeEvent) => { - if (event.useFilesExclude) { - filesExcludeFilter.checked = this.action.useFilesExclude; - } - })); - - this._register(attachCheckboxStyler(filesExcludeFilter, this.themeService)); - container.appendChild(filesExcludeFilter.domNode); - } - - private createWarningsCheckbox(container: HTMLElement): void { - const warningsFilter = this._register(new Checkbox({ - actionClassName: 'codicon codicon-warning', - title: this.action.showWarnings ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_WARNINGS : Messages.MARKERS_PANEL_ACTION_TOOLTIP_SHOW_WARNINGS, - isChecked: this.action.showWarnings - })); - this._register(warningsFilter.onChange(() => { - warningsFilter.domNode.title = warningsFilter.checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_WARNINGS : Messages.MARKERS_PANEL_ACTION_TOOLTIP_SHOW_WARNINGS; - this.action.showWarnings = warningsFilter.checked; - this.focus(); - })); - this._register(this.action.onDidChange((event: IMarkersFilterActionChangeEvent) => { - if (event.showWarnings) { - warningsFilter.checked = this.action.showWarnings; - } - })); - - this._register(attachCheckboxStyler(warningsFilter, this.themeService)); - container.appendChild(warningsFilter.domNode); - } - - private createErrorsCheckbox(container: HTMLElement): void { - const errorsFilter = this._register(new Checkbox({ - actionClassName: 'codicon codicon-error', - title: this.action.showErrors ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_ERRORS : Messages.MARKERS_PANEL_ACTION_TOOLTIP_SHOW_ERRORS, - isChecked: this.action.showErrors - })); - this._register(errorsFilter.onChange(() => { - errorsFilter.domNode.title = errorsFilter.checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_ERRORS : Messages.MARKERS_PANEL_ACTION_TOOLTIP_SHOW_ERRORS; - this.action.showErrors = errorsFilter.checked; - this.focus(); - })); - this._register(this.action.onDidChange((event: IMarkersFilterActionChangeEvent) => { - if (event.showErrors) { - errorsFilter.checked = this.action.showErrors; + private createFilters(container: HTMLElement): void { + const actionbar = this._register(new ActionBar(container, { + actionViewItemProvider: action => { + if (action.id === this.filtersAction.id) { + return this.instantiationService.createInstance(FiltersDropdownMenuActionViewItem, action, this.action, this.actionRunner); + } + return undefined; } })); - - this._register(attachCheckboxStyler(errorsFilter, this.themeService)); - container.appendChild(errorsFilter.domNode); - } - - private createInfosCheckbox(container: HTMLElement): void { - const infosFilter = this._register(new Checkbox({ - actionClassName: 'codicon codicon-info', - title: this.action.showInfos ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_INFOS : Messages.MARKERS_PANEL_ACTION_TOOLTIP_SHOW_INFOS, - isChecked: this.action.showInfos - })); - this._register(infosFilter.onChange(() => { - infosFilter.domNode.title = infosFilter.checked ? Messages.MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_INFOS : Messages.MARKERS_PANEL_ACTION_TOOLTIP_SHOW_INFOS; - this.action.showInfos = infosFilter.checked; - this.focus(); - })); - this._register(this.action.onDidChange((event: IMarkersFilterActionChangeEvent) => { - if (event.showInfos) { - infosFilter.checked = this.action.showInfos; - } - })); - - this._register(attachCheckboxStyler(infosFilter, this.themeService)); - container.appendChild(infosFilter.domNode); + actionbar.push(this.filtersAction, { icon: true, label: false }); } private onDidInputChange(inputbox: HistoryInputBox) { @@ -394,9 +405,9 @@ export class MarkersFilterActionViewItem extends BaseActionViewItem { private reportFilteringUsed(): void { const filterOptions = this.filterController.getFilterOptions(); const data = { - errors: filterOptions._showErrors, - warnings: filterOptions._showWarnings, - infos: filterOptions._showInfos, + errors: filterOptions.showErrors, + warnings: filterOptions.showWarnings, + infos: filterOptions.showInfos, }; /* __GDPR__ "problems.filter" : { @@ -481,3 +492,14 @@ export class QuickFixActionViewItem extends ActionViewItem { } } } + +registerThemingParticipant((theme: ITheme, collector: ICssStyleCollector) => { + const inputActiveOptionBorderColor = theme.getColor(inputActiveOptionBorder); + if (inputActiveOptionBorderColor) { + collector.addRule(`.markers-panel-action-filter > .markers-panel-filter-controls > .monaco-action-bar .action-label.markers-filters.checked { border-color: ${inputActiveOptionBorderColor}; }`); + } + const inputActiveOptionBackgroundColor = theme.getColor(inputActiveOptionBackground); + if (inputActiveOptionBackgroundColor) { + collector.addRule(`.markers-panel-action-filter > .markers-panel-filter-controls > .monaco-action-bar .action-label.markers-filters.checked { background-color: ${inputActiveOptionBackgroundColor}; }`); + } +}); diff --git a/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts b/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts index 8bb9e9164f5..4172b768843 100644 --- a/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts +++ b/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts @@ -426,15 +426,15 @@ export class Filter implements ITreeFilter { private filterMarker(marker: Marker, parentVisibility: TreeVisibility): TreeFilterResult { let shouldAppear: boolean = false; - if (this.options._showErrors && MarkerSeverity.Error === marker.marker.severity) { + if (this.options.showErrors && MarkerSeverity.Error === marker.marker.severity) { shouldAppear = true; } - if (this.options._showWarnings && MarkerSeverity.Warning === marker.marker.severity) { + if (this.options.showWarnings && MarkerSeverity.Warning === marker.marker.severity) { shouldAppear = true; } - if (this.options._showInfos && MarkerSeverity.Info === marker.marker.severity) { + if (this.options.showInfos && MarkerSeverity.Info === marker.marker.severity) { shouldAppear = true; } diff --git a/src/vs/workbench/contrib/markers/browser/media/markers.css b/src/vs/workbench/contrib/markers/browser/media/markers.css index bb4f6c1ef9b..c389568e95f 100644 --- a/src/vs/workbench/contrib/markers/browser/media/markers.css +++ b/src/vs/workbench/contrib/markers/browser/media/markers.css @@ -29,7 +29,7 @@ position: absolute; top: 0px; bottom: 0; - right: 4px; + right: 0px; display: flex; align-items: center; } @@ -45,6 +45,14 @@ display: none; } +.markers-panel-action-filter > .markers-panel-filter-controls > .monaco-action-bar .action-label.markers-filters { + line-height: 20px; + height: 20px; + min-width: 28px; + margin-top: 2px; + margin-left: 4px; +} + .panel > .title .monaco-action-bar .action-item.markers-panel-action-filter-container { max-width: 600px; min-width: 300px; diff --git a/src/vs/workbench/contrib/markers/browser/messages.ts b/src/vs/workbench/contrib/markers/browser/messages.ts index 9b9d87c0481..e5cf5c4581f 100644 --- a/src/vs/workbench/contrib/markers/browser/messages.ts +++ b/src/vs/workbench/contrib/markers/browser/messages.ts @@ -21,16 +21,12 @@ export default class Messages { public static MARKERS_PANEL_NO_PROBLEMS_BUILT: string = nls.localize('markers.panel.no.problems.build', "No problems have been detected in the workspace so far."); public static MARKERS_PANEL_NO_PROBLEMS_FILTERS: string = nls.localize('markers.panel.no.problems.filters', "No results found with provided filter criteria."); - public static MARKERS_PANEL_NO_PROBLEMS_FILE_EXCLUSIONS_FILTER: string = nls.localize('markers.panel.no.problems.file.exclusions', "All problems are hidden because files exclude filter is enabled."); - public static MARKERS_PANEL_ACTION_TOOLTIP_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.useFilesExclude', "Filter using Files Exclude Setting"); - public static MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.donotUseFilesExclude', "Do not use Files Exclude Setting"); - public static MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_WARNINGS: string = nls.localize('markers.panel.action.donotShowWarnings', "Do not show warnings"); - public static MARKERS_PANEL_ACTION_TOOLTIP_SHOW_WARNINGS: string = nls.localize('markers.panel.action.showWarnings', "Show warnings"); - public static MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_ERRORS: string = nls.localize('markers.panel.action.donotShowErrors', "Do not show errors"); - public static MARKERS_PANEL_ACTION_TOOLTIP_SHOW_ERRORS: string = nls.localize('markers.panel.action.showErrors', "Show errors"); - public static MARKERS_PANEL_ACTION_TOOLTIP_DO_NOT_SHOW_INFOS: string = nls.localize('markers.panel.action.donotShowInfos', "Do not show infos"); - public static MARKERS_PANEL_ACTION_TOOLTIP_SHOW_INFOS: string = nls.localize('markers.panel.action.showInfos', "Show infos"); + public static MARKERS_PANEL_ACTION_TOOLTIP_MORE_FILTERS: string = nls.localize('markers.panel.action.moreFilters', "More Filters..."); + public static MARKERS_PANEL_ACTION_LABEL_SHOW_ERRORS: string = nls.localize('markers.panel.action.showErrors', "Errors"); + public static MARKERS_PANEL_ACTION_LABEL_SHOW_WARNINGS: string = nls.localize('markers.panel.action.showWarnings', "Warnings"); + public static MARKERS_PANEL_ACTION_LABEL_SHOW_INFOS: string = nls.localize('markers.panel.action.showInfos', "Infos"); + public static MARKERS_PANEL_ACTION_LABEL_USE_FILES_EXCLUDE: string = nls.localize('markers.panel.action.useFilesExclude', "Use Files Exclude Setting"); public static MARKERS_PANEL_ACTION_TOOLTIP_FILTER: string = nls.localize('markers.panel.action.filter', "Filter Problems"); public static MARKERS_PANEL_ACTION_TOOLTIP_QUICKFIX: string = nls.localize('markers.panel.action.quickfix', "Show fixes"); public static MARKERS_PANEL_FILTER_ARIA_LABEL: string = nls.localize('markers.panel.filter.ariaLabel', "Filter Problems"); -- GitLab