提交 468346df 编写于 作者: S Sandeep Somavarapu

Fix #29312

上级 689a8236
......@@ -134,6 +134,32 @@
padding-left:10px;
}
.monaco-editor .settings-header-widget .title-container {
padding-left: 12px;
display: flex;
}
.vs .monaco-editor .settings-header-widget .title-container {
color: #6f6f6f;
}
.vs-dark .monaco-editor .settings-header-widget .title-container {
color: #bbbbbb;
}
.hc-black .monaco-editor .settings-header-widget .title-container {
color: white;
}
.monaco-editor .settings-header-widget .title-container .title {
font-weight: bold;
white-space: nowrap;
text-transform: uppercase;
}
.monaco-editor .settings-header-widget .title-container .message {
padding-left: 12px;
white-space: nowrap;
}
.monaco-editor .settings-group-title-widget {
z-index: 1;
}
......
......@@ -19,7 +19,7 @@ import { IPreferencesService, ISettingsGroup, ISetting, IPreferencesEditorModel,
import { SettingsEditorModel, DefaultSettingsEditorModel } from 'vs/workbench/parts/preferences/common/preferencesModels';
import { ICodeEditor, IEditorMouseEvent, MouseTargetType } from 'vs/editor/browser/editorBrowser';
import { IContextMenuService, ContextSubMenu } from 'vs/platform/contextview/browser/contextView';
import { SettingsGroupTitleWidget, EditPreferenceWidget } from 'vs/workbench/parts/preferences/browser/preferencesWidgets';
import { SettingsGroupTitleWidget, EditPreferenceWidget, SettingsHeaderWidget } from 'vs/workbench/parts/preferences/browser/preferencesWidgets';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { RangeHighlightDecorations } from 'vs/workbench/common/editor/rangeDecorations';
import { IConfigurationEditingService, IConfigurationEditingError, ConfigurationEditingErrorCode, ConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing';
......@@ -186,6 +186,7 @@ export class WorkspaceSettingsRenderer extends UserSettingsRenderer implements I
export class DefaultSettingsRenderer extends Disposable implements IPreferencesRenderer<ISetting> {
private settingHighlighter: SettingHighlighter;
private settingsHeaderRenderer: SettingsHeaderRenderer;
private settingsGroupTitleRenderer: SettingsGroupTitleRenderer;
private filteredMatchesRenderer: FilteredMatchesRenderer;
private hiddenAreasRenderer: HiddenAreasRenderer;
......@@ -211,6 +212,7 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR
this._register(preferencesModel);
this._register(_associatedPreferencesModel);
this.settingHighlighter = this._register(instantiationService.createInstance(SettingHighlighter, editor, this._onFocusPreference, this._onClearFocusPreference));
this.settingsHeaderRenderer = this._register(instantiationService.createInstance(SettingsHeaderRenderer, editor));
this.settingsGroupTitleRenderer = this._register(instantiationService.createInstance(SettingsGroupTitleRenderer, editor));
this.filteredMatchesRenderer = this._register(instantiationService.createInstance(FilteredMatchesRenderer, editor));
this.editSettingActionRenderer = this._register(instantiationService.createInstance(EditSettingRenderer, editor, preferencesModel, this.settingHighlighter));
......@@ -244,11 +246,13 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR
if (!filterResult) {
this.settingHighlighter.clear(true);
this.filteredMatchesRenderer.render(null);
this.settingsHeaderRenderer.render(this.preferencesModel.settingsGroups);
this.settingsGroupTitleRenderer.render(this.preferencesModel.settingsGroups);
this.settingsGroupTitleRenderer.showGroup(1);
this.editSettingActionRenderer.render(this.preferencesModel.settingsGroups, this._associatedPreferencesModel);
} else {
this.filteredMatchesRenderer.render(filterResult);
this.settingsHeaderRenderer.render(filterResult.filteredGroups);
this.settingsGroupTitleRenderer.render(filterResult.filteredGroups);
this.settingHighlighter.clear(true);
this.editSettingActionRenderer.render(filterResult.filteredGroups, this._associatedPreferencesModel);
......@@ -343,6 +347,24 @@ export class StaticContentHidingRenderer extends Disposable implements HiddenAre
}
class SettingsHeaderRenderer extends Disposable {
private settingsHeaderWidget: SettingsHeaderWidget;
constructor(private editor: ICodeEditor) {
super();
this.settingsHeaderWidget = this._register(new SettingsHeaderWidget(editor, nls.localize('defaultSettingsTitle', "Default Settings")));
}
public render(settingsGroups: ISettingsGroup[]) {
if (settingsGroups.length) {
this.settingsHeaderWidget.setMessage(nls.localize('defaultSettingsMessage', "Place your settings in the file to the right to overwrite."));
} else {
this.settingsHeaderWidget.setMessage(nls.localize('noSettingsFound', "No Settings Found."));
}
}
}
export class SettingsGroupTitleRenderer extends Disposable implements HiddenAreasProvider {
private _onHiddenAreasChanged: Emitter<void> = new Emitter<void>();
......
......@@ -29,6 +29,63 @@ import { Position } from 'vs/editor/common/core/position';
import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents';
import { buttonBackground, buttonForeground, badgeForeground, badgeBackground, contrastBorder, errorForeground } from 'vs/platform/theme/common/colorRegistry';
export class SettingsHeaderWidget extends Widget implements IViewZone {
private id: number;
private _domNode: HTMLElement;
private titleContainer: HTMLElement;
private messageElement: HTMLElement;
constructor(private editor: ICodeEditor, private title: string) {
super();
this.create();
this._register(this.editor.onDidChangeConfiguration(() => this.layout()));
this._register(this.editor.onDidLayoutChange(() => this.layout()));
}
get domNode(): HTMLElement {
return this._domNode;
}
get heightInLines(): number {
return 1;
}
get afterLineNumber(): number {
return 0;
}
private create() {
this._domNode = DOM.$('.settings-header-widget');
this.titleContainer = DOM.append(this._domNode, DOM.$('.title-container'));
DOM.append(this.titleContainer, DOM.$('.title')).textContent = this.title;
this.messageElement = DOM.append(this.titleContainer, DOM.$('.message'));
this.editor.changeViewZones(accessor => {
this.id = accessor.addZone(this);
this.layout();
});
}
public setMessage(message: string): void {
this.messageElement.textContent = message;
}
private layout(): void {
const configuration = this.editor.getConfiguration();
this.titleContainer.style.fontSize = configuration.fontInfo.fontSize + 'px';
}
public dispose() {
this.editor.changeViewZones(accessor => {
accessor.removeZone(this.id);
});
super.dispose();
}
}
export class SettingsGroupTitleWidget extends Widget implements IViewZone {
private id: number;
......
......@@ -643,7 +643,7 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements
lastSetting = setting;
}
} else {
this._contentByLines.push('// No Settings');
this._contentByLines.push('// ' + nls.localize('noSettings', "No Settings"));
this._contentByLines.push('');
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册