提交 9998e795 编写于 作者: S Sandeep Somavarapu

#1587 Add generics in preferences service

上级 3358b269
......@@ -217,17 +217,17 @@ export class PreferencesEditor extends BaseEditor {
}
}
private getDefaultPreferencesRenderer(): IPreferencesRenderer {
private getDefaultPreferencesRenderer(): IPreferencesRenderer<ISetting> {
const detailsEditor = this.sideBySidePreferencesWidget.getDefaultPreferencesEditor();
if (detailsEditor) {
return (<CodeEditor>this.sideBySidePreferencesWidget.getDefaultPreferencesEditor().getControl()).getContribution<PreferencesEditorContribution>(DefaultSettingsEditorContribution.ID).getPreferencesRenderer();
return (<CodeEditor>this.sideBySidePreferencesWidget.getDefaultPreferencesEditor().getControl()).getContribution<PreferencesEditorContribution<ISetting>>(DefaultSettingsEditorContribution.ID).getPreferencesRenderer();
}
return null;
}
private getEditablePreferencesRenderer(): IPreferencesRenderer {
private getEditablePreferencesRenderer(): IPreferencesRenderer<ISetting> {
if (this.sideBySidePreferencesWidget.getEditablePreferencesEditor()) {
return (<CodeEditor>this.sideBySidePreferencesWidget.getEditablePreferencesEditor().getControl()).getContribution<PreferencesEditorContribution>(SettingsEditorContribution.ID).getPreferencesRenderer();
return (<CodeEditor>this.sideBySidePreferencesWidget.getEditablePreferencesEditor().getControl()).getContribution<PreferencesEditorContribution<ISetting>>(SettingsEditorContribution.ID).getPreferencesRenderer();
}
return null;
}
......@@ -443,7 +443,7 @@ class DefaultPreferencesCodeEditor extends CodeEditor {
}
}
export interface IPreferencesRenderer {
export interface IPreferencesRenderer<T> {
iterator: IIterator<ISetting>;
onFocusPreference: Event<ISetting>;
onClearFocusPreference: Event<ISetting>;
......@@ -456,9 +456,9 @@ export interface IPreferencesRenderer {
dispose();
}
export abstract class PreferencesEditorContribution extends Disposable implements editorCommon.IEditorContribution {
export abstract class PreferencesEditorContribution<T> extends Disposable implements editorCommon.IEditorContribution {
private preferencesRenderer: IPreferencesRenderer;
private preferencesRenderer: IPreferencesRenderer<T>;
constructor(protected editor: ICodeEditor,
@IInstantiationService protected instantiationService: IInstantiationService,
......@@ -484,11 +484,11 @@ export abstract class PreferencesEditorContribution extends Disposable implement
}
}
getPreferencesRenderer(): IPreferencesRenderer {
getPreferencesRenderer(): IPreferencesRenderer<T> {
return this.preferencesRenderer;
}
protected abstract createPreferencesRenderer(editorModel: IPreferencesEditorModel): IPreferencesRenderer
protected abstract createPreferencesRenderer(editorModel: IPreferencesEditorModel<any>): IPreferencesRenderer<T>
abstract getId(): string;
private disposePreferencesRenderer() {
......@@ -504,11 +504,11 @@ export abstract class PreferencesEditorContribution extends Disposable implement
}
}
export class DefaultSettingsEditorContribution extends PreferencesEditorContribution implements editorCommon.IEditorContribution {
export class DefaultSettingsEditorContribution extends PreferencesEditorContribution<ISetting> implements editorCommon.IEditorContribution {
static ID: string = 'editor.contrib.defaultsettings';
protected createPreferencesRenderer(editorModel: IPreferencesEditorModel): IPreferencesRenderer {
protected createPreferencesRenderer(editorModel: IPreferencesEditorModel<ISetting>): IPreferencesRenderer<ISetting> {
if (editorModel instanceof DefaultSettingsEditorModel) {
return this.instantiationService.createInstance(DefaultSettingsRenderer, this.editor, editorModel);
}
......@@ -521,7 +521,7 @@ export class DefaultSettingsEditorContribution extends PreferencesEditorContribu
}
@editorContribution
export class SettingsEditorContribution extends PreferencesEditorContribution implements editorCommon.IEditorContribution {
export class SettingsEditorContribution extends PreferencesEditorContribution<ISetting> implements editorCommon.IEditorContribution {
static ID: string = 'editor.contrib.settings';
......@@ -529,7 +529,7 @@ export class SettingsEditorContribution extends PreferencesEditorContribution im
return SettingsEditorContribution.ID;
}
protected createPreferencesRenderer(editorModel: IPreferencesEditorModel): IPreferencesRenderer {
protected createPreferencesRenderer(editorModel: IPreferencesEditorModel<ISetting>): IPreferencesRenderer<ISetting> {
if (editorModel instanceof SettingsEditorModel) {
return this.instantiationService.createInstance(SettingsRenderer, this.editor, editorModel);
}
......@@ -537,7 +537,7 @@ export class SettingsEditorContribution extends PreferencesEditorContribution im
}
}
export class SettingsRenderer extends Disposable implements IPreferencesRenderer {
export class SettingsRenderer extends Disposable implements IPreferencesRenderer<ISetting> {
private initializationPromise: TPromise<void>;
private settingHighlighter: SettingHighlighter;
......@@ -602,10 +602,10 @@ export class SettingsRenderer extends Disposable implements IPreferencesRenderer
private onSettingUpdated(setting: ISetting) {
this.editor.focus();
setting = this.preferencesModel.getSetting(setting.key);
setting = this.preferencesModel.getPreference(setting.key);
// TODO:@sandy Selection range should be template range
this.editor.setSelection(setting.valueRange);
this.settingHighlighter.highlight(this.preferencesModel.getSetting(setting.key), true);
this.settingHighlighter.highlight(this.preferencesModel.getPreference(setting.key), true);
}
public filterPreferences(filterResult: IFilterResult): void {
......@@ -615,7 +615,7 @@ export class SettingsRenderer extends Disposable implements IPreferencesRenderer
const settings = distinct(filterResult.filteredGroups.reduce((settings: ISetting[], settingsGroup: ISettingsGroup) => {
for (const section of settingsGroup.sections) {
for (const setting of section.settings) {
const s = this.preferencesModel.getSetting(setting.key);
const s = this.preferencesModel.getPreference(setting.key);
if (s) {
settings.push(s);
}
......@@ -628,7 +628,7 @@ export class SettingsRenderer extends Disposable implements IPreferencesRenderer
}
public focusPreference(setting: ISetting): void {
const s = this.preferencesModel.getSetting(setting.key);
const s = this.preferencesModel.getPreference(setting.key);
if (s) {
this.settingHighlighter.highlight(s, true);
} else {
......@@ -641,7 +641,7 @@ export class SettingsRenderer extends Disposable implements IPreferencesRenderer
}
}
export class DefaultSettingsRenderer extends Disposable implements IPreferencesRenderer {
export class DefaultSettingsRenderer extends Disposable implements IPreferencesRenderer<ISetting> {
private defaultSettingsEditorContextKey: IContextKey<boolean>;
......@@ -722,7 +722,7 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR
public updatePreference(setting: ISetting, value: any): void {
const settingsEditor = this.getEditableSettingsEditor();
if (settingsEditor) {
settingsEditor.getContribution<PreferencesEditorContribution>(SettingsEditorContribution.ID).getPreferencesRenderer().updatePreference(setting, value);
settingsEditor.getContribution<PreferencesEditorContribution<ISetting>>(SettingsEditorContribution.ID).getPreferencesRenderer().updatePreference(setting, value);
}
}
......@@ -1222,7 +1222,7 @@ class EditSettingRenderer extends Disposable {
}
private getDefaultActions(setting: ISetting): IAction[] {
const settingInOtherModel = this.otherSettingsModel().getSetting(setting.key);
const settingInOtherModel = this.otherSettingsModel().getPreference(setting.key);
if (this.isDefaultSettings()) {
return [<IAction>{
id: 'setDefaultValue',
......@@ -1279,7 +1279,7 @@ class SettingHighlighter extends Disposable {
}
}
const DefaultSettingsEditorCommand = EditorCommand.bindToContribution<PreferencesEditorContribution>((editor: editorCommon.ICommonCodeEditor) => <PreferencesEditorContribution>editor.getContribution(DefaultSettingsEditorContribution.ID));
const DefaultSettingsEditorCommand = EditorCommand.bindToContribution<PreferencesEditorContribution<ISetting>>((editor: editorCommon.ICommonCodeEditor) => <PreferencesEditorContribution<ISetting>>editor.getContribution(DefaultSettingsEditorContribution.ID));
CommonEditorRegistry.registerEditorCommand(new DefaultSettingsEditorCommand({
id: DEFAULT_EDITOR_COMMAND_COLLAPSE_ALL,
......
......@@ -42,7 +42,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
_serviceBrand: any;
// TODO:@sandy merge these models into editor inputs by extending resource editor model
private defaultPreferencesEditorModels: Map<URI, IPreferencesEditorModel>;
private defaultPreferencesEditorModels: Map<URI, IPreferencesEditorModel<any>>;
private lastOpenedSettingsInput: PreferencesEditorInput = null;
constructor(
......@@ -62,7 +62,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
@IExtensionService private extensionService: IExtensionService
) {
super();
this.defaultPreferencesEditorModels = new Map<URI, IPreferencesEditorModel>();
this.defaultPreferencesEditorModels = new Map<URI, IPreferencesEditorModel<any>>();
this.editorGroupService.onEditorsChanged(() => {
const activeEditorInput = this.editorService.getActiveEditorInput();
if (activeEditorInput instanceof PreferencesEditorInput) {
......@@ -82,7 +82,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
return this.getEditableSettingsURI(ConfigurationTarget.WORKSPACE);
}
createDefaultPreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel> {
createDefaultPreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel<any>> {
const editorModel = this.defaultPreferencesEditorModels.get(uri);
if (editorModel) {
return TPromise.as(editorModel);
......@@ -107,7 +107,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
return null;
}
public resolvePreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel> {
public resolvePreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel<any>> {
const model = this.defaultPreferencesEditorModels.get(uri);
if (model) {
return TPromise.wrap(model);
......
......@@ -40,19 +40,19 @@ export interface IFilterResult {
matches: Map<string, IRange[]>;
}
export interface IPreferencesEditorModel {
export interface IPreferencesEditorModel<T> {
uri: URI;
content: string;
getPreference(key: string): T;
}
export interface ISettingsEditorModel extends IPreferencesEditorModel {
export interface ISettingsEditorModel extends IPreferencesEditorModel<ISetting> {
settingsGroups: ISettingsGroup[];
groupsTerms: string[];
getSetting(key: string): ISetting;
filterSettings(filter: string): IFilterResult;
}
export interface IKeybindingsEditorModel extends IPreferencesEditorModel {
export interface IKeybindingsEditorModel<T> extends IPreferencesEditorModel<T> {
}
export const IPreferencesService = createDecorator<IPreferencesService>('preferencesService');
......@@ -65,8 +65,8 @@ export interface IPreferencesService {
workspaceSettingsResource: URI;
defaultKeybindingsResource: URI;
createDefaultPreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel>;
resolvePreferencesEditorModel(uri: URI): TPromise<IPreferencesEditorModel>;
createDefaultPreferencesEditorModel<T>(uri: URI): TPromise<IPreferencesEditorModel<T>>;
resolvePreferencesEditorModel<T>(uri: URI): TPromise<IPreferencesEditorModel<T>>;
openSettings(): TPromise<void>;
switchSettings(): TPromise<void>;
......
......@@ -87,7 +87,7 @@ export abstract class AbstractSettingsModel extends Disposable {
return null;
}
public getSetting(key: string): ISetting {
public getPreference(key: string): ISetting {
for (const group of this.settingsGroups) {
for (const section of group.sections) {
for (const setting of section.settings) {
......@@ -412,7 +412,7 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements
return this.doFilterSettings(filter, this.settingsGroups);
}
public getSetting(key: string): ISetting {
public getPreference(key: string): ISetting {
for (const group of this.settingsGroups) {
for (const section of group.sections) {
for (const setting of section.settings) {
......@@ -593,29 +593,9 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements
result.push(indent + '// ' + line);
}
}
/*private _findMatchesInLine(searchRegex: RegExp, lineNumber: number): IRange[] {
const result: IRange[] = [];
const text = this._contentByLines[lineNumber - 1];
var m: RegExpExecArray;
// Reset regex to search from the beginning
searchRegex.lastIndex = 0;
do {
m = searchRegex.exec(text);
if (m) {
var range: IRange = { startLineNumber: lineNumber, startColumn: m.index + 1, endLineNumber: lineNumber, endColumn: m.index + 1 + m[0].length };
result.push(range);
if (m.index + m[0].length === text.length) {
// Reached the end of the line
return result;
}
}
} while (m);
return result;
}*/
}
export class DefaultKeybindingsEditorModel implements IKeybindingsEditorModel {
export class DefaultKeybindingsEditorModel implements IKeybindingsEditorModel<any> {
private _content: string;
......@@ -633,4 +613,8 @@ export class DefaultKeybindingsEditorModel implements IKeybindingsEditorModel {
}
return this._content;
}
public getPreference(): any {
return null;
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册