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 d9b2a57ca7 Present project view files as tree leaves.
     new 1ba07fdf92 Merge pull request #4267 from 
sdedic/lsp/project-files-leaves
d9b2a57ca7 is described below

commit d9b2a57ca736ec7e88693e3ad3489d2a65d93d02
Author: Svata Dedic <svatopluk.de...@oracle.com>
AuthorDate: Wed Jun 22 11:37:46 2022 +0200

    Present project view files as tree leaves.
---
 .../server/explorer/DefaultDecorationsImpl.java    |  1 -
 .../java/lsp/server/explorer/ProjectExplorer.java  | 40 ++++++++++++++++++++--
 .../java/lsp/server/explorer/TreeViewProvider.java |  4 +++
 .../java/lsp/server/explorer/api/TreeItemData.java | 12 +++++++
 4 files changed, 54 insertions(+), 3 deletions(-)

diff --git 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/DefaultDecorationsImpl.java
 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/DefaultDecorationsImpl.java
index 81812ba560..db6069ede1 100644
--- 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/DefaultDecorationsImpl.java
+++ 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/DefaultDecorationsImpl.java
@@ -45,7 +45,6 @@ import org.openide.loaders.DataObjectNotFoundException;
 import org.openide.nodes.AbstractNode;
 import org.openide.nodes.Children;
 import org.openide.nodes.Node;
-import org.openide.util.Exceptions;
 import org.openide.util.lookup.ServiceProvider;
 
 /**
diff --git 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/ProjectExplorer.java
 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/ProjectExplorer.java
index 5c9c811fd9..cff0271854 100644
--- 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/ProjectExplorer.java
+++ 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/ProjectExplorer.java
@@ -26,6 +26,9 @@ import java.util.concurrent.CompletionStage;
 import org.netbeans.api.project.FileOwnerQuery;
 import org.netbeans.api.project.Project;
 import org.netbeans.api.project.ui.OpenProjects;
+import org.netbeans.modules.java.lsp.server.explorer.api.TreeDataListener;
+import org.netbeans.modules.java.lsp.server.explorer.api.TreeDataProvider;
+import org.netbeans.modules.java.lsp.server.explorer.api.TreeItemData;
 import org.netbeans.spi.project.ui.LogicalViewProvider;
 import org.openide.explorer.ExplorerManager;
 import org.openide.filesystems.FileObject;
@@ -43,9 +46,10 @@ import org.openide.util.lookup.ServiceProviders;
  */
 @ServiceProviders({
     @ServiceProvider(path = "Explorers/" + 
ProjectExplorer.ID_PROJECT_LOGICAL_VIEW, service = 
ExplorerManagerFactory.class),
-    @ServiceProvider(path = "Explorers/" + 
ProjectExplorer.ID_PROJECT_LOGICAL_VIEW, service = PathFinder.class)
+    @ServiceProvider(path = "Explorers/" + 
ProjectExplorer.ID_PROJECT_LOGICAL_VIEW, service = PathFinder.class),
+    @ServiceProvider(service = TreeDataProvider.Factory.class, path = 
"Explorers/" + ProjectExplorer.ID_PROJECT_LOGICAL_VIEW)
 })
-public class ProjectExplorer implements ExplorerManagerFactory, PathFinder {
+public class ProjectExplorer implements ExplorerManagerFactory, PathFinder, 
TreeDataProvider.Factory {
     static final String ID_PROJECT_LOGICAL_VIEW = "foundProjects"; // NOI18N
     
     private static final RequestProcessor PROJECT_INIT_RP = new 
RequestProcessor(ProjectExplorer.class.getName());
@@ -112,4 +116,36 @@ public class ProjectExplorer implements 
ExplorerManagerFactory, PathFinder {
         }
         return null;
     }
+
+    @Override
+    public TreeDataProvider createProvider(String treeId) {
+        return new ProjectDecorator();
+    }
+    
+    static class ProjectDecorator implements TreeDataProvider {
+
+        @Override
+        public TreeItemData createDecorations(Node n, boolean expanded) {
+            TreeItemData tid = new TreeItemData();
+            FileObject f = n.getLookup().lookup(FileObject.class);
+            if (f != null && f.isData()) {
+                // set leaf status for all files in the projects view.
+                tid.makeLeaf();
+            }
+            return tid;
+        }
+
+        @Override
+        public void addTreeItemDataListener(TreeDataListener l) {
+        }
+
+        @Override
+        public void removeTreeItemDataListener(TreeDataListener l) {
+        }
+
+        @Override
+        public void nodeReleased(Node n) {
+            
+        }
+    }
 }
diff --git 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/TreeViewProvider.java
 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/TreeViewProvider.java
index 4f67cccd64..5ed7cbfdcb 100644
--- 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/TreeViewProvider.java
+++ 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/TreeViewProvider.java
@@ -44,6 +44,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionStage;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import org.netbeans.modules.java.lsp.server.explorer.TreeItem.CollapsibleState;
 import org.netbeans.modules.java.lsp.server.explorer.TreeItem.IconDescriptor;
 import org.openide.explorer.ExplorerManager;
 import org.openide.nodes.AbstractNode;
@@ -399,6 +400,9 @@ public abstract class TreeViewProvider {
         v = data.getContextValues() == null ? "" : String.join(" ", 
data.getContextValues()); // NOI18N
 
         TreeItem ti = new TreeItem(id, n, expanded, v);
+        if (data.isLeaf()) {
+            ti.collapsibleState = CollapsibleState.None;
+        }
         
         if (data.getIconImage() != null && data.getIconImage() != 
DUMMY_NODE.getIcon(BeanInfo.ICON_COLOR_16x16)) {
             TreeNodeRegistry.ImageDataOrIndex idoi = 
nodeRegistry.imageOrIndex(data.getIconImage());
diff --git 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/api/TreeItemData.java
 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/api/TreeItemData.java
index 7857c635d2..e6fa4da8da 100644
--- 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/api/TreeItemData.java
+++ 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/explorer/api/TreeItemData.java
@@ -39,6 +39,7 @@ public final class TreeItemData {
     private String[] contextValues;
     private String command;
     private URI resourceURI;
+    private boolean leaf;
     
     static {
         try {
@@ -51,6 +52,16 @@ public final class TreeItemData {
     public TreeItemData() {
     }
 
+    public boolean isLeaf() {
+        return leaf;
+    }
+
+    public TreeItemData makeLeaf() {
+        this.leaf = true;
+        return this;
+    }
+    
+
     public URI getResourceURI() {
         return resourceURI;
     }
@@ -122,6 +133,7 @@ public final class TreeItemData {
         if (data.getIconImage() != null) {
             setIconImage(data.getIconImage());
         }
+        leaf |= data.isLeaf();
         return this;
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

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

Reply via email to