Skip to content

Commit

Permalink
Default settings editor:
Browse files Browse the repository at this point in the history
Expand settings group while navigating filtered settings from Search box
  • Loading branch information
sandy081 committed Dec 6, 2016
1 parent a793d35 commit 606ae38
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/vs/base/common/iterator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export class ArrayIterator<T> implements IIterator<T> {
}

public first(): T {
this.index = this.start - 1;
this.index = this.start;
return this.current();
}

Expand Down
23 changes: 19 additions & 4 deletions src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'v
import * as editorCommon from 'vs/editor/common/editorCommon';
import { BaseTextEditor } from 'vs/workbench/browser/parts/editor/textEditor';
import { CodeEditor } from 'vs/editor/browser/codeEditor';
import { Range } from 'vs/editor/common/core/range';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import {
IPreferencesService, ISettingsGroup, ISetting, IPreferencesEditorModel, IFilterResult, CONTEXT_DEFAULT_SETTINGS_EDITOR,
Expand Down Expand Up @@ -437,7 +438,10 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR
}

public focusNextSetting(): void {
this.focusNextSettingRenderer.focusNext();
const setting = this.focusNextSettingRenderer.focusNext();
if (setting) {
this.settingsGroupTitleRenderer.showSetting(setting);
}
}

public collapseAll() {
Expand Down Expand Up @@ -536,16 +540,25 @@ export class SettingsGroupTitleRenderer extends Disposable implements HiddenArea
public showGroup(group: number) {
this.hiddenGroups = this.settingsGroups.filter((g, i) => i !== group - 1);
for (const groupTitleWidget of this.settingsGroupTitleWidgets.filter((g, i) => i !== group - 1)) {
groupTitleWidget.collapse();
groupTitleWidget.toggleCollapse(true);
}
this._onHiddenAreasChanged.fire();
}

public showSetting(setting: ISetting): void {
const settingsGroupTitleWidget = this.settingsGroupTitleWidgets.filter(widget => Range.containsRange(widget.settingsGroup.range, setting.range))[0];
if (settingsGroupTitleWidget && settingsGroupTitleWidget.isCollapsed()) {
settingsGroupTitleWidget.toggleCollapse(false);
this.hiddenGroups.splice(this.hiddenGroups.indexOf(settingsGroupTitleWidget.settingsGroup), 1);
this._onHiddenAreasChanged.fire();
}
}

public collapseAll() {
this.editor.setPosition({ lineNumber: 1, column: 1 });
this.hiddenGroups = this.settingsGroups.slice();
for (const groupTitleWidget of this.settingsGroupTitleWidgets) {
groupTitleWidget.collapse();
groupTitleWidget.toggleCollapse(true);
}
this._onHiddenAreasChanged.fire();
}
Expand Down Expand Up @@ -719,7 +732,7 @@ export class FocusNextSettingRenderer extends Disposable {
super();
}

public focusNext(): void {
public focusNext(): ISetting {
this.clear();
let setting = this.iterator.next() || this.iterator.first();
if (setting) {
Expand All @@ -739,7 +752,9 @@ export class FocusNextSettingRenderer extends Disposable {
}]);
});
this.editor.revealLinesInCenterIfOutsideViewport(setting.valueRange.startLineNumber, setting.valueRange.endLineNumber - 1);
return setting;
}
return null;
}

public render(filteredGroups: ISettingsGroup[]) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ export class SettingsGroupTitleWidget extends Widget implements IViewZone {
});
}

public collapse() {
DOM.addClass(this.titleContainer, 'collapsed');
public toggleCollapse(collapse: boolean) {
DOM.toggleClass(this.titleContainer, 'collapsed', collapse);
}

public toggleFocus(focus: boolean): void {
Expand Down

0 comments on commit 606ae38

Please sign in to comment.