Skip to content

Commit 9998e79

Browse files
committed
microsoft#1587 Add generics in preferences service
1 parent 3358b26 commit 9998e79

4 files changed

Lines changed: 39 additions & 55 deletions

File tree

src/vs/workbench/parts/preferences/browser/preferencesEditor.ts

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -217,17 +217,17 @@ export class PreferencesEditor extends BaseEditor {
217217
}
218218
}
219219

220-
private getDefaultPreferencesRenderer(): IPreferencesRenderer {
220+
private getDefaultPreferencesRenderer(): IPreferencesRenderer<ISetting> {
221221
const detailsEditor = this.sideBySidePreferencesWidget.getDefaultPreferencesEditor();
222222
if (detailsEditor) {
223-
return (<CodeEditor>this.sideBySidePreferencesWidget.getDefaultPreferencesEditor().getControl()).getContribution<PreferencesEditorContribution>(DefaultSettingsEditorContribution.ID).getPreferencesRenderer();
223+
return (<CodeEditor>this.sideBySidePreferencesWidget.getDefaultPreferencesEditor().getControl()).getContribution<PreferencesEditorContribution<ISetting>>(DefaultSettingsEditorContribution.ID).getPreferencesRenderer();
224224
}
225225
return null;
226226
}
227227

228-
private getEditablePreferencesRenderer(): IPreferencesRenderer {
228+
private getEditablePreferencesRenderer(): IPreferencesRenderer<ISetting> {
229229
if (this.sideBySidePreferencesWidget.getEditablePreferencesEditor()) {
230-
return (<CodeEditor>this.sideBySidePreferencesWidget.getEditablePreferencesEditor().getControl()).getContribution<PreferencesEditorContribution>(SettingsEditorContribution.ID).getPreferencesRenderer();
230+
return (<CodeEditor>this.sideBySidePreferencesWidget.getEditablePreferencesEditor().getControl()).getContribution<PreferencesEditorContribution<ISetting>>(SettingsEditorContribution.ID).getPreferencesRenderer();
231231
}
232232
return null;
233233
}
@@ -443,7 +443,7 @@ class DefaultPreferencesCodeEditor extends CodeEditor {
443443
}
444444
}
445445

446-
export interface IPreferencesRenderer {
446+
export interface IPreferencesRenderer<T> {
447447
iterator: IIterator<ISetting>;
448448
onFocusPreference: Event<ISetting>;
449449
onClearFocusPreference: Event<ISetting>;
@@ -456,9 +456,9 @@ export interface IPreferencesRenderer {
456456
dispose();
457457
}
458458

459-
export abstract class PreferencesEditorContribution extends Disposable implements editorCommon.IEditorContribution {
459+
export abstract class PreferencesEditorContribution<T> extends Disposable implements editorCommon.IEditorContribution {
460460

461-
private preferencesRenderer: IPreferencesRenderer;
461+
private preferencesRenderer: IPreferencesRenderer<T>;
462462

463463
constructor(protected editor: ICodeEditor,
464464
@IInstantiationService protected instantiationService: IInstantiationService,
@@ -484,11 +484,11 @@ export abstract class PreferencesEditorContribution extends Disposable implement
484484
}
485485
}
486486

487-
getPreferencesRenderer(): IPreferencesRenderer {
487+
getPreferencesRenderer(): IPreferencesRenderer<T> {
488488
return this.preferencesRenderer;
489489
}
490490

491-
protected abstract createPreferencesRenderer(editorModel: IPreferencesEditorModel): IPreferencesRenderer
491+
protected abstract createPreferencesRenderer(editorModel: IPreferencesEditorModel<any>): IPreferencesRenderer<T>
492492
abstract getId(): string;
493493

494494
private disposePreferencesRenderer() {
@@ -504,11 +504,11 @@ export abstract class PreferencesEditorContribution extends Disposable implement
504504
}
505505
}
506506

507-
export class DefaultSettingsEditorContribution extends PreferencesEditorContribution implements editorCommon.IEditorContribution {
507+
export class DefaultSettingsEditorContribution extends PreferencesEditorContribution<ISetting> implements editorCommon.IEditorContribution {
508508

509509
static ID: string = 'editor.contrib.defaultsettings';
510510

511-
protected createPreferencesRenderer(editorModel: IPreferencesEditorModel): IPreferencesRenderer {
511+
protected createPreferencesRenderer(editorModel: IPreferencesEditorModel<ISetting>): IPreferencesRenderer<ISetting> {
512512
if (editorModel instanceof DefaultSettingsEditorModel) {
513513
return this.instantiationService.createInstance(DefaultSettingsRenderer, this.editor, editorModel);
514514
}
@@ -521,23 +521,23 @@ export class DefaultSettingsEditorContribution extends PreferencesEditorContribu
521521
}
522522

523523
@editorContribution
524-
export class SettingsEditorContribution extends PreferencesEditorContribution implements editorCommon.IEditorContribution {
524+
export class SettingsEditorContribution extends PreferencesEditorContribution<ISetting> implements editorCommon.IEditorContribution {
525525

526526
static ID: string = 'editor.contrib.settings';
527527

528528
getId(): string {
529529
return SettingsEditorContribution.ID;
530530
}
531531

532-
protected createPreferencesRenderer(editorModel: IPreferencesEditorModel): IPreferencesRenderer {
532+
protected createPreferencesRenderer(editorModel: IPreferencesEditorModel<ISetting>): IPreferencesRenderer<ISetting> {
533533
if (editorModel instanceof SettingsEditorModel) {
534534
return this.instantiationService.createInstance(SettingsRenderer, this.editor, editorModel);
535535
}
536536
return null;
537537
}
538538
}
539539

540-
export class SettingsRenderer extends Disposable implements IPreferencesRenderer {
540+
export class SettingsRenderer extends Disposable implements IPreferencesRenderer<ISetting> {
541541

542542
private initializationPromise: TPromise<void>;
543543
private settingHighlighter: SettingHighlighter;
@@ -602,10 +602,10 @@ export class SettingsRenderer extends Disposable implements IPreferencesRenderer
602602

603603
private onSettingUpdated(setting: ISetting) {
604604
this.editor.focus();
605-
setting = this.preferencesModel.getSetting(setting.key);
605+
setting = this.preferencesModel.getPreference(setting.key);
606606
// TODO:@sandy Selection range should be template range
607607
this.editor.setSelection(setting.valueRange);
608-
this.settingHighlighter.highlight(this.preferencesModel.getSetting(setting.key), true);
608+
this.settingHighlighter.highlight(this.preferencesModel.getPreference(setting.key), true);
609609
}
610610

611611
public filterPreferences(filterResult: IFilterResult): void {
@@ -615,7 +615,7 @@ export class SettingsRenderer extends Disposable implements IPreferencesRenderer
615615
const settings = distinct(filterResult.filteredGroups.reduce((settings: ISetting[], settingsGroup: ISettingsGroup) => {
616616
for (const section of settingsGroup.sections) {
617617
for (const setting of section.settings) {
618-
const s = this.preferencesModel.getSetting(setting.key);
618+
const s = this.preferencesModel.getPreference(setting.key);
619619
if (s) {
620620
settings.push(s);
621621
}
@@ -628,7 +628,7 @@ export class SettingsRenderer extends Disposable implements IPreferencesRenderer
628628
}
629629

630630
public focusPreference(setting: ISetting): void {
631-
const s = this.preferencesModel.getSetting(setting.key);
631+
const s = this.preferencesModel.getPreference(setting.key);
632632
if (s) {
633633
this.settingHighlighter.highlight(s, true);
634634
} else {
@@ -641,7 +641,7 @@ export class SettingsRenderer extends Disposable implements IPreferencesRenderer
641641
}
642642
}
643643

644-
export class DefaultSettingsRenderer extends Disposable implements IPreferencesRenderer {
644+
export class DefaultSettingsRenderer extends Disposable implements IPreferencesRenderer<ISetting> {
645645

646646
private defaultSettingsEditorContextKey: IContextKey<boolean>;
647647

@@ -722,7 +722,7 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR
722722
public updatePreference(setting: ISetting, value: any): void {
723723
const settingsEditor = this.getEditableSettingsEditor();
724724
if (settingsEditor) {
725-
settingsEditor.getContribution<PreferencesEditorContribution>(SettingsEditorContribution.ID).getPreferencesRenderer().updatePreference(setting, value);
725+
settingsEditor.getContribution<PreferencesEditorContribution<ISetting>>(SettingsEditorContribution.ID).getPreferencesRenderer().updatePreference(setting, value);
726726
}
727727
}
728728

@@ -1222,7 +1222,7 @@ class EditSettingRenderer extends Disposable {
12221222
}
12231223

12241224
private getDefaultActions(setting: ISetting): IAction[] {
1225-
const settingInOtherModel = this.otherSettingsModel().getSetting(setting.key);
1225+
const settingInOtherModel = this.otherSettingsModel().getPreference(setting.key);
12261226
if (this.isDefaultSettings()) {
12271227
return [<IAction>{
12281228
id: 'setDefaultValue',
@@ -1279,7 +1279,7 @@ class SettingHighlighter extends Disposable {
12791279
}
12801280
}
12811281

1282-
const DefaultSettingsEditorCommand = EditorCommand.bindToContribution<PreferencesEditorContribution>((editor: editorCommon.ICommonCodeEditor) => <PreferencesEditorContribution>editor.getContribution(DefaultSettingsEditorContribution.ID));
1282+
const DefaultSettingsEditorCommand = EditorCommand.bindToContribution<PreferencesEditorContribution<ISetting>>((editor: editorCommon.ICommonCodeEditor) => <PreferencesEditorContribution<ISetting>>editor.getContribution(DefaultSettingsEditorContribution.ID));
12831283

12841284
CommonEditorRegistry.registerEditorCommand(new DefaultSettingsEditorCommand({
12851285
id: DEFAULT_EDITOR_COMMAND_COLLAPSE_ALL,

src/vs/workbench/parts/preferences/browser/preferencesService.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
4242
_serviceBrand: any;
4343

4444
// TODO:@sandy merge these models into editor inputs by extending resource editor model
45-
private defaultPreferencesEditorModels: Map<URI, IPreferencesEditorModel>;
45+
private defaultPreferencesEditorModels: Map<URI, IPreferencesEditorModel<any>>;
4646
private lastOpenedSettingsInput: PreferencesEditorInput = null;
4747

4848
constructor(
@@ -62,7 +62,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
6262
@IExtensionService private extensionService: IExtensionService
6363
) {
6464
super();
65-
this.defaultPreferencesEditorModels = new Map<URI, IPreferencesEditorModel>();
65+
this.defaultPreferencesEditorModels = new Map<URI, IPreferencesEditorModel<any>>();
6666
this.editorGroupService.onEditorsChanged(() => {
6767
const activeEditorInput = this.editorService.getActiveEditorInput();
6868
if (activeEditorInput instanceof PreferencesEditorInput) {
@@ -82,7 +82,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
8282
return this.getEditableSettingsURI(ConfigurationTarget.WORKSPACE);
8383
}
8484

85-
createDefaultPreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel> {
85+
createDefaultPreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel<any>> {
8686
const editorModel = this.defaultPreferencesEditorModels.get(uri);
8787
if (editorModel) {
8888
return TPromise.as(editorModel);
@@ -107,7 +107,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
107107
return null;
108108
}
109109

110-
public resolvePreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel> {
110+
public resolvePreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel<any>> {
111111
const model = this.defaultPreferencesEditorModels.get(uri);
112112
if (model) {
113113
return TPromise.wrap(model);

src/vs/workbench/parts/preferences/common/preferences.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,19 @@ export interface IFilterResult {
4040
matches: Map<string, IRange[]>;
4141
}
4242

43-
export interface IPreferencesEditorModel {
43+
export interface IPreferencesEditorModel<T> {
4444
uri: URI;
4545
content: string;
46+
getPreference(key: string): T;
4647
}
4748

48-
export interface ISettingsEditorModel extends IPreferencesEditorModel {
49+
export interface ISettingsEditorModel extends IPreferencesEditorModel<ISetting> {
4950
settingsGroups: ISettingsGroup[];
5051
groupsTerms: string[];
51-
getSetting(key: string): ISetting;
5252
filterSettings(filter: string): IFilterResult;
5353
}
5454

55-
export interface IKeybindingsEditorModel extends IPreferencesEditorModel {
55+
export interface IKeybindingsEditorModel<T> extends IPreferencesEditorModel<T> {
5656
}
5757

5858
export const IPreferencesService = createDecorator<IPreferencesService>('preferencesService');
@@ -65,8 +65,8 @@ export interface IPreferencesService {
6565
workspaceSettingsResource: URI;
6666
defaultKeybindingsResource: URI;
6767

68-
createDefaultPreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel>;
69-
resolvePreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel>;
68+
createDefaultPreferencesEditorModel<T>(uri: URI): TPromise<IPreferencesEditorModel<T>>;
69+
resolvePreferencesEditorModel<T>(uri: URI): TPromise<IPreferencesEditorModel<T>>;
7070

7171
openSettings(): TPromise<void>;
7272
switchSettings(): TPromise<void>;

src/vs/workbench/parts/preferences/common/preferencesModels.ts

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export abstract class AbstractSettingsModel extends Disposable {
8787
return null;
8888
}
8989

90-
public getSetting(key: string): ISetting {
90+
public getPreference(key: string): ISetting {
9191
for (const group of this.settingsGroups) {
9292
for (const section of group.sections) {
9393
for (const setting of section.settings) {
@@ -412,7 +412,7 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements
412412
return this.doFilterSettings(filter, this.settingsGroups);
413413
}
414414

415-
public getSetting(key: string): ISetting {
415+
public getPreference(key: string): ISetting {
416416
for (const group of this.settingsGroups) {
417417
for (const section of group.sections) {
418418
for (const setting of section.settings) {
@@ -593,29 +593,9 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements
593593
result.push(indent + '// ' + line);
594594
}
595595
}
596-
597-
/*private _findMatchesInLine(searchRegex: RegExp, lineNumber: number): IRange[] {
598-
const result: IRange[] = [];
599-
const text = this._contentByLines[lineNumber - 1];
600-
var m: RegExpExecArray;
601-
// Reset regex to search from the beginning
602-
searchRegex.lastIndex = 0;
603-
do {
604-
m = searchRegex.exec(text);
605-
if (m) {
606-
var range: IRange = { startLineNumber: lineNumber, startColumn: m.index + 1, endLineNumber: lineNumber, endColumn: m.index + 1 + m[0].length };
607-
result.push(range);
608-
if (m.index + m[0].length === text.length) {
609-
// Reached the end of the line
610-
return result;
611-
}
612-
}
613-
} while (m);
614-
return result;
615-
}*/
616596
}
617597

618-
export class DefaultKeybindingsEditorModel implements IKeybindingsEditorModel {
598+
export class DefaultKeybindingsEditorModel implements IKeybindingsEditorModel<any> {
619599

620600
private _content: string;
621601

@@ -633,4 +613,8 @@ export class DefaultKeybindingsEditorModel implements IKeybindingsEditorModel {
633613
}
634614
return this._content;
635615
}
616+
617+
public getPreference(): any {
618+
return null;
619+
}
636620
}

0 commit comments

Comments
 (0)