From 5445d7d98d34da85dcb620e712ca5a08689004ea Mon Sep 17 00:00:00 2001 From: Valeriy Svydenko Date: Mon, 11 Feb 2019 17:30:53 +0200 Subject: [PATCH] [plug-in][java][preferences]use files.exclude preference instead of navigator.exclude Signed-off-by: Valeriy Svydenko --- CHANGELOG.md | 1 + .../src/browser/filesystem-preferences.ts | 7 +++++ .../navigator/src/browser/navigator-filter.ts | 28 +++++++++++-------- .../src/browser/navigator-preferences.ts | 9 ------ 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef04823b1922e..db5e0128c3492 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Breaking changes: - the type of `combinedSchema` property is changed from `PreferenceSchema` to `PreferenceDataSchema`. - the return type of `getCombinedSchema` function is changed from `PreferenceSchema` to `PreferenceDataSchema`. - `affects` function is added to `PreferenceChangeEvent` and `PreferenceChange` interface. +- `navigator.exclude` preference is renamed to `files.exclude` [#4274](https://github.com/theia-ide/theia/pull/4274) ## v0.3.19 diff --git a/packages/filesystem/src/browser/filesystem-preferences.ts b/packages/filesystem/src/browser/filesystem-preferences.ts index 9d18868760843..4adacc6dd02ef 100644 --- a/packages/filesystem/src/browser/filesystem-preferences.ts +++ b/packages/filesystem/src/browser/filesystem-preferences.ts @@ -37,12 +37,19 @@ export const filesystemPreferenceSchema: PreferenceSchema = { '**/node_modules/**': true }, 'scope': 'resource' + }, + 'files.exclude': { + 'type': 'object', + 'default': { '**/.git': true, '**/.svn': true, '**/.hg': true, '**/CVS': true, '**/.DS_Store': true }, + 'description': 'Configure glob patterns for excluding files and folders.', + 'scope': 'resource' } } }; export interface FileSystemConfiguration { 'files.watcherExclude': { [globPattern: string]: boolean }; + 'files.exclude': { [key: string]: boolean }; } export const FileSystemPreferences = Symbol('FileSystemPreferences'); diff --git a/packages/navigator/src/browser/navigator-filter.ts b/packages/navigator/src/browser/navigator-filter.ts index 45908658a0658..e3f4b0853357a 100644 --- a/packages/navigator/src/browser/navigator-filter.ts +++ b/packages/navigator/src/browser/navigator-filter.ts @@ -19,29 +19,34 @@ import { Minimatch } from 'minimatch'; import { MaybePromise } from '@theia/core/lib/common/types'; import { Event, Emitter } from '@theia/core/lib/common/event'; import { PreferenceChangeEvent } from '@theia/core/lib/browser/preferences'; +import { FileSystemPreferences, FileSystemConfiguration } from '@theia/filesystem/lib/browser/filesystem-preferences'; import { FileNavigatorPreferences, FileNavigatorConfiguration } from './navigator-preferences'; +const FILES_EXCLUDE_PREFERENCE: keyof FileSystemConfiguration = 'files.exclude'; + /** * Filter for omitting elements from the navigator. For more details on the exclusion patterns, * one should check either the manual with `man 5 gitignore` or just [here](https://git-scm.com/docs/gitignore). */ @injectable() export class FileNavigatorFilter { - protected readonly emitter: Emitter = new Emitter(); protected filterPredicate: FileNavigatorFilter.Predicate; - protected showHiddenFiles: boolean; + @inject(FileSystemPreferences) + protected readonly filesPreferences: FileSystemPreferences; + constructor( @inject(FileNavigatorPreferences) protected readonly preferences: FileNavigatorPreferences ) { } @postConstruct() protected async init(): Promise { - this.filterPredicate = this.createFilterPredicate(this.preferences['navigator.exclude']); - this.preferences.onPreferenceChanged(this.onPreferenceChanged.bind(this)); + this.filterPredicate = this.createFilterPredicate(this.filesPreferences[FILES_EXCLUDE_PREFERENCE]); + this.filesPreferences.onPreferenceChanged(event => this.onFilesPreferenceChanged(event)); + this.preferences.onPreferenceChanged(event => this.onPreferenceChanged(event)); } async filter(items: MaybePromise): Promise { @@ -60,25 +65,26 @@ export class FileNavigatorFilter { this.emitter.fire(undefined); } - protected onPreferenceChanged(event: PreferenceChangeEvent): void { - let hasChanged = false; + protected onFilesPreferenceChanged(event: PreferenceChangeEvent): void { const { preferenceName, newValue } = event; - if (preferenceName === 'navigator.exclude') { + if (preferenceName === FILES_EXCLUDE_PREFERENCE) { this.filterPredicate = this.createFilterPredicate(newValue as FileNavigatorFilter.Exclusions | undefined || {}); - hasChanged = true; - } - if (hasChanged) { this.fireFilterChanged(); } } + protected onPreferenceChanged(event: PreferenceChangeEvent): void { + } + protected createFilterPredicate(exclusions: FileNavigatorFilter.Exclusions): FileNavigatorFilter.Predicate { return new FileNavigatorFilterPredicate(this.interceptExclusions(exclusions)); } toggleHiddenFiles(): void { this.showHiddenFiles = !this.showHiddenFiles; - this.filterPredicate = this.createFilterPredicate(this.preferences['navigator.exclude'] || {}); + const filesExcludes = this.filesPreferences[FILES_EXCLUDE_PREFERENCE]; + + this.filterPredicate = this.createFilterPredicate(filesExcludes || {}); this.fireFilterChanged(); } diff --git a/packages/navigator/src/browser/navigator-preferences.ts b/packages/navigator/src/browser/navigator-preferences.ts index 676c03b78e998..ce6fa5d563497 100644 --- a/packages/navigator/src/browser/navigator-preferences.ts +++ b/packages/navigator/src/browser/navigator-preferences.ts @@ -26,21 +26,12 @@ export const FileNavigatorConfigSchema: PreferenceSchema = { type: 'boolean', description: 'Selects file under editing in the navigator.', default: true - }, - 'navigator.exclude': { - type: 'object', - description: ` -Configure glob patterns for excluding files and folders from the navigator. A resource that matches any of the enabled patterns, will be filtered out from the navigator. For more details about the exclusion patterns, see: \`man 5 gitignore\`.`, - default: { - '**/.git': true - } } } }; export interface FileNavigatorConfiguration { 'navigator.autoReveal': boolean; - 'navigator.exclude': { [key: string]: boolean }; } export const FileNavigatorPreferences = Symbol('NavigatorPreferences');