diff --git a/src/main/java/org/jcnc/jnotepad/common/constants/AppConstants.java b/src/main/java/org/jcnc/jnotepad/common/constants/AppConstants.java index 4c946b0..ef0fee4 100644 --- a/src/main/java/org/jcnc/jnotepad/common/constants/AppConstants.java +++ b/src/main/java/org/jcnc/jnotepad/common/constants/AppConstants.java @@ -25,11 +25,11 @@ public class AppConstants { /** * 初始宽度 */ - public static final double SCREEN_WIDTH = 800; + public static final double SCREEN_WIDTH = 1050; /** * 初始高度 */ - public static final double SCREEN_LENGTH = 600; + public static final double SCREEN_LENGTH = 750; /** * logo地址 */ diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/OpenDirectory.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/OpenDirectory.java index fb8c1f1..6b4eb98 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/OpenDirectory.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/OpenDirectory.java @@ -17,9 +17,11 @@ import org.jcnc.jnotepad.views.manager.DirectorySidebarManager; import java.io.File; /** - * @author : cccqyu - * @createTime 2023/10/2 1:29 - * @description 当用户选择打开文件夹时,将创建一个左侧树型结构目录。 + * 打开文件夹處理器 + * + *
当用户选择打开文件夹时,将创建一个左侧树型结构目录。
+ * + * @author cccqyu */ public class OpenDirectory implements EventHandler文件树按钮事件的事件处理程序。
+ * + * @author cccqyu */ public class DirTreeBtn implements EventHandler用于存储文件夹结构
+ * + * @author cccqyu */ public class DirFileModel { private String path; @@ -32,11 +35,7 @@ public class DirFileModel { public List文件夹选择对话框工厂,该工厂接口用于创建文件夹选择对话框,包括原始和详细两种类型。
+ * + * @author cccqyu */ public interface DirectoryChooserFactory { /** diff --git a/src/main/java/org/jcnc/jnotepad/ui/dialog/factory/impl/BasicDirectoryChooserFactory.java b/src/main/java/org/jcnc/jnotepad/ui/dialog/factory/impl/BasicDirectoryChooserFactory.java index 20fb574..acf4298 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/dialog/factory/impl/BasicDirectoryChooserFactory.java +++ b/src/main/java/org/jcnc/jnotepad/ui/dialog/factory/impl/BasicDirectoryChooserFactory.java @@ -6,9 +6,11 @@ import org.jcnc.jnotepad.ui.dialog.factory.DirectoryChooserFactory; import java.io.File; /** - * @author : cccqyu@outlook.com - * @createTime 2023/10/2 1:54 - * @description 基本文件夹选择对话框 + * 文件夹选择对话框 + * + *基本文件夹选择对话框的封装
+ * + * @author cccqyu */ public class BasicDirectoryChooserFactory implements DirectoryChooserFactory { diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/DirectorySidebarManager.java b/src/main/java/org/jcnc/jnotepad/views/manager/DirectorySidebarManager.java index 8f1a4c1..f1aae48 100644 --- a/src/main/java/org/jcnc/jnotepad/views/manager/DirectorySidebarManager.java +++ b/src/main/java/org/jcnc/jnotepad/views/manager/DirectorySidebarManager.java @@ -1,6 +1,7 @@ package org.jcnc.jnotepad.views.manager; import javafx.beans.value.ChangeListener; +import javafx.scene.control.SplitPane; import javafx.scene.control.TreeItem; import org.jcnc.jnotepad.common.manager.ApplicationCacheManager; import org.jcnc.jnotepad.common.util.FileUtil; @@ -15,7 +16,9 @@ import java.util.List; /** * 文件树管理类 * - * @author : cccqyu + *管理文件树,处理文件树操作
+ * + * @author cccqyu */ public class DirectorySidebarManager { @@ -38,20 +41,31 @@ public class DirectorySidebarManager { private static final DirectorySidebarPane DIRECTORY_SIDEBAR_PANE = DirectorySidebarPane.getInstance(); + + private static final double lastDividerPosition = 0.3; + /** * 控制文件树显示 */ public void controlShow() { - boolean isVisible = DIRECTORY_SIDEBAR_PANE.isVisible(); - // 设置自身显示 - DIRECTORY_SIDEBAR_PANE.setVisible(!isVisible); - if (isVisible) { - // 布局中移除 - MAIN_BORDER_PANE.setLeft(null); - } else { - MAIN_BORDER_PANE.setLeft(DIRECTORY_SIDEBAR_PANE); - } + // 获取分割面板 + SplitPane center = (SplitPane) MAIN_BORDER_PANE.getCenter(); + // 获取分割条位置 + double dividerPosition = center.getDividerPositions()[0]; + // 保留分割条位置一位小数 + String formattedNumber = String.format("%.1f", dividerPosition); + double roundedNumber = Double.parseDouble(formattedNumber); + // 分割条位置不等于 代表展开 + if (roundedNumber != 0.0) { + // 收缩分割条 收缩文件树 + center.setDividerPositions(0.0); + + } else { + // 展开分割条,文件树 + center.setDividerPositions(lastDividerPosition); + + } } /** @@ -60,10 +74,10 @@ public class DirectorySidebarManager { * @param bool 打开 */ public void controlShow(boolean bool) { - // 设置自身显示 - DIRECTORY_SIDEBAR_PANE.setVisible(bool); - if (!MAIN_BORDER_PANE.getChildren().contains(DIRECTORY_SIDEBAR_PANE)) { - MAIN_BORDER_PANE.setLeft(DIRECTORY_SIDEBAR_PANE); + if (bool) { + // 获取分割面板 + SplitPane center = (SplitPane) MAIN_BORDER_PANE.getCenter(); + center.setDividerPositions(lastDividerPosition); } } diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/MainBorderPaneManager.java b/src/main/java/org/jcnc/jnotepad/views/manager/MainBorderPaneManager.java index a527423..bf0e08c 100644 --- a/src/main/java/org/jcnc/jnotepad/views/manager/MainBorderPaneManager.java +++ b/src/main/java/org/jcnc/jnotepad/views/manager/MainBorderPaneManager.java @@ -1,6 +1,8 @@ package org.jcnc.jnotepad.views.manager; +import javafx.scene.control.SplitPane; import org.jcnc.jnotepad.views.root.center.main.MainBorderPane; +import org.jcnc.jnotepad.views.root.center.main.center.directory.DirectorySidebarPane; import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane; /** @@ -12,7 +14,10 @@ public class MainBorderPaneManager { private static final MainBorderPaneManager INSTANCE = new MainBorderPaneManager(); private static final MainBorderPane MAIN_BORDER_PANE = MainBorderPane.getInstance(); + private static final DirectorySidebarPane DIRECTORY_SIDEBAR_PANE = DirectorySidebarPane.getInstance(); + // 默认分割条位置 + private static final double defaultDividerPositions = 0.3; private MainBorderPaneManager() { } @@ -22,7 +27,13 @@ public class MainBorderPaneManager { } public void initMainBorderPane() { - // 文本框 - MAIN_BORDER_PANE.setCenterComponent(CenterTabPane.getInstance()); + // 文件树和文本框的布局 + SplitPane splitPane = new SplitPane(); + splitPane.getItems().add(0, DIRECTORY_SIDEBAR_PANE); + splitPane.getItems().add(1, CenterTabPane.getInstance()); + splitPane.setDividerPositions(defaultDividerPositions); + + // 将文件树以及文本框设置在布局中部 + MAIN_BORDER_PANE.setCenterComponent(splitPane); } } diff --git a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/directory/DirectorySidebarPane.java b/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/directory/DirectorySidebarPane.java index 8f171a0..fec7434 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/directory/DirectorySidebarPane.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/directory/DirectorySidebarPane.java @@ -10,9 +10,11 @@ import java.util.Objects; /** - * @author : cccqyu - * @createTime 2023/10/2 20:34 - * @description TreeView封装 + * 目录树ui + * + *TreeView封装
+ * + * @author cccqyu */ public class DirectorySidebarPane extends TreeView用于toolbar的垂直布局
+ * + * @author cccqyu */ public class ToolVerticalBox extends AbstractVerticalBox { /**