This is an automated email from the ASF dual-hosted git repository.
sdedic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new d5b874f0f9 Display DB welcome only when no connections are defined.
new d2f4382da8 Merge pull request #5613 from
sdedic/lsp/welcome-after-dbinit
d5b874f0f9 is described below
commit d5b874f0f9f76802c92c993eec96eb0caf1a1bd3
Author: Svata Dedic <[email protected]>
AuthorDate: Mon Mar 6 10:14:16 2023 +0100
Display DB welcome only when no connections are defined.
---
java/java.lsp.server/vscode/package.json | 3 ++-
java/java.lsp.server/vscode/src/explorer.ts | 35 +++++++++++++++++++++-------
java/java.lsp.server/vscode/src/extension.ts | 8 +++++++
3 files changed, 36 insertions(+), 10 deletions(-)
diff --git a/java/java.lsp.server/vscode/package.json
b/java/java.lsp.server/vscode/package.json
index 59eaea0505..b71c9c8fbc 100644
--- a/java/java.lsp.server/vscode/package.json
+++ b/java/java.lsp.server/vscode/package.json
@@ -88,7 +88,8 @@
"viewsWelcome": [
{
"view": "database.connections",
- "contents": "No database connections
found.\n[Add Database Connection](command:db.add.connection)\n[Add Oracle
Autonomous
DB](command:nbls:Tools:org.netbeans.modules.cloud.oracle.actions.AddADBAction)"
+ "contents": "No database connections
found.\n[Add Database Connection](command:db.add.connection)\n[Add Oracle
Autonomous
DB](command:nbls:Tools:org.netbeans.modules.cloud.oracle.actions.AddADBAction)",
+ "when": "nb.database.view.active"
}
],
"configuration": {
diff --git a/java/java.lsp.server/vscode/src/explorer.ts
b/java/java.lsp.server/vscode/src/explorer.ts
index c6e521ae45..ba4a252a05 100644
--- a/java/java.lsp.server/vscode/src/explorer.ts
+++ b/java/java.lsp.server/vscode/src/explorer.ts
@@ -279,11 +279,13 @@ export class TreeViewService extends vscode.Disposable {
export interface TreeItemDecorator<T> extends vscode.Disposable {
decorateTreeItem(element: T, item : vscode.TreeItem): vscode.TreeItem |
Thenable<vscode.TreeItem>;
+ decorateChildren(element: T, children: Visualizer[]): Visualizer[] |
Thenable<Visualizer[]>;
}
export interface CustomizableTreeDataProvider<T> extends
vscode.TreeDataProvider<T> {
fireItemChange(item? : T) : void;
addItemDecorator(deco : TreeItemDecorator<T>) : vscode.Disposable;
+ getRoot() : T;
}
class VisualizerProvider extends vscode.Disposable implements
CustomizableTreeDataProvider<Visualizer> {
@@ -583,6 +585,8 @@ class VisualizerProvider extends vscode.Disposable
implements CustomizableTreeDa
this.log.appendLine(`Doing getChildren on ${e?.idstring()}`);
}
+ let decos : TreeItemDecorator<Visualizer>[] = [...this.decorators];
+ const parent = e || this.root;
async function collectResults(list : Visualizer[], arr: any, element:
Visualizer): Promise<Visualizer[]> {
let res : Visualizer[] = [];
let now : Visualizer[] | undefined;
@@ -594,6 +598,25 @@ class VisualizerProvider extends vscode.Disposable
implements CustomizableTreeDa
res.push(v);
}
}
+
+ if (decos.length > 0) {
+ async function f(orig: Visualizer[]) : Promise<Visualizer[]> {
+ const deco = decos.shift();
+ if (!deco) {
+ return orig;
+ }
+ // decorateChildren(element: T, item : Visualizer, children:
Visualizer[]): Visualizer[] | Thenable<Visualizer[]>;
+ const decorated = deco.decorateChildren(parent, orig);
+ if (Array.isArray(decorated)) {
+ return f(decorated);
+ } else {
+ return (decorated as Thenable<Visualizer[]>).then(f);
+ }
+ }
+
+ res = await f(res);
+ }
+
now = element.updateChildren(res, self);
for (let i = 0; i < now.length; i++) {
const v = now[i];
@@ -605,15 +628,9 @@ class VisualizerProvider extends vscode.Disposable
implements CustomizableTreeDa
}
return self.wrap((list) => self.queryVisualizer(e, list, () => {
- if (e) {
- return this.client.sendRequest(NodeInfoRequest.children, { nodeId :
e.data.id}).then(async (arr) => {
- return collectResults(list, arr, e);
- });
- } else {
- return this.client.sendRequest(NodeInfoRequest.children, { nodeId:
this.root.data.id}).then(async (arr) => {
- return collectResults(list, arr, this.root);
- });
- }
+ return this.client.sendRequest(NodeInfoRequest.children, { nodeId :
parent.data.id}).then(async (arr) => {
+ return collectResults(list, arr, parent);
+ });
}
));
}
diff --git a/java/java.lsp.server/vscode/src/extension.ts
b/java/java.lsp.server/vscode/src/extension.ts
index f74dde140b..745bb50458 100644
--- a/java/java.lsp.server/vscode/src/extension.ts
+++ b/java/java.lsp.server/vscode/src/extension.ts
@@ -980,12 +980,20 @@ function doActivateWithJDK(specifiedJDK: string | null,
context: ExtensionContex
class Decorator implements TreeItemDecorator<Visualizer> {
private provider : CustomizableTreeDataProvider<Visualizer>;
private setCommand : vscode.Disposable;
+ private initialized: boolean = false;
constructor(provider : CustomizableTreeDataProvider<Visualizer>,
client : NbLanguageClient) {
this.provider = provider;
this.setCommand =
vscode.commands.registerCommand('java.local.db.set.preferred.connection', (n)
=> this.setPreferred(n));
}
+ decorateChildren(element: Visualizer, children: Visualizer[]):
Visualizer[] {
+ if (element.id == this.provider.getRoot().id) {
+ vscode.commands.executeCommand('setContext',
'nb.database.view.active', children.length == 0);
+ }
+ return children;
+ }
+
async decorateTreeItem(vis : Visualizer, item : vscode.TreeItem) :
Promise<vscode.TreeItem> {
if (!(item.contextValue &&
item.contextValue.match(/class:ddl.DBConnection/))) {
return item;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists