Skip to content

Commit ed676ce

Browse files
authored
Add sync settings for java dependency viewer (#156)
* Update sync settings for dependency viewer.
1 parent 0eebe84 commit ed676ce

9 files changed

+82
-9
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ out/
1010
vscode-java-*.vsix
1111
packages/
1212
dist
13-
.settings
13+
**/.settings

javaConfig.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"projects": [
3+
"./jdtls.ext/"
4+
],
5+
"targetPlatform": "./jdtls.ext/target.target"
6+
}
File renamed without changes.

package-lock.json

+21-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+5
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@
9999
"description": "%configuration.java.dependency.syncWithFolderExplorer%",
100100
"default": true
101101
},
102+
"java.dependency.autoRefresh": {
103+
"type": "boolean",
104+
"description": "%configuration.java.dependency.autoRefresh%",
105+
"default": true
106+
},
102107
"java.dependency.packagePresentation": {
103108
"type": "string",
104109
"enum": [

package.nls.json

+1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
"configuration.java.dependency.title": "Java Dependency Configuration",
1111
"configuration.java.dependency.showOutline": "Enable show outline in the Java Dependency explorer",
1212
"configuration.java.dependency.syncWithFolderExplorer": "Synchronize dependency viewer selection with folder explorer",
13+
"configuration.java.dependency.autoRefresh": "Synchronize dependency viewer with changes",
1314
"configuration.java.dependency.packagePresentation": "Package presentation mode: flat or hierarchical"
1415
}

package.nls.zh.json

+1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
"configuration.java.dependency.title": "Java 依赖管理配置",
1111
"configuration.java.dependency.showOutline": "在 Java 依赖项资源管理器中显示类成员大纲",
1212
"configuration.java.dependency.syncWithFolderExplorer": "在 Java 依赖项资源管理器中同步关联当前打开的文件",
13+
"configuration.java.dependency.autoRefresh": "在 Java 依赖项资源管理器中自动同步修改",
1314
"configuration.java.dependency.packagePresentation": "Java 包显示方式: 平行显示或者分层显示"
1415
}

src/fileWather.ts

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT license.
3+
4+
import { Disposable, workspace, commands, FileSystemWatcher } from "vscode";
5+
import { Commands } from "./commands";
6+
7+
export class SyncHandler {
8+
9+
private static javaFileContentWatcher: Disposable = null;
10+
11+
private static javaFileSystemWatcher: FileSystemWatcher = null;
12+
13+
public static updateFileWatcher(autoRefresh: boolean): void {
14+
if (autoRefresh) {
15+
SyncHandler.javaFileContentWatcher = workspace.onDidChangeTextDocument((event) => {
16+
if (event.document.languageId === 'java') {
17+
SyncHandler.refresh();
18+
}
19+
});
20+
SyncHandler.javaFileSystemWatcher = workspace.createFileSystemWatcher('**/*.{java}');
21+
SyncHandler.javaFileSystemWatcher.onDidChange(SyncHandler.refresh);
22+
SyncHandler.javaFileSystemWatcher.onDidCreate(SyncHandler.refresh);
23+
SyncHandler.javaFileSystemWatcher.onDidDelete(SyncHandler.refresh);
24+
} else {
25+
if (SyncHandler.javaFileContentWatcher) {
26+
SyncHandler.javaFileContentWatcher.dispose();
27+
}
28+
if (SyncHandler.javaFileSystemWatcher) {
29+
SyncHandler.javaFileSystemWatcher.dispose();
30+
}
31+
}
32+
}
33+
34+
private static refresh(): void {
35+
commands.executeCommand(Commands.VIEW_PACKAGE_REFRESH);
36+
}
37+
}

src/settings.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

4-
import { commands, ConfigurationChangeEvent, ExtensionContext, workspace, WorkspaceConfiguration } from "vscode";
4+
import { commands, ConfigurationChangeEvent, ExtensionContext, workspace, WorkspaceConfiguration, window, DocumentHighlight, Disposable } from "vscode";
55
import { instrumentOperation } from "vscode-extension-telemetry-wrapper";
66
import { Commands } from "./commands";
7+
import { SyncHandler } from "./fileWather";
78

89
export class Settings {
910

@@ -20,9 +21,13 @@ export class Settings {
2021
this._dependencyConfig = updatedConfig;
2122
commands.executeCommand(Commands.VIEW_PACKAGE_REFRESH);
2223
} else {
24+
if (updatedConfig.autoRefresh !== this._dependencyConfig.autoRefresh) {
25+
SyncHandler.updateFileWatcher(updatedConfig.autoRefresh);
26+
}
2327
this._dependencyConfig = updatedConfig;
2428
}
2529
}));
30+
SyncHandler.updateFileWatcher(Settings.autoRefresh());
2631

2732
context.subscriptions.push(commands.registerCommand(Commands.VIEW_PACKAGE_LINKWITHFOLDER,
2833
instrumentOperation(Commands.VIEW_PACKAGE_LINKWITHFOLDER, Settings.linkWithFolderCommand)));
@@ -57,6 +62,10 @@ export class Settings {
5762
return this._dependencyConfig.get("showOutline");
5863
}
5964

65+
public static autoRefresh(): boolean {
66+
return this._dependencyConfig.get("autoRefresh");
67+
}
68+
6069
public static syncWithFolderExplorer(): boolean {
6170
return this._dependencyConfig.get("syncWithFolderExplorer");
6271
}

0 commit comments

Comments
 (0)