package com.example.client.service; import com.example.client.Main; import com.example.server.menu.model.Menu; import com.example.server.menu.service.SysMenuService; import com.example.server.utils.CacheUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import java.util.List; import java.util.stream.Collectors; @Service public class MenuService { @Autowired private SysMenuService menuService; @Autowired private Level1ManageService level1ManageService; @Autowired private Level1ViewService level1ViewService; @Autowired private Level2ManageService level2ManageService; @Autowired private Level2ViewService level2ViewService; @Autowired private Level3ManageService level3ManageService; @Autowired private Level3ViewService level3ViewService; @Autowired private Level3View2Service level3View2Service; @Autowired private TrackRecordManageService trackRecordManageService; @Autowired private HandoverService handoverService; @Autowired private DataImportManageService dataImportManageService; @Autowired private DataExportManageService dataExportManageService; @Autowired private UserManageService userManageService; @Autowired private DismantTrackService dismantTrackService; @Autowired private SubunitService subunitService; @Autowired private TeamGroupManageService teamGroupManageService; @Autowired private ConfigManageService configManageService; @Autowired private Main main; private Long nodeId; public JTree createTree(Integer width,Integer height,JFrame frame) { Menu node = new Menu(); node.setId(0L); node.setMenuName("默认根节点"); DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(node); String site = (String) CacheUtils.get("site", "site"); List list = menuService.getList(site); createSubNode(rootNode, list); // 使用根节点创建树组件 JTree tree = new JTree(rootNode); tree.setRootVisible(true); tree.setRowHeight(25); if (!rootNode.isLeaf()) { tree.expandRow(1); } tree.setRootVisible(false); // 设置树显示根节点句柄 tree.setShowsRootHandles(true); //expandAll(tree, new TreePath(rootNode), true); // 设置树节点可编辑 tree.setEditable(false); // 设置节点选中监听器 tree.addTreeSelectionListener(treeSelectionEvent -> { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode != rootNode) { Menu nodeObject = (Menu) selectedNode.getUserObject(); String nodeName = nodeObject.getMenuName(); if (!main.isSelected(nodeName)) { // 根据选择的菜单项显示对应的标签页 if (nodeName.equals("一级网络图管理")) { JPanel level1Manage = level1ManageService.createTable(width, height, frame); main.showTab("一级网络图管理", level1Manage, tree); } else if (nodeName.equals("一级网络图查看")) { JPanel level1View = level1ViewService.createTable(width, height,frame); main.showTab("一级网络图查看", level1View, tree); } else if (nodeName.equals("二级网络图管理")) { JPanel level2Manage = level2ManageService.createTable(width, height, frame); main.showTab("二级网络图管理", level2Manage, tree); } else if (nodeName.equals("二级网络图查看")) { JPanel level2View = level2ViewService.createTable(width, height,frame); main.showTab("二级网络图查看", level2View, tree); } else if (nodeName.equals("三级网络图管理")) { JPanel level3Manage = level3ManageService.createTable(width, height, frame); main.showTab("三级网络图管理", level3Manage, tree); } else if (nodeName.equals("三级网络图查看")) { JPanel level3View = level3View2Service.createTable(width, height,frame); main.showTab("三级网络图查看", level3View, tree); } else if (nodeName.equals("项目进度表")) { JPanel trackRecord = trackRecordManageService.createTable(width, height, frame); main.showTab("项目进度表", trackRecord, tree); } else if (nodeName.equals("交接情况")) { JPanel handover = handoverService.createTable(width, height, frame); main.showTab("交接情况", handover, tree); } else if (nodeName.equals("数据导入")) { JPanel dataImport = dataImportManageService.createTable(width, height, frame); main.showTab("数据导入", dataImport, tree); } else if (nodeName.equals("数据导出")) { JPanel dataExport = dataExportManageService.createTable(width, height, frame); main.showTab("数据导出", dataExport, tree); }else if (nodeName.equals("用户管理")) { JPanel user = userManageService.createTable(width, height, frame); main.showTab("用户管理", user, tree); } else if (nodeName.equals("拆卸进度表")) { JPanel dismantTrack = dismantTrackService.createTable(width, height, frame); main.showTab("拆卸进度表", dismantTrack, tree); }else if (nodeName.equals("子部件配置")) { JPanel subunit = subunitService.createTable(width, height, frame); main.showTab("子部件配置", subunit, tree); }else if (nodeName.equals("专业管理")) { JPanel teamGroup = teamGroupManageService.createTable(width, height, frame); main.showTab("专业管理", teamGroup, tree); }else if (nodeName.equals("平台配置")) { JPanel config = configManageService.createTable(width, height, frame); main.showTab("平台配置", config, tree); } } } }); return tree; } public void createSubNode(DefaultMutableTreeNode pNode, List list) { Menu nodeObject = (Menu) pNode.getUserObject(); Long pid = nodeObject.getId(); List fileDirList = list.stream().filter(a -> a.getPid().equals(pid)).collect(Collectors.toList()); for (Menu treeNode : fileDirList) { DefaultMutableTreeNode node = new DefaultMutableTreeNode(treeNode); pNode.add(node); createSubNode(node, list); } } /* public DefaultMutableTreeNode getRootNote() { Menu node = new Menu(); node.setId(0L); node.setMenuName("默认根节点"); DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(node); List list = menuService.getList(); if (list == null) { throw new IllegalStateException("菜单数据为空"); } createSubNode(rootNode, list); return rootNode; }*/ public Long getNodeId() { return nodeId; } }