Skip to content

Commit

Permalink
Merge pull request #60045 from w9jds/modified-in-navigation
Browse files Browse the repository at this point in the history
Resolves #57507 - Allows clicking of Modified In labels in setting editor view
  • Loading branch information
roblourens authored Oct 6, 2018
2 parents acbe81b + 30fbbd7 commit c09511c
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -540,7 +540,7 @@ export class SettingsTargetsWidget extends Widget {
}
}

private updateTarget(settingsTarget: SettingsTarget): TPromise<void> {
public updateTarget(settingsTarget: SettingsTarget): TPromise<void> {
const isSameTarget = this.settingsTarget === settingsTarget || settingsTarget instanceof URI && this.settingsTarget instanceof URI && this.settingsTarget.toString() === settingsTarget.toString();
if (!isSameTarget) {
this.settingsTarget = settingsTarget;
Expand Down
33 changes: 30 additions & 3 deletions src/vs/workbench/parts/preferences/browser/settingsTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,13 +339,21 @@ export interface ISettingLinkClickEvent {
targetKey: string;
}

export interface ISettingOverrideClickEvent {
scope: string;
targetKey: string;
}

export class SettingsRenderer implements ITreeRenderer {

public static readonly CONTROL_CLASS = 'setting-control-focus-target';
public static readonly CONTROL_SELECTOR = '.' + SettingsRenderer.CONTROL_CLASS;

public static readonly SETTING_KEY_ATTR = 'data-key';

private readonly _onDidClickOverrideElement: Emitter<ISettingOverrideClickEvent> = new Emitter<ISettingOverrideClickEvent>();
public readonly onDidClickOverrideElement: Event<ISettingOverrideClickEvent> = this._onDidClickOverrideElement.event;

private readonly _onDidChangeSetting: Emitter<ISettingChangeEvent> = new Emitter<ISettingChangeEvent>();
public readonly onDidChangeSetting: Event<ISettingChangeEvent> = this._onDidChangeSetting.event;

Expand Down Expand Up @@ -1059,14 +1067,33 @@ export class SettingsRenderer implements ITreeRenderer {
template.descriptionElement.setAttribute('checkbox_label_target_id', baseId + '_setting_item');
}

template.otherOverridesElement.innerHTML = '';

if (element.overriddenScopeList.length) {
const otherOverridesLabel = element.isConfigured ?
localize('alsoConfiguredIn', "Also modified in") :
localize('configuredIn', "Modified in");

template.otherOverridesElement.textContent = `(${otherOverridesLabel}: ${element.overriddenScopeList.join(', ')})`;
} else {
template.otherOverridesElement.textContent = '';
DOM.append(template.otherOverridesElement, $('span', null, `(${otherOverridesLabel}: `));

for (let i = 0; i < element.overriddenScopeList.length; i++) {
let view = DOM.append(template.otherOverridesElement, $('a.modified-scope', null, element.overriddenScopeList[i]));

if (i !== element.overriddenScopeList.length - 1) {
DOM.append(template.otherOverridesElement, $('span', null, ', '));
} else {
DOM.append(template.otherOverridesElement, $('span', null, ')'));
}

DOM.addStandardDisposableListener(view, DOM.EventType.CLICK, (e: IMouseEvent) => {
this._onDidClickOverrideElement.fire({
targetKey: element.setting.key,
scope: element.overriddenScopeList[i]
});
e.preventDefault();
e.stopPropagation();
});
}
}

// Remove tree attributes - sometimes overridden by tree - should be managed there
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,11 @@
font-style: italic;
}

.settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-title .setting-item-overrides a.modified-scope {
text-decoration: underline;
cursor: pointer;
}

.settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-label {
margin-right: 7px;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { Tree } from 'vs/base/parts/tree/browser/treeImpl';
import { collapseAll, expandAll } from 'vs/base/parts/tree/browser/treeUtils';
import 'vs/css!./media/settingsEditor2';
import { localize } from 'vs/nls';
import { ConfigurationTarget, IConfigurationOverrides, IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ConfigurationTarget, IConfigurationOverrides, IConfigurationService, ConfigurationTargetToString } from 'vs/platform/configuration/common/configuration';
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
Expand All @@ -39,7 +39,7 @@ import { attachSuggestEnabledInputBoxStyler, SuggestEnabledInput } from 'vs/work
import { PreferencesEditor } from 'vs/workbench/parts/preferences/browser/preferencesEditor';
import { SettingsTarget, SettingsTargetsWidget } from 'vs/workbench/parts/preferences/browser/preferencesWidgets';
import { commonlyUsedData, tocData } from 'vs/workbench/parts/preferences/browser/settingsLayout';
import { ISettingLinkClickEvent, resolveExtensionsSettings, resolveSettingsTree, SettingsDataSource, SettingsRenderer, SettingsTree, SimplePagedDataSource } from 'vs/workbench/parts/preferences/browser/settingsTree';
import { ISettingLinkClickEvent, resolveExtensionsSettings, resolveSettingsTree, SettingsDataSource, SettingsRenderer, SettingsTree, SimplePagedDataSource, ISettingOverrideClickEvent } from 'vs/workbench/parts/preferences/browser/settingsTree';
import { ISettingsEditorViewState, MODIFIED_SETTING_TAG, ONLINE_SERVICES_SETTING_TAG, parseQuery, SearchResultIdx, SearchResultModel, SettingsTreeGroupElement, SettingsTreeModel, SettingsTreeSettingElement } from 'vs/workbench/parts/preferences/browser/settingsTreeModels';
import { settingsTextInputBorder } from 'vs/workbench/parts/preferences/browser/settingsWidgets';
import { TOCRenderer, TOCTree, TOCTreeModel } from 'vs/workbench/parts/preferences/browser/tocTree';
Expand Down Expand Up @@ -370,7 +370,8 @@ export class SettingsEditor2 extends BaseEditor {
placeholderText: searchBoxLabel,
focusContextKey: this.searchFocusContextKey,
// TODO: Aria-live
}));
})
);

this._register(attachSuggestEnabledInputBoxStyler(this.searchWidget, this.themeService, {
inputBorder: settingsTextInputBorder
Expand Down Expand Up @@ -630,6 +631,15 @@ export class SettingsEditor2 extends BaseEditor {
this.lastFocusedSettingElement = element.setting.key;
this.settingsTree.reveal(element);
}));
this._register(this.settingsTreeRenderer.onDidClickOverrideElement((element: ISettingOverrideClickEvent) => {
if (ConfigurationTargetToString(ConfigurationTarget.WORKSPACE) === element.scope.toUpperCase()) {
this.settingsTargetsWidget.updateTarget(ConfigurationTarget.WORKSPACE);
} else if (ConfigurationTargetToString(ConfigurationTarget.USER) === element.scope.toUpperCase()) {
this.settingsTargetsWidget.updateTarget(ConfigurationTarget.USER);
}

this.searchWidget.setValue(element.targetKey);
}));

this.settingsTreeDataSource = this.instantiationService.createInstance(SimplePagedDataSource,
this.instantiationService.createInstance(SettingsDataSource, this.viewState));
Expand Down

0 comments on commit c09511c

Please sign in to comment.