diff --git a/dillon-ui/dillon-ui-fx/pom.xml b/dillon-ui/dillon-ui-fx/pom.xml index a10d9c8..0100d85 100644 --- a/dillon-ui/dillon-ui-fx/pom.xml +++ b/dillon-ui/dillon-ui-fx/pom.xml @@ -17,7 +17,7 @@ ${java.version} ${java.version} UTF-8 - 22.0.1 + 22.0.2 1.54.4 2.0.1 diff --git a/dillon-ui/dillon-ui-fx/src/test/java/App.java b/dillon-ui/dillon-ui-fx/src/test/java/App.java new file mode 100644 index 0000000..258989c --- /dev/null +++ b/dillon-ui/dillon-ui-fx/src/test/java/App.java @@ -0,0 +1,5 @@ +public class App { + public static void main(String[] args) { + SimpleJavaFXApp.main(args); + } +} diff --git a/dillon-ui/dillon-ui-fx/src/test/java/SimpleJavaFXApp.java b/dillon-ui/dillon-ui-fx/src/test/java/SimpleJavaFXApp.java new file mode 100644 index 0000000..2f0a176 --- /dev/null +++ b/dillon-ui/dillon-ui-fx/src/test/java/SimpleJavaFXApp.java @@ -0,0 +1,67 @@ +import javafx.application.Application; +import javafx.application.Platform; +import javafx.css.PseudoClass; +import javafx.scene.Scene; +import javafx.scene.control.Label; +import javafx.scene.layout.StackPane; +import javafx.stage.Stage; +import javafx.stage.Window; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +public class SimpleJavaFXApp extends Application { + + @Override + public void start(Stage stage) throws Exception { + + + + + // 创建一个标签并设置文本 + Label label = new Label("Hello, JavaFX!"); + + // 创建一个根布局 + StackPane root = new StackPane(); + root.getChildren().add(label); + + // 创建一个场景,设置根布局和窗口大小 + Scene scene = new Scene(root, 300, 200); + + // 设置窗口标题 + stage.setTitle("Simple JavaFX App"); + + // 设置场景到窗口 + stage.setScene(scene); + +// +// Method tkStageGetter = Window.class.getDeclaredMethod("getPeer");; +// +// tkStageGetter.setAccessible(true); +// Object tkStage = tkStageGetter.invoke(stage); +// Method getPlatformWindow = tkStage.getClass().getDeclaredMethod("getPlatformWindow"); +//// getPlatformWindow.setAccessible(true); +//// Object platformWindow = getPlatformWindow.invoke(tkStage); +// Method getNativeHandle = platformWindow.getClass().getMethod("getNativeHandle"); +// getNativeHandle.setAccessible(true); +// Object nativeHandle = getNativeHandle.invoke(platformWindow); +// getNativeHandle.setAccessible(true); + + var seamlessFrameApplied = false; + stage.getScene() + .getRoot() + .pseudoClassStateChanged(PseudoClass.getPseudoClass("seamless-frame"), seamlessFrameApplied); + stage.getScene() + .getRoot() + .pseudoClassStateChanged(PseudoClass.getPseudoClass("separate-frame"), !seamlessFrameApplied); + + + // 显示窗口 + stage.show(); + } + + public static void main(String[] args) { + // 启动 JavaFX 应用 + launch(args); + } +} \ No newline at end of file diff --git a/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/DataPermissionPane.java b/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/DataPermissionPane.java index f921867..cdf61ee 100644 --- a/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/DataPermissionPane.java +++ b/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/DataPermissionPane.java @@ -214,22 +214,29 @@ public class DataPermissionPane extends JPanel { private void treeDataScopeDeptIds(DefaultMutableTreeNode treeNode, Set deptIdlist) { - if (treeNode.getUserObject() instanceof DeptSimpleRespVO) { - DeptSimpleRespVO deptSimpleRespVO = (DeptSimpleRespVO) treeNode.getUserObject(); - deptIdlist.add(deptSimpleRespVO.getId()); + addDeptIdIfApplicable(treeNode, deptIdlist); + + + // 处理子节点 + for (int i = 0; i < treeNode.getChildCount(); i++) { + DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) treeNode.getChildAt(i); + treeDataScopeDeptIds(childNode, deptIdlist); } - - for (int i = 0; i < treeNode.getChildCount(); i++) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) treeNode.getChildAt(i); - if (node.getUserObject() instanceof DeptSimpleRespVO) { - DeptSimpleRespVO deptSimpleRespVO = (DeptSimpleRespVO) node.getUserObject(); - deptIdlist.add(deptSimpleRespVO.getId()); - } - treeDataScopeDeptIds(node,deptIdlist); + // 处理父节点 + while (treeNode.getParent() != null) { + treeNode = (DefaultMutableTreeNode) treeNode.getParent(); + addDeptIdIfApplicable(treeNode, deptIdlist); } } + // 将添加菜单ID的逻辑提取成一个方法 + private void addDeptIdIfApplicable(DefaultMutableTreeNode treeNode, Set deptIdList) { + if (treeNode.getUserObject() instanceof DeptSimpleRespVO) { + DeptSimpleRespVO respVO = (DeptSimpleRespVO) treeNode.getUserObject(); + deptIdList.add(respVO.getId()); + } + } public void updateData(RoleRespVO roleRespVO) { @@ -258,11 +265,13 @@ public class DataPermissionPane extends JPanel { Map nodeMap = new HashMap<>(); nodeMap.put(0l, deptRoot); // Root node - List selTreePth = new ArrayList<>(); + List selNodes = new ArrayList<>(); for (DeptSimpleRespVO simpleRespVO : deptResult.getData()) { DefaultMutableTreeNode node = new DefaultMutableTreeNode(simpleRespVO); nodeMap.put(simpleRespVO.getId(), node); - + if (roleRespVO.getDataScopeDeptIds().contains(simpleRespVO.getId())) { + selNodes.add(node); + } } deptResult.getData().forEach(deptSimpleRespVO -> { @@ -271,15 +280,13 @@ public class DataPermissionPane extends JPanel { if (parentNode != null) { parentNode.add(childNode); } - if (roleRespVO.getDataScopeDeptIds().contains(deptSimpleRespVO.getId())) { - selTreePth.add(new TreePath(nodeMap.get(deptSimpleRespVO.getId()).getPath())); - } + }); Map resultMap = new HashMap<>(); resultMap.put("deptRoot", deptRoot); - resultMap.put("selTreePth", selTreePth); + resultMap.put("selNodes", selNodes); return resultMap; } @@ -289,11 +296,17 @@ public class DataPermissionPane extends JPanel { try { deptTree.setModel(new DefaultTreeModel((TreeNode) get().get("deptRoot"))); - List selTreePth = (List) get().get("selTreePth"); - if (selTreePth != null) { - deptTree.getCheckBoxTreeSelectionModel().setSelectionPaths(selTreePth.toArray(new TreePath[0])); + List selNodes = (List) get().get("selNodes"); + if (selNodes != null) { + for (DefaultMutableTreeNode node : selNodes) { + if (node.isLeaf()) { + deptTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath())); + } + + } } TreeUtils.expandAll(deptTree); + TreeUtils.expandAll(deptTree); } catch (InterruptedException e) { throw new RuntimeException(e); diff --git a/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/RoleAssignMenuPane.java b/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/RoleAssignMenuPane.java index 05434c9..f3b455e 100644 --- a/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/RoleAssignMenuPane.java +++ b/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/RoleAssignMenuPane.java @@ -171,19 +171,26 @@ public class RoleAssignMenuPane extends JPanel { private void treeDataScopeDeptIds(DefaultMutableTreeNode treeNode, Set menuIdlist) { - if (treeNode.getUserObject() instanceof MenuSimpleRespVO) { - MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) treeNode.getUserObject(); - menuIdlist.add(menuSimpleRespVO.getId()); + // 处理当前节点 + addMenuIdIfApplicable(treeNode, menuIdlist); + + // 处理子节点 + for (int i = 0; i < treeNode.getChildCount(); i++) { + DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) treeNode.getChildAt(i); + treeDataScopeDeptIds(childNode, menuIdlist); } - - for (int i = 0; i < treeNode.getChildCount(); i++) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) treeNode.getChildAt(i); - if (node.getUserObject() instanceof MenuSimpleRespVO) { - MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) node.getUserObject(); - menuIdlist.add(menuSimpleRespVO.getId()); - } - treeDataScopeDeptIds(node, menuIdlist); + // 处理父节点 + while (treeNode.getParent() != null) { + treeNode = (DefaultMutableTreeNode) treeNode.getParent(); + addMenuIdIfApplicable(treeNode, menuIdlist); + } + } + // 将添加菜单ID的逻辑提取成一个方法 + private void addMenuIdIfApplicable(DefaultMutableTreeNode treeNode, Set menuIdList) { + if (treeNode.getUserObject() instanceof MenuSimpleRespVO) { + MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) treeNode.getUserObject(); + menuIdList.add(menuSimpleRespVO.getId()); } } @@ -208,9 +215,7 @@ public class RoleAssignMenuPane extends JPanel { java.util.List selNodes = new ArrayList<>(); for (MenuSimpleRespVO simpleRespVO : menuResult.getData()) { - if (simpleRespVO.getType() == 3) { - continue; - } + DefaultMutableTreeNode node = new DefaultMutableTreeNode(simpleRespVO); nodeMap.put(simpleRespVO.getId(), node); @@ -220,18 +225,17 @@ public class RoleAssignMenuPane extends JPanel { } menuResult.getData().forEach(menuSimpleRespVO -> { - if (menuSimpleRespVO.getType() != 3) { - DefaultMutableTreeNode parentNode = nodeMap.get(menuSimpleRespVO.getParentId()); - DefaultMutableTreeNode childNode = nodeMap.get(menuSimpleRespVO.getId()); - if (parentNode != null) { - if (childNode != null) { - parentNode.add(childNode); - } + DefaultMutableTreeNode parentNode = nodeMap.get(menuSimpleRespVO.getParentId()); + DefaultMutableTreeNode childNode = nodeMap.get(menuSimpleRespVO.getId()); + if (parentNode != null) { + if (childNode != null) { + parentNode.add(childNode); } - } + + }); Map resultMap = new HashMap<>(); @@ -249,7 +253,9 @@ public class RoleAssignMenuPane extends JPanel { java.util.List selNodes = (List) get().get("selNodes"); if (selNodes != null) { for (DefaultMutableTreeNode node : selNodes) { - menuTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath())); + if (node.isLeaf()) { + menuTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath())); + } } } diff --git a/dump.rdb b/dump.rdb index 7ecf043..7984b5f 100644 Binary files a/dump.rdb and b/dump.rdb differ