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