Skip to content

Commit b87cfda

Browse files
committed
data_node
1 parent 1125d6b commit b87cfda

File tree

17 files changed

+530
-698
lines changed

17 files changed

+530
-698
lines changed

lua/java-deps.lua

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
local jdtls = require("java-deps.java.jdtls")
22
local config = require("java-deps.config")
33
local View = require("java-deps.view")
4+
local data_node = require("java-deps.views.data_node")
45

56
local M = {
67
view = nil,
@@ -14,10 +15,17 @@ local M = {
1415
},
1516
}
1617

17-
function handle_projects(projects)
18+
local function handle_projects(projects)
1819
if not projects or #projects < 1 then
1920
return
2021
end
22+
local project_nodes = {}
23+
for _, project in ipairs(projects) do
24+
if project then
25+
local root = data_node.createNode(project)
26+
table.insert(project_nodes, root)
27+
end
28+
end
2129
end
2230

2331
function M.toggle_outline()
@@ -32,8 +40,10 @@ function M.open_outline()
3240
if not M.view:is_open() then
3341
M.state.code_buf = vim.api.nvim_get_current_buf()
3442
local uri = vim.uri_from_fname(jdtls.root_dir())
35-
local resp = jdtls.getProjects(uri)
36-
handle_projects(resp)
43+
vim.defer_fn(function()
44+
local resp = jdtls.getProjects(uri)
45+
handle_projects(resp)
46+
end, 0)
3747
end
3848
end
3949

lua/java-deps/folding.lua

Lines changed: 0 additions & 44 deletions
This file was deleted.
Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
1-
local nodeData = require("java-deps.java.nodeData")
2-
local NodeKind = nodeData.NodeKind
3-
local INodeData = nodeData.INodeData
1+
local _n = require("java-deps.java.nodeData")
2+
local NodeKind = _n.NodeKind
3+
local INodeData = _n.INodeData
4+
local M = {}
45

56
---@class HierarchicalPackageNodeData: INodeData
67
---@field displayName string
78
---@field name string
89
---@field nodeData? INodeData
910
---@field children HierarchicalPackageNodeData[]
10-
local HieararchicalPackageNodeData = nodeData.INodeData:new()
11-
HieararchicalPackageNodeData.__index = HieararchicalPackageNodeData
11+
local HierarchicalPackageNodeData = INodeData:new()
12+
HierarchicalPackageNodeData.__index = HierarchicalPackageNodeData
1213

1314
---@param displayName string
1415
---@param parentName? string
15-
function HieararchicalPackageNodeData:new(displayName, parentName)
16+
---@return HierarchicalPackageNodeData
17+
function HierarchicalPackageNodeData:new(displayName, parentName)
1618
local name = (parentName == nil or parentName == "") and displayName or parentName .. "." .. displayName
17-
local base = INodeData:new()
18-
base.displayName = displayName
19-
base.name = name
20-
base.children = {}
21-
return setmetatable(base, self)
19+
return setmetatable({
20+
displayName = displayName,
21+
name = name,
22+
children = {},
23+
}, self)
2224
end
2325

24-
function HieararchicalPackageNodeData:compressTree()
26+
function HierarchicalPackageNodeData:compressTree()
2527
while self.name ~= "" and #self.children == 1 and not self:isPackage() do
2628
local child = self.children[1]
2729
self.name = self.name .. "." .. child.displayName
@@ -35,9 +37,10 @@ function HieararchicalPackageNodeData:compressTree()
3537
end
3638
---@param packages string[]
3739
---@param _nodeData INodeData
38-
function HieararchicalPackageNodeData:addSubPackage(packages, _nodeData)
40+
function HierarchicalPackageNodeData:addSubPackage(packages, _nodeData)
3941
if #packages == 0 then
4042
self.nodeData = _nodeData
43+
-- TODO
4144
return
4245
end
4346
local subPackageDisplayName = table.remove(packages, 1)
@@ -51,32 +54,45 @@ function HieararchicalPackageNodeData:addSubPackage(packages, _nodeData)
5154
if childNode then
5255
childNode:addSubPackage(packages, _nodeData)
5356
else
54-
local newNode = HieararchicalPackageNodeData:new(subPackageDisplayName, self.name)
57+
local newNode = HierarchicalPackageNodeData:new(subPackageDisplayName, self.name)
5558
newNode:addSubPackage(packages, _nodeData)
5659
table.insert(self.children, newNode)
5760
end
5861
end
59-
function HieararchicalPackageNodeData:getUri()
62+
function HierarchicalPackageNodeData:get_getUri()
6063
return self.nodeData and self.nodeData.uri
6164
end
62-
function HieararchicalPackageNodeData:moduleName()
65+
function HierarchicalPackageNodeData:get_moduleName()
6366
return self.nodeData and self.nodeData.moduleName
6467
end
6568

66-
function HieararchicalPackageNodeData:path()
69+
function HierarchicalPackageNodeData:get_path()
6770
return self.nodeData and self.nodeData.path
6871
end
6972

70-
function HieararchicalPackageNodeData:kind()
73+
function HierarchicalPackageNodeData:get_kind()
7174
return self.nodeData and self.nodeData.kind or NodeKind.Package
7275
end
7376

74-
function HieararchicalPackageNodeData:isPackage()
77+
function HierarchicalPackageNodeData:isPackage()
7578
return self.nodeData ~= nil
7679
end
7780

78-
function HieararchicalPackageNodeData:handlerIdentifier()
81+
function HierarchicalPackageNodeData:handlerIdentifier()
7982
return self.nodeData and self.nodeData.handlerIdentifier
8083
end
84+
M.HierarchicalPackageNodeData = HierarchicalPackageNodeData
8185

82-
return HieararchicalPackageNodeData
86+
---@param packageList INodeData[]
87+
---@return HierarchicalPackageNodeData
88+
M.createHierarchicalNodeDataByPackageList = function(packageList)
89+
local result = HierarchicalPackageNodeData:new("", "")
90+
for _, nodeData in ipairs(packageList) do
91+
local packages = vim.split(nodeData.name, "%.")
92+
result:addSubPackage(packages, nodeData)
93+
end
94+
result:compressTree()
95+
return result
96+
end
97+
98+
return M

lua/java-deps/java/nodeData.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ function INodeData:new()
3636
return setmetatable({}, self)
3737
end
3838

39+
function INodeData:print()
40+
print(vim.inspect(self))
41+
end
42+
3943
M.INodeData = INodeData
4044

4145
return M

lua/java-deps/parser.lua

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,20 @@ local folding = require("java-deps.folding")
44
local t_utils = require("java-deps.utils.table")
55
local ui = require("java-deps.ui")
66
local M = {}
7-
8-
local function parse_result(result, depth, hierarchy, parent)
7+
---@param result DataNode[]
8+
---@param depth integer
9+
---@return table
10+
local function parse_result(result, depth)
911
local ret = nil
1012

1113
for index, value in pairs(result) do
12-
local hir = hierarchy or {}
13-
-- how many parents this node has, 1 is the lowest value because its
14-
-- easier to work it
1514
local level = depth or 1
1615
-- whether this node is the last in its group
1716
local isLast = index == #result
1817

1918
local node = {
20-
entryKind = value.entryKind,
21-
metaData = value.metaData,
22-
handlerIdentifier = value.handlerIdentifier,
2319
kind = value.kind,
24-
uri = value.uri,
25-
path = value.path,
26-
name = value.name,
27-
icon = symbols.icon_from_kind(value),
2820
depth = level,
29-
isLast = isLast,
30-
hierarchy = hir,
3121
parent = parent,
3222
}
3323
if ret == nil then
@@ -41,7 +31,7 @@ local function parse_result(result, depth, hierarchy, parent)
4131
-- copy by value because we dont want it messing with the hir table
4232
local child_hir = t_utils.array_copy(hir)
4333
table.insert(child_hir, isLast)
44-
children = parse_result(value.children, level + 1, child_hir, node)
34+
children = parse_result(value._childrenNodes, level + 1, child_hir, node)
4535
end
4636

4737
node.children = children

lua/java-deps/preview.lua

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -172,30 +172,6 @@ local function set_bg_hl()
172172
vim.api.nvim_win_set_option(state.hover_win, "winblend", winblend)
173173
end
174174

175-
local function show_preview()
176-
if state.preview_win == nil and state.preview_buf == nil then
177-
state.preview_buf = vim.api.nvim_create_buf(false, true)
178-
vim.api.nvim_buf_attach(state.preview_buf, false, {
179-
on_detach = function()
180-
state.preview_buf = nil
181-
state.preview_win = nil
182-
end,
183-
})
184-
local offsets = get_offset()
185-
state.preview_win = vim.api.nvim_open_win(state.preview_buf, false, {
186-
relative = "win",
187-
width = 50,
188-
height = get_height(),
189-
bufpos = { 0, 0 },
190-
row = offsets[1],
191-
col = offsets[2],
192-
border = config.options.border,
193-
})
194-
setup_preview_buf()
195-
else
196-
update_preview()
197-
end
198-
end
199175

200176
local function show_hover()
201177
if state.hover_win == nil and state.hover_buf == nil then

lua/java-deps/providers/init.lua

Lines changed: 0 additions & 32 deletions
This file was deleted.

lua/java-deps/providers/nvim-lsp.lua

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)