diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index dd4e960..92394cf 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -29,7 +29,7 @@ module org.jcnc.jnotepad { exports org.jcnc.jnotepad.controller.config; exports org.jcnc.jnotepad.controller.manager; exports org.jcnc.jnotepad.controller.i18n; - exports org.jcnc.jnotepad.controller.event.handler.util; + exports org.jcnc.jnotepad.controller.event.handler.setting; exports org.jcnc.jnotepad.controller.event.handler.menubar; exports org.jcnc.jnotepad.util; exports org.jcnc.jnotepad.common.interfaces; diff --git a/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java b/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java index b4ac553..6c9a19a 100644 --- a/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java +++ b/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java @@ -15,7 +15,9 @@ import org.jcnc.jnotepad.controller.config.PluginConfigController; import org.jcnc.jnotepad.controller.manager.Controller; import org.jcnc.jnotepad.plugin.PluginManager; import org.jcnc.jnotepad.util.UiUtil; -import org.jcnc.jnotepad.views.manager.ViewManager; +import org.jcnc.jnotepad.views.manager.RootManager; +import org.jcnc.jnotepad.views.manager.SidebarToolBarManager; +import org.jcnc.jnotepad.views.manager.TopMenuBarManager; import java.util.List; import java.util.Objects; @@ -60,6 +62,10 @@ public class ApplicationManager { initScene(); // 初始化插件 PluginManager.getInstance().initializePlugins(); + // 初始化顶部菜单栏 + TopMenuBarManager.getInstance().initTopMenuBar(); + // 初始化侧边工具栏 + SidebarToolBarManager.getInstance().initSidebarToolBar(); // 初始化ui组件 initUiComponents(); // 初始化primaryStage @@ -147,8 +153,8 @@ public class ApplicationManager { */ public void initUiComponents() { // 加载组件 - ViewManager viewManager = ViewManager.getInstance(scene); - viewManager.initScreen(scene); + RootManager rootManager = RootManager.getInstance(scene); + rootManager.initScreen(scene); } public Pane getRoot() { diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/NewFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/NewFile.java index 548f2b9..e6ed2c4 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/NewFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/NewFile.java @@ -22,7 +22,6 @@ import java.util.List; * @author 许轲 */ public class NewFile implements EventHandler { - /** * 处理新建文件事件。 * diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/SaveFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/SaveFile.java index d65e8b5..9556b67 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/SaveFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/SaveFile.java @@ -10,9 +10,9 @@ import org.jcnc.jnotepad.controller.i18n.LocalizationController; import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicFileChooserFactory; import org.jcnc.jnotepad.util.LogUtil; import org.jcnc.jnotepad.util.UiUtil; +import org.jcnc.jnotepad.views.manager.TopMenuBarManager; import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab; import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane; -import org.jcnc.jnotepad.views.root.top.menu.TopMenuBar; import org.slf4j.Logger; import java.io.File; @@ -56,7 +56,7 @@ public class SaveFile implements EventHandler { if (CONFIG_NAME.equals(selectedTab.getText())) { // 重新加载语言包和快捷键 AppConfigController.getInstance().loadConfig(); - TopMenuBar.getInstance().initShortcutKeys(); + TopMenuBarManager.getInstance().initShortcutKeys(); LocalizationController.initLocal(); logger.info("已刷新语言包!"); logger.info("已刷新快捷键!"); diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/util/SetBtn.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/setting/SetBtn.java similarity index 89% rename from src/main/java/org/jcnc/jnotepad/controller/event/handler/util/SetBtn.java rename to src/main/java/org/jcnc/jnotepad/controller/event/handler/setting/SetBtn.java index 4a7ddb2..5665d51 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/util/SetBtn.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/setting/SetBtn.java @@ -1,4 +1,4 @@ -package org.jcnc.jnotepad.controller.event.handler.util; +package org.jcnc.jnotepad.controller.event.handler.setting; import javafx.event.ActionEvent; import javafx.event.EventHandler; diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/ViewManager.java b/src/main/java/org/jcnc/jnotepad/views/manager/RootManager.java similarity index 67% rename from src/main/java/org/jcnc/jnotepad/views/manager/ViewManager.java rename to src/main/java/org/jcnc/jnotepad/views/manager/RootManager.java index 9a57f5f..5c2996a 100644 --- a/src/main/java/org/jcnc/jnotepad/views/manager/ViewManager.java +++ b/src/main/java/org/jcnc/jnotepad/views/manager/RootManager.java @@ -8,15 +8,15 @@ import org.jcnc.jnotepad.views.root.RootBorderPane; import static org.jcnc.jnotepad.views.root.bottom.RootBottomSideBarVerticalBox.initSidebarVerticalBox; /** - * 视图管理器类,用于管理记事本应用程序的视图组件。 + * 根布局管理器类,用于管理记事本应用程序的根布局组件。 * - *

该类负责管理应用程序的视图组件,包括主界面布局和标签页索引等。

+ *

该类负责管理应用程序的视图组件,包括主界面布局

* * @author 许轲 */ -public class ViewManager { +public class RootManager { - private static ViewManager instance = null; + private static RootManager instance = null; /** * 主布局 @@ -28,35 +28,35 @@ public class ViewManager { * * @param scene 与视图相关联的 JavaFX 场景。 */ - private ViewManager(Scene scene) { + private RootManager(Scene scene) { root = new BorderPane(); scene.setRoot(root); } /** - * 获取 ViewManager 的实例。如果实例不存在,则创建一个新实例。 + * 获取 RootManager 的实例。如果实例不存在,则创建一个新实例。 * * @param scene 与视图相关联的 JavaFX 场景。 - * @return ViewManager 的实例。 + * @return RootManager 的实例。 */ - public static ViewManager getInstance(Scene scene) { + public static RootManager getInstance(Scene scene) { if (instance == null) { - instance = new ViewManager(scene); + instance = new RootManager(scene); } return instance; } /** - * 获取 ViewManager 的实例。 + * 获取 RootManager 的实例。 * - * @return ViewManager 的实例。 + * @return RootManager 的实例。 * @throws AppException 如果实例未初始化。 */ - public static ViewManager getInstance() { + public static RootManager getInstance() { if (instance != null) { return instance; } else { - throw new AppException("ViewManager 的实例未初始化!"); + throw new AppException("RootManager 的实例未初始化!"); } } @@ -67,10 +67,8 @@ public class ViewManager { * @param scene 与视图相关联的 JavaFX 场景。 */ public void initScreen(Scene scene) { - // 创建主界面布局 root = new BorderPane(); - /*root.setTop(CustomTitleBar.getInstance());*/ root.setCenter(RootBorderPane.getInstance()); scene.setRoot(root); diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java b/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java new file mode 100644 index 0000000..7a94012 --- /dev/null +++ b/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java @@ -0,0 +1,51 @@ +package org.jcnc.jnotepad.views.manager; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.control.Button; +import org.jcnc.jnotepad.controller.event.handler.setting.SetBtn; +import org.jcnc.jnotepad.views.root.left.sidebar.tools.SidebarToolBar; + +import java.util.ArrayList; +import java.util.List; + +/** + * 侧边工具栏管理类 + * + * @author gewuyou + */ +public class SidebarToolBarManager { + private static final SidebarToolBarManager INSTANCE = new SidebarToolBarManager(); + /** + * 工具栏 + */ + SidebarToolBar sidebarToolBar = SidebarToolBar.getInstance(); + List