You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by sd...@apache.org on 2023/03/07 13:13:25 UTC

[netbeans] branch master updated: Display DB welcome only when no connections are defined.

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 <sv...@oracle.com>
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: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists