shortcutKey) {
this.shortcutKey = shortcutKey;
}
+ /**
+ * 获取文本自动换行设置
+ *
+ * @return 是否启用文本自动换行
+ */
public boolean isTextWrap() {
return textWrap;
}
+ /**
+ * 设置文本自动换行设置
+ *
+ * @param textWrap 是否启用文本自动换行
+ */
public void setTextWrap(boolean textWrap) {
this.textWrap = textWrap;
}
diff --git a/src/main/java/org/jcnc/jnotepad/app/i18n/UiResourceBundle.java b/src/main/java/org/jcnc/jnotepad/app/i18n/UiResourceBundle.java
index bf6245b..fbda96f 100644
--- a/src/main/java/org/jcnc/jnotepad/app/i18n/UiResourceBundle.java
+++ b/src/main/java/org/jcnc/jnotepad/app/i18n/UiResourceBundle.java
@@ -13,6 +13,22 @@ import java.util.ResourceBundle;
/**
* UI资源绑定,用于加载语言文件。
*
+ *
+ * 此类用于加载和管理UI资源文件,支持国际化和多语言功能。可以通过绑定StringProperty和键值对应的内容,以及获取当前资源文件的内容。
+ *
+ *
+ *
+ * 该类是一个单例类,通过getInstance方法获取实例。
+ *
+ *
+ *
+ * 使用方法示例:
+ *
+ * UiResourceBundle.bindStringProperty(stringProperty, "key");
+ * String content = UiResourceBundle.getContent("key");
+ *
+ *
+ *
* @author songdragon
*/
public class UiResourceBundle {
@@ -35,6 +51,11 @@ public class UiResourceBundle {
}
+ /**
+ * 获取UiResourceBundle的单例实例
+ *
+ * @return UiResourceBundle的单例实例
+ */
public static UiResourceBundle getInstance() {
return INSTANCE;
}
@@ -81,6 +102,8 @@ public class UiResourceBundle {
/**
* 重置当前local
+ *
+ * @param toLocal 要设置的新的Locale
*/
public final void resetLocal(Locale toLocal) {
if (this.currentLocale == toLocal) {
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 c3238b1..3d7467d 100644
--- a/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java
+++ b/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java
@@ -8,22 +8,22 @@ import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.stage.Window;
import org.jcnc.jnotepad.JnotepadApp;
+import org.jcnc.jnotepad.app.common.constants.AppConstants;
+import org.jcnc.jnotepad.app.common.constants.TextConstants;
+import org.jcnc.jnotepad.app.common.manager.ThreadPoolManager;
import org.jcnc.jnotepad.app.config.AppConfig;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
-import org.jcnc.jnotepad.common.constants.AppConstants;
-import org.jcnc.jnotepad.common.constants.TextConstants;
-import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
+import org.jcnc.jnotepad.app.utils.FileUtil;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.app.utils.UiUtil;
import org.jcnc.jnotepad.controller.ResourceController;
import org.jcnc.jnotepad.controller.cache.CacheController;
import org.jcnc.jnotepad.controller.config.AppConfigController;
import org.jcnc.jnotepad.controller.config.PluginConfigController;
import org.jcnc.jnotepad.controller.exception.AppException;
import org.jcnc.jnotepad.controller.manager.Controller;
-import org.jcnc.jnotepad.plugin.manager.PluginManager;
-import org.jcnc.jnotepad.util.FileUtil;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.util.UiUtil;
-import org.jcnc.jnotepad.views.manager.*;
+import org.jcnc.jnotepad.controller.plugin.manager.PluginManager;
+import org.jcnc.jnotepad.ui.views.manager.*;
import java.io.File;
import java.io.IOException;
@@ -34,13 +34,19 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ExecutorService;
-import static org.jcnc.jnotepad.common.constants.AppConstants.DEFAULT_PROPERTY;
-import static org.jcnc.jnotepad.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
-
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.DEFAULT_PROPERTY;
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
/**
- * 应用程序管理类
- * 此类负责管理应用程序的生命周期等操作
+ * 应用程序管理类
+ *
+ *
+ * 此类负责管理应用程序的生命周期和操作。它包括初始化应用程序、执行默认操作、加载缓存、加载资源、迁移程序根文件夹、停止前操作等功能。
+ *
+ *
+ *
+ * 该类是一个单例类,通过getInstance方法获取实例。
+ *
*
* @author gewuyou
*/
@@ -55,22 +61,27 @@ public class ApplicationManager {
private Stage primaryStage;
private Application application;
-
private ApplicationManager() {
}
+ /**
+ * 获取ApplicationManager的单例实例
+ *
+ * @return ApplicationManager的单例实例
+ */
public static ApplicationManager getInstance() {
return INSTANCE;
}
/**
- * 初始化程序(Initializes the application)
+ * 初始化应用程序
*
- * @apiNote
- * @since 2023/9/20 17:26
+ *
+ * 此方法用于初始化应用程序的各个组件,包括设置应用程序主题、初始化UI组件、初始化插件、初始化顶部菜单栏、初始化侧边工具栏、初始化下方状态栏、初始化标签页布局等。
+ *
*/
public void initializeApp() {
- // 设置应用程序主题 SetTheApplicationTheme
+ // 设置应用程序主题
Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet());
// 初始化scene
initScene();
@@ -92,6 +103,10 @@ public class ApplicationManager {
/**
* 执行默认操作
+ *
+ *
+ * 此方法用于执行应用程序的默认操作,例如根据参数打开关联文件并创建文本区域,加载已打开的文件夹等。
+ *
*/
public void executeDefaultAction() {
// 使用加载关联文件并创建文本区域
@@ -124,6 +139,10 @@ public class ApplicationManager {
/**
* 加载缓存
+ *
+ *
+ * 此方法用于加载应用程序的缓存。
+ *
*/
public void loadAppCache() {
// 加载缓存
@@ -132,6 +151,10 @@ public class ApplicationManager {
/**
* 加载资源
+ *
+ *
+ * 此方法用于加载应用程序的资源,包括加载资源文件和绑定快捷键。
+ *
*/
public void loadAppResources() {
// 加载资源
@@ -142,6 +165,10 @@ public class ApplicationManager {
/**
* 迁移程序根文件夹
+ *
+ *
+ * 此方法用于迁移应用程序的根文件夹,将根文件夹从之前的位置迁移到新的位置。
+ *
*/
public void migrateFileRootFolder() {
AppConfig config = AppConfigController.getInstance().getConfig();
@@ -174,7 +201,9 @@ public class ApplicationManager {
/**
* 停止前操作
*
- * @apiNote 在停止程序之前会执行此操作
+ *
+ * 在停止应用程序之前,执行一系列操作,包括刷新插件配置、销毁插件、保存已打开的文件标签页、将缓存写入本地、迁移程序根文件夹、关闭线程池等。
+ *
*/
public void operationBeforeStopping() {
PluginConfigController pluginConfigController = PluginConfigController.getInstance();
@@ -195,7 +224,7 @@ public class ApplicationManager {
}
/**
- * 获取当前窗口。
+ * 获取当前窗口
*
* @return 当前窗口
*/
@@ -206,8 +235,7 @@ public class ApplicationManager {
/**
* 获取当前窗口的场景
*
- * @return javafx.scene.Scene
- * @since 2023/9/20 18:21
+ * @return 当前窗口的场景
*/
public Scene getScene() {
return scene;
@@ -220,8 +248,9 @@ public class ApplicationManager {
/**
* 加载程序布局
*
- * @apiNote
- * @since 2023/9/20 17:25
+ *
+ * 此方法用于加载应用程序的布局,包括根布局容器、底部根侧边栏垂直布局、主界面边界布局、顶部边界面板、右侧边栏垂直布局、根布局等组件。
+ *
*/
public void initAppLayout() {
// 加载根布局容器
@@ -237,9 +266,15 @@ public class ApplicationManager {
RootRightSideBarVerticalBoxManager.getInstance().initRootRightSideBarVerticalBox();
// 初始化根布局
RootBorderPaneManager.getInstance().initRootBorderPane();
-
}
+ /**
+ * 重启应用程序
+ *
+ *
+ * 此方法用于重启当前的Java应用程序。
+ *
+ */
public void restart() {
try {
// 获取当前Java应用程序的命令
@@ -250,14 +285,12 @@ public class ApplicationManager {
ProcessBuilder builder = new ProcessBuilder(javaCommand, "-cp", System.getProperty("java.class.path"), mainClass);
builder.start();
// 关闭当前应用程序
- // fixme 使用这个System.exit(0);,在开发环境,点击重启程序,停止前操作不生效
stop();
} catch (IOException e) {
LogUtil.getLogger("正在重启当前应用程序".getClass());
}
}
-
public Pane getRoot() {
return root;
}
@@ -282,6 +315,13 @@ public class ApplicationManager {
this.primaryStage = primaryStage;
}
+ /**
+ * 停止应用程序
+ *
+ *
+ * 此方法用于停止应用程序。
+ *
+ */
public void stop() {
Platform.exit();
}
diff --git a/src/main/java/org/jcnc/jnotepad/util/ClipboardUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/ClipboardUtil.java
similarity index 96%
rename from src/main/java/org/jcnc/jnotepad/util/ClipboardUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/ClipboardUtil.java
index 4e95321..100153a 100644
--- a/src/main/java/org/jcnc/jnotepad/util/ClipboardUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/ClipboardUtil.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
diff --git a/src/main/java/org/jcnc/jnotepad/util/EncodingDetector.java b/src/main/java/org/jcnc/jnotepad/app/utils/EncodingDetector.java
similarity index 98%
rename from src/main/java/org/jcnc/jnotepad/util/EncodingDetector.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/EncodingDetector.java
index 9511288..550a9a1 100644
--- a/src/main/java/org/jcnc/jnotepad/util/EncodingDetector.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/EncodingDetector.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import com.ibm.icu.text.CharsetDetector;
import com.ibm.icu.text.CharsetMatch;
diff --git a/src/main/java/org/jcnc/jnotepad/util/FileUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/FileUtil.java
similarity index 99%
rename from src/main/java/org/jcnc/jnotepad/util/FileUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/FileUtil.java
index f17542f..9b1fe76 100644
--- a/src/main/java/org/jcnc/jnotepad/util/FileUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/FileUtil.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import javafx.scene.Node;
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenFile;
diff --git a/src/main/java/org/jcnc/jnotepad/util/JsonUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/JsonUtil.java
similarity index 98%
rename from src/main/java/org/jcnc/jnotepad/util/JsonUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/JsonUtil.java
index 7960f5e..057073c 100644
--- a/src/main/java/org/jcnc/jnotepad/util/JsonUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/JsonUtil.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
diff --git a/src/main/java/org/jcnc/jnotepad/util/LogUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/LogUtil.java
similarity index 95%
rename from src/main/java/org/jcnc/jnotepad/util/LogUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/LogUtil.java
index 34eb0d4..918ed02 100644
--- a/src/main/java/org/jcnc/jnotepad/util/LogUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/LogUtil.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/jcnc/jnotepad/util/NotificationUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/NotificationUtil.java
similarity index 97%
rename from src/main/java/org/jcnc/jnotepad/util/NotificationUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/NotificationUtil.java
index 3c5bf4f..14c0a59 100644
--- a/src/main/java/org/jcnc/jnotepad/util/NotificationUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/NotificationUtil.java
@@ -1,9 +1,9 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import atlantafx.base.controls.Notification;
import atlantafx.base.theme.Styles;
import javafx.scene.layout.StackPane;
-import org.jcnc.jnotepad.views.manager.RootManager;
+import org.jcnc.jnotepad.ui.views.manager.RootManager;
import org.kordamp.ikonli.javafx.FontIcon;
import java.util.Collections;
diff --git a/src/main/java/org/jcnc/jnotepad/util/PopUpUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/PopUpUtil.java
similarity index 96%
rename from src/main/java/org/jcnc/jnotepad/util/PopUpUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/PopUpUtil.java
index d205ea8..c7794c2 100644
--- a/src/main/java/org/jcnc/jnotepad/util/PopUpUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/PopUpUtil.java
@@ -1,8 +1,8 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
-import org.jcnc.jnotepad.component.stage.dialog.AppDialogBuilder;
-import org.jcnc.jnotepad.component.stage.dialog.interfaces.DialogButtonAction;
import org.jcnc.jnotepad.model.enums.DialogType;
+import org.jcnc.jnotepad.ui.component.stage.dialog.AppDialogBuilder;
+import org.jcnc.jnotepad.ui.component.stage.dialog.interfaces.DialogButtonAction;
/**
* 弹窗工具类
diff --git a/src/main/java/org/jcnc/jnotepad/util/ResourceUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/ResourceUtil.java
similarity index 98%
rename from src/main/java/org/jcnc/jnotepad/util/ResourceUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/ResourceUtil.java
index ee7f7c0..1ab1b34 100644
--- a/src/main/java/org/jcnc/jnotepad/util/ResourceUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/ResourceUtil.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import org.jcnc.jnotepad.JnotepadApp;
diff --git a/src/main/java/org/jcnc/jnotepad/util/TabUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/TabUtil.java
similarity index 95%
rename from src/main/java/org/jcnc/jnotepad/util/TabUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/TabUtil.java
index b083441..d5307e0 100644
--- a/src/main/java/org/jcnc/jnotepad/util/TabUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/TabUtil.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import javafx.scene.control.Tab;
import javafx.scene.control.TextField;
@@ -6,22 +6,22 @@ import javafx.scene.input.KeyCode;
import javafx.stage.FileChooser;
import org.jcnc.jnotepad.api.core.views.menu.builder.ContextMenuBuilder;
import org.jcnc.jnotepad.api.core.views.menu.builder.MenuBuilder;
+import org.jcnc.jnotepad.app.common.constants.AppConstants;
+import org.jcnc.jnotepad.app.common.constants.TextConstants;
+import org.jcnc.jnotepad.app.common.manager.ApplicationCacheManager;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
-import org.jcnc.jnotepad.common.constants.AppConstants;
-import org.jcnc.jnotepad.common.constants.TextConstants;
-import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
-import org.jcnc.jnotepad.component.module.TextCodeArea;
-import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicFileChooserFactory;
import org.jcnc.jnotepad.controller.config.UserConfigController;
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenFile;
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
import org.jcnc.jnotepad.model.entity.Cache;
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
-import org.jcnc.jnotepad.views.manager.BottomStatusBoxManager;
-import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
-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.ui.component.module.TextCodeArea;
+import org.jcnc.jnotepad.ui.component.stage.dialog.factory.impl.BasicFileChooserFactory;
+import org.jcnc.jnotepad.ui.views.manager.BottomStatusBoxManager;
+import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
+import org.jcnc.jnotepad.ui.views.manager.TopMenuBarManager;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTab;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTabPane;
import org.slf4j.Logger;
import java.io.File;
@@ -29,8 +29,8 @@ import java.nio.charset.Charset;
import java.util.Comparator;
import java.util.List;
+import static org.jcnc.jnotepad.app.utils.FileUtil.getFileText;
import static org.jcnc.jnotepad.controller.config.UserConfigController.CONFIG_NAME;
-import static org.jcnc.jnotepad.util.FileUtil.getFileText;
/**
* 标签页工具
diff --git a/src/main/java/org/jcnc/jnotepad/util/UiUtil.java b/src/main/java/org/jcnc/jnotepad/app/utils/UiUtil.java
similarity index 98%
rename from src/main/java/org/jcnc/jnotepad/util/UiUtil.java
rename to src/main/java/org/jcnc/jnotepad/app/utils/UiUtil.java
index 7cfe1c0..9e8764e 100644
--- a/src/main/java/org/jcnc/jnotepad/util/UiUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/UiUtil.java
@@ -1,12 +1,12 @@
-package org.jcnc.jnotepad.util;
+package org.jcnc.jnotepad.app.utils;
import atlantafx.base.theme.Styles;
import javafx.scene.Node;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Window;
+import org.jcnc.jnotepad.app.common.constants.AppConstants;
import org.jcnc.jnotepad.app.manager.ApplicationManager;
-import org.jcnc.jnotepad.common.constants.AppConstants;
import org.kordamp.ikonli.javafx.FontIcon;
import java.util.HashMap;
diff --git a/src/main/java/org/jcnc/jnotepad/app/utils/aReadme.md b/src/main/java/org/jcnc/jnotepad/app/utils/aReadme.md
new file mode 100644
index 0000000..6a5900e
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/app/utils/aReadme.md
@@ -0,0 +1 @@
+util 存放通用的实用工具代码。
diff --git a/src/main/java/org/jcnc/jnotepad/common/constants/SplitPaneItemConstants.java b/src/main/java/org/jcnc/jnotepad/common/constants/SplitPaneItemConstants.java
deleted file mode 100644
index abb36ef..0000000
--- a/src/main/java/org/jcnc/jnotepad/common/constants/SplitPaneItemConstants.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.jcnc.jnotepad.common.constants;
-
-/**
- * SplitPane常量类
- * *
- * 用于记录SplitPane中子组件的索引
- *
- * @author cccqyu
- */
-public class SplitPaneItemConstants {
-
- // rootSplitPane
-
- // 上部
- public static final int ROOT_SPLIT_PANE_TOP_SPLIT_PANE = 0;
- // 底部
- public static final int ROOT_SPLIT_PANE_CMDBox = 1;
-
- // rootSplitPane中的上部面板
- // 左侧
- public static final int TOP_SPLIT_PANE_DIRECTORY_SIDEBAR_PANE = 0;
- // 右侧
- public static final int TOP_SPLIT_PANE_CENTER_TAB_PANE = 1;
-
-}
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractBorderPane.java b/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractBorderPane.java
deleted file mode 100644
index 8526fb4..0000000
--- a/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractBorderPane.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.jcnc.jnotepad.component.module.base;
-
-import javafx.scene.Node;
-import javafx.scene.layout.BorderPane;
-import org.jcnc.jnotepad.component.module.interfaces.BorderPaneAble;
-
-/**
- * 抽象边界面板类
- *
- * 这个抽象类继承自JavaFX的BorderPane类,实现了BorderPaneAble接口,用于管理UI组件的布局。
- *
- * @author luke
- */
-public abstract class AbstractBorderPane extends BorderPane implements BorderPaneAble {
-
- @Override
- public void setTopComponent(Node node) {
- setTop(node);
- }
-
- @Override
- public void setBottomComponent(Node node) {
- setBottom(node);
- }
-
- @Override
- public void setLeftComponent(Node node) {
- setLeft(node);
- }
-
- @Override
- public void setRightComponent(Node node) {
- setRight(node);
- }
-
- @Override
- public void setCenterComponent(Node node) {
- setCenter(node);
- }
-}
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractHorizontalBox.java b/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractHorizontalBox.java
deleted file mode 100644
index 8c724bb..0000000
--- a/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractHorizontalBox.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.jcnc.jnotepad.component.module.base;
-
-import javafx.scene.Node;
-import javafx.scene.layout.HBox;
-import org.jcnc.jnotepad.component.module.interfaces.HorizontalBoxAble;
-
-/**
- * 抽象水平盒子类
- *
- * 这个抽象类继承自JavaFX的HBox类,实现了HBoxAble接口,用于管理水平排列的UI组件。
- *
- * @author luke
- */
-public abstract class AbstractHorizontalBox extends HBox implements HorizontalBoxAble {
- private final HBox hBox;
-
- public AbstractHorizontalBox() {
- hBox = new HBox();
- }
-
- @Override
- public void addChild(Node node) {
- hBox.getChildren().add(node);
- }
-
- @Override
- public void addChild(Node... nodes) {
- hBox.getChildren().addAll(nodes);
- }
-
- @Override
- public HBox getHorizontalBox() {
- return hBox;
- }
-}
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractVerticalBox.java b/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractVerticalBox.java
deleted file mode 100644
index c5c5973..0000000
--- a/src/main/java/org/jcnc/jnotepad/component/module/base/AbstractVerticalBox.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.jcnc.jnotepad.component.module.base;
-
-import javafx.scene.Node;
-import javafx.scene.layout.VBox;
-import org.jcnc.jnotepad.component.module.interfaces.VerticalBoxAble;
-
-/**
- * 抽象垂直盒子类
- *
- * 这个抽象类继承自JavaFX的VBox类,实现了VBoxAble接口,用于管理垂直排列的UI组件。
- *
- * @author luke
- */
-public abstract class AbstractVerticalBox extends VBox implements VerticalBoxAble {
-
- private final VBox vBox;
-
- public AbstractVerticalBox() {
- vBox = new VBox();
- }
-
- @Override
- public void addChild(Node node) {
- vBox.getChildren().add(node);
- }
-
- @Override
- public void addChild(Node... nodes) {
- vBox.getChildren().addAll(nodes);
- }
-
- @Override
- public VBox getVerticalBox() {
- return vBox;
- }
-}
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/vbox/BuildPanel.java b/src/main/java/org/jcnc/jnotepad/component/module/vbox/BuildPanel.java
deleted file mode 100644
index 955e4c6..0000000
--- a/src/main/java/org/jcnc/jnotepad/component/module/vbox/BuildPanel.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.jcnc.jnotepad.component.module.vbox;
-
-import javafx.scene.control.Tab;
-import javafx.scene.control.TabPane;
-import org.jcnc.jnotepad.component.module.vbox.components.CmdTerminalBox;
-import org.jcnc.jnotepad.component.module.vbox.components.DebugBox;
-import org.jcnc.jnotepad.component.module.vbox.components.RunBox;
-
-/**
- * 底部Run,Debug,Cmd面板
- *
- *
- * @author cccqyu
- */
-public class BuildPanel extends TabPane {
-
- private static BuildPanel instance = null;
-
- public static BuildPanel getInstance() {
-
- if (instance == null) {
- instance = new BuildPanel();
- }
- return instance;
- }
-
- private final CmdTerminalBox cmdTerminalBox;
- private final RunBox runBox;
- private final DebugBox debugBox;
-
- private BuildPanel() {
- cmdTerminalBox = new CmdTerminalBox();
- runBox = new RunBox();
- debugBox = new DebugBox();
-
- Tab runTab = new Tab("运行",runBox);
- runTab.setClosable(false);
-
- Tab buildTab = new Tab("构建", debugBox);
- buildTab.setClosable(false);
-
- Tab cmdTab = new Tab("终端",cmdTerminalBox);
- cmdTab.setClosable(false);
- this.getTabs().addAll(runTab,buildTab,cmdTab);
- }
-
- public CmdTerminalBox getCmdTerminalBox() {
- return cmdTerminalBox;
- }
-
- public RunBox getRunBox() {
- return runBox;
- }
-
- public DebugBox getBuildBox() {
- return debugBox;
- }
-}
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/vbox/components/DebugBox.java b/src/main/java/org/jcnc/jnotepad/component/module/vbox/components/DebugBox.java
deleted file mode 100644
index f6d59e5..0000000
--- a/src/main/java/org/jcnc/jnotepad/component/module/vbox/components/DebugBox.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.jcnc.jnotepad.component.module.vbox.components;
-
-import org.jcnc.jnotepad.component.module.TextCodeArea;
-
-/**
- * Debug终端界面。
- *
- *
- * @author cccqyu
- */
-public class DebugBox extends TextCodeArea {
- public DebugBox() {
- super();
- this.setEditable(false);
- }
-
- public void setText(String text) {
- this.appendText(text);
- }
-}
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/vbox/components/RunBox.java b/src/main/java/org/jcnc/jnotepad/component/module/vbox/components/RunBox.java
deleted file mode 100644
index a35cea1..0000000
--- a/src/main/java/org/jcnc/jnotepad/component/module/vbox/components/RunBox.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.jcnc.jnotepad.component.module.vbox.components;
-
-import org.jcnc.jnotepad.component.module.TextCodeArea;
-
-/**
- * Run终端界面。
- *
- *
- * @author cccqyu
- */
-public class RunBox extends TextCodeArea {
-
-
- public RunBox() {
- super();
- this.setEditable(false);
- }
-
- public void setText(String text) {
- this.appendText(text);
- }
-
-}
diff --git a/src/main/java/org/jcnc/jnotepad/controller/ResourceController.java b/src/main/java/org/jcnc/jnotepad/controller/ResourceController.java
index 8ac7794..a545c26 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/ResourceController.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/ResourceController.java
@@ -1,7 +1,7 @@
package org.jcnc.jnotepad.controller;
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
-import org.jcnc.jnotepad.plugin.PluginLoader;
+import org.jcnc.jnotepad.controller.plugin.PluginLoader;
/**
* 资源控制器
diff --git a/src/main/java/org/jcnc/jnotepad/controller/aReadme.md b/src/main/java/org/jcnc/jnotepad/controller/aReadme.md
new file mode 100644
index 0000000..c721407
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/controller/aReadme.md
@@ -0,0 +1 @@
+controller 存放控制器相关的代码,包括事件处理、异常处理等。
diff --git a/src/main/java/org/jcnc/jnotepad/controller/cache/CacheController.java b/src/main/java/org/jcnc/jnotepad/controller/cache/CacheController.java
index 28cd7d0..830356b 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/cache/CacheController.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/cache/CacheController.java
@@ -1,11 +1,11 @@
package org.jcnc.jnotepad.controller.cache;
import com.fasterxml.jackson.core.type.TypeReference;
-import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
+import org.jcnc.jnotepad.app.common.manager.ApplicationCacheManager;
+import org.jcnc.jnotepad.app.utils.JsonUtil;
+import org.jcnc.jnotepad.app.utils.LogUtil;
import org.jcnc.jnotepad.controller.config.AppConfigController;
import org.jcnc.jnotepad.model.entity.Cache;
-import org.jcnc.jnotepad.util.JsonUtil;
-import org.jcnc.jnotepad.util.LogUtil;
import org.slf4j.Logger;
import java.io.File;
diff --git a/src/main/java/org/jcnc/jnotepad/controller/config/AppConfigController.java b/src/main/java/org/jcnc/jnotepad/controller/config/AppConfigController.java
index 293432f..fb40bcb 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/config/AppConfigController.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/config/AppConfigController.java
@@ -5,8 +5,8 @@ import org.jcnc.jnotepad.app.config.AppConfig;
import java.nio.file.Paths;
-import static org.jcnc.jnotepad.common.constants.AppConstants.DEFAULT_PROPERTY;
-import static org.jcnc.jnotepad.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.DEFAULT_PROPERTY;
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
/**
* 应用程序配置文件控制器
diff --git a/src/main/java/org/jcnc/jnotepad/controller/config/PluginConfigController.java b/src/main/java/org/jcnc/jnotepad/controller/config/PluginConfigController.java
index f65146d..bce610f 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/config/PluginConfigController.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/config/PluginConfigController.java
@@ -7,7 +7,7 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
-import static org.jcnc.jnotepad.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
/**
* 插件控制器
diff --git a/src/main/java/org/jcnc/jnotepad/controller/config/UserConfigController.java b/src/main/java/org/jcnc/jnotepad/controller/config/UserConfigController.java
index 3bbb9bd..2d2b4bf 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/config/UserConfigController.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/config/UserConfigController.java
@@ -8,8 +8,8 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
-import static org.jcnc.jnotepad.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
-import static org.jcnc.jnotepad.common.constants.TextConstants.CHINESE;
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.CHINESE;
/**
* 应用程序配置控制器
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/NewFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/NewFile.java
index 6c9b0b4..b1760a4 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/NewFile.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/NewFile.java
@@ -3,7 +3,7 @@ package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
-import static org.jcnc.jnotepad.util.TabUtil.addNewFileTab;
+import static org.jcnc.jnotepad.app.utils.TabUtil.addNewFileTab;
/**
* 新建文件事件的事件处理程序。
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/OpenConfig.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/OpenConfig.java
index b73c3f7..e8b9168 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/OpenConfig.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/OpenConfig.java
@@ -1,12 +1,12 @@
package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
+import org.jcnc.jnotepad.app.utils.LogUtil;
import org.jcnc.jnotepad.controller.config.UserConfigController;
-import org.jcnc.jnotepad.util.LogUtil;
import java.io.File;
-import static org.jcnc.jnotepad.util.TabUtil.openFileToTab;
+import static org.jcnc.jnotepad.app.utils.TabUtil.openFileToTab;
/**
* 打开配置文件事件处理程序。
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/OpenFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/OpenFile.java
index 580ffce..be3e5df 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/OpenFile.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/OpenFile.java
@@ -3,17 +3,17 @@ package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.FileChooser;
+import org.jcnc.jnotepad.app.common.constants.TextConstants;
+import org.jcnc.jnotepad.app.common.manager.ApplicationCacheManager;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
-import org.jcnc.jnotepad.common.constants.TextConstants;
-import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
-import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicFileChooserFactory;
+import org.jcnc.jnotepad.app.utils.UiUtil;
import org.jcnc.jnotepad.model.entity.Cache;
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
-import org.jcnc.jnotepad.util.UiUtil;
+import org.jcnc.jnotepad.ui.component.stage.dialog.factory.impl.BasicFileChooserFactory;
import java.io.File;
-import static org.jcnc.jnotepad.util.TabUtil.openFileToTab;
+import static org.jcnc.jnotepad.app.utils.TabUtil.openFileToTab;
/**
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/RenameFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/RenameFile.java
index a636d64..b76f4d9 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/RenameFile.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/RenameFile.java
@@ -2,9 +2,9 @@ package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
-import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
+import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
-import static org.jcnc.jnotepad.util.TabUtil.rename;
+import static org.jcnc.jnotepad.app.utils.TabUtil.rename;
/**
* 重命名文件事件处理器。
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/SaveAsFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/SaveAsFile.java
index eb754d2..4b84566 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/SaveAsFile.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/SaveAsFile.java
@@ -1,10 +1,10 @@
package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
-import static org.jcnc.jnotepad.util.TabUtil.saveAsFile;
+import static org.jcnc.jnotepad.app.utils.TabUtil.saveAsFile;
/**
* 保存文件事件处理器。
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/SaveFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/SaveFile.java
index a57f382..d685a45 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/SaveFile.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuitem/SaveFile.java
@@ -2,9 +2,9 @@ package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
-import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
+import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
-import static org.jcnc.jnotepad.util.TabUtil.saveFile;
+import static org.jcnc.jnotepad.app.utils.TabUtil.saveFile;
/**
* 保存文件事件处理程序。
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/DirTreeBtn.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/DirTreeBtn.java
index 27066f3..b994a42 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/DirTreeBtn.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/DirTreeBtn.java
@@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.event.handler.toolbar;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
-import org.jcnc.jnotepad.views.manager.DirectorySidebarManager;
+import org.jcnc.jnotepad.ui.views.manager.DirectorySidebarManager;
/**
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/OpenDirectory.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/OpenDirectory.java
index 977131f..05be499 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/OpenDirectory.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/OpenDirectory.java
@@ -3,16 +3,16 @@ package org.jcnc.jnotepad.controller.event.handler.toolbar;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
+import org.jcnc.jnotepad.app.common.constants.TextConstants;
+import org.jcnc.jnotepad.app.common.manager.ApplicationCacheManager;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
-import org.jcnc.jnotepad.common.constants.TextConstants;
-import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
-import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicDirectoryChooserFactory;
+import org.jcnc.jnotepad.app.utils.FileUtil;
+import org.jcnc.jnotepad.app.utils.UiUtil;
import org.jcnc.jnotepad.model.entity.Cache;
import org.jcnc.jnotepad.model.entity.DirFileModel;
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
-import org.jcnc.jnotepad.util.FileUtil;
-import org.jcnc.jnotepad.util.UiUtil;
-import org.jcnc.jnotepad.views.manager.DirectorySidebarManager;
+import org.jcnc.jnotepad.ui.component.stage.dialog.factory.impl.BasicDirectoryChooserFactory;
+import org.jcnc.jnotepad.ui.views.manager.DirectorySidebarManager;
import java.io.File;
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/RunBtn.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/RunBtn.java
index 2548596..0150bc3 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/RunBtn.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/RunBtn.java
@@ -3,7 +3,7 @@ package org.jcnc.jnotepad.controller.event.handler.toolbar;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
-import org.jcnc.jnotepad.views.manager.BuildPanelManager;
+import org.jcnc.jnotepad.ui.views.manager.BuildPanelManager;
/**
* 终端处理器
diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/SetBtn.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/SetBtn.java
index f5e60f5..a92166f 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/SetBtn.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/toolbar/SetBtn.java
@@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.event.handler.toolbar;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
-import org.jcnc.jnotepad.component.stage.setting.SetStage;
+import org.jcnc.jnotepad.ui.component.stage.setting.SetStage;
/**
* 设置按钮事件的事件处理程序。
diff --git a/src/main/java/org/jcnc/jnotepad/controller/i18n/LocalizationController.java b/src/main/java/org/jcnc/jnotepad/controller/i18n/LocalizationController.java
index 715cd9e..343c117 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/i18n/LocalizationController.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/i18n/LocalizationController.java
@@ -9,8 +9,8 @@ import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
-import static org.jcnc.jnotepad.common.constants.TextConstants.CHINESE;
-import static org.jcnc.jnotepad.common.constants.TextConstants.ENGLISH;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.CHINESE;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.ENGLISH;
/**
* 本地化控制器
diff --git a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java
index 3be9d5a..4c79cd6 100644
--- a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java
@@ -1,15 +1,15 @@
package org.jcnc.jnotepad.controller.manager;
-import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
-import org.jcnc.jnotepad.component.module.interfaces.ControllerAble;
+import org.jcnc.jnotepad.app.common.manager.ApplicationCacheManager;
+import org.jcnc.jnotepad.ui.component.module.interfaces.ControllerAble;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
-import static org.jcnc.jnotepad.util.TabUtil.addNewFileTab;
-import static org.jcnc.jnotepad.util.TabUtil.openFileToTab;
+import static org.jcnc.jnotepad.app.utils.TabUtil.addNewFileTab;
+import static org.jcnc.jnotepad.app.utils.TabUtil.openFileToTab;
/**
* 控制器类,实现 ControllerAble 接口,用于管理文本编辑器的各种操作和事件处理。
diff --git a/src/main/java/org/jcnc/jnotepad/plugin/PluginLoader.java b/src/main/java/org/jcnc/jnotepad/controller/plugin/PluginLoader.java
similarity index 97%
rename from src/main/java/org/jcnc/jnotepad/plugin/PluginLoader.java
rename to src/main/java/org/jcnc/jnotepad/controller/plugin/PluginLoader.java
index 865d271..82ce17a 100644
--- a/src/main/java/org/jcnc/jnotepad/plugin/PluginLoader.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/plugin/PluginLoader.java
@@ -1,13 +1,13 @@
-package org.jcnc.jnotepad.plugin;
+package org.jcnc.jnotepad.controller.plugin;
-import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
+import org.jcnc.jnotepad.app.common.manager.ThreadPoolManager;
+import org.jcnc.jnotepad.app.utils.JsonUtil;
+import org.jcnc.jnotepad.app.utils.LogUtil;
import org.jcnc.jnotepad.controller.config.PluginConfigController;
import org.jcnc.jnotepad.controller.exception.AppException;
+import org.jcnc.jnotepad.controller.plugin.interfaces.Plugin;
+import org.jcnc.jnotepad.controller.plugin.manager.PluginManager;
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
-import org.jcnc.jnotepad.plugin.interfaces.Plugin;
-import org.jcnc.jnotepad.plugin.manager.PluginManager;
-import org.jcnc.jnotepad.util.JsonUtil;
-import org.jcnc.jnotepad.util.LogUtil;
import org.slf4j.Logger;
import java.io.*;
diff --git a/src/main/java/org/jcnc/jnotepad/plugin/PluginManagerInterface.java b/src/main/java/org/jcnc/jnotepad/controller/plugin/PluginManagerInterface.java
similarity index 92%
rename from src/main/java/org/jcnc/jnotepad/plugin/PluginManagerInterface.java
rename to src/main/java/org/jcnc/jnotepad/controller/plugin/PluginManagerInterface.java
index 8011ca7..8fec9fc 100644
--- a/src/main/java/org/jcnc/jnotepad/plugin/PluginManagerInterface.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/plugin/PluginManagerInterface.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.plugin;
+package org.jcnc.jnotepad.controller.plugin;
import javafx.scene.Scene;
import javafx.scene.control.Button;
@@ -6,11 +6,11 @@ import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
-import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicFileChooserFactory;
-import org.jcnc.jnotepad.plugin.manager.PluginManager;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.util.PopUpUtil;
-import org.jcnc.jnotepad.util.UiUtil;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.app.utils.PopUpUtil;
+import org.jcnc.jnotepad.app.utils.UiUtil;
+import org.jcnc.jnotepad.controller.plugin.manager.PluginManager;
+import org.jcnc.jnotepad.ui.component.stage.dialog.factory.impl.BasicFileChooserFactory;
import org.slf4j.Logger;
import java.io.File;
diff --git a/src/main/java/org/jcnc/jnotepad/controller/plugin/aReadme.md b/src/main/java/org/jcnc/jnotepad/controller/plugin/aReadme.md
new file mode 100644
index 0000000..e89957c
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/controller/plugin/aReadme.md
@@ -0,0 +1 @@
+plugin 存放插件相关的代码,包括插件接口和管理器。
diff --git a/src/main/java/org/jcnc/jnotepad/plugin/interfaces/Plugin.java b/src/main/java/org/jcnc/jnotepad/controller/plugin/interfaces/Plugin.java
similarity index 84%
rename from src/main/java/org/jcnc/jnotepad/plugin/interfaces/Plugin.java
rename to src/main/java/org/jcnc/jnotepad/controller/plugin/interfaces/Plugin.java
index daab29f..c06e46a 100644
--- a/src/main/java/org/jcnc/jnotepad/plugin/interfaces/Plugin.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/plugin/interfaces/Plugin.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.plugin.interfaces;
+package org.jcnc.jnotepad.controller.plugin.interfaces;
/**
diff --git a/src/main/java/org/jcnc/jnotepad/plugin/manager/PluginManager.java b/src/main/java/org/jcnc/jnotepad/controller/plugin/manager/PluginManager.java
similarity index 95%
rename from src/main/java/org/jcnc/jnotepad/plugin/manager/PluginManager.java
rename to src/main/java/org/jcnc/jnotepad/controller/plugin/manager/PluginManager.java
index 70e3a51..9714f36 100644
--- a/src/main/java/org/jcnc/jnotepad/plugin/manager/PluginManager.java
+++ b/src/main/java/org/jcnc/jnotepad/controller/plugin/manager/PluginManager.java
@@ -1,11 +1,11 @@
-package org.jcnc.jnotepad.plugin.manager;
+package org.jcnc.jnotepad.controller.plugin.manager;
+import org.jcnc.jnotepad.app.common.manager.ThreadPoolManager;
import org.jcnc.jnotepad.app.manager.ApplicationManager;
-import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.app.utils.PopUpUtil;
import org.jcnc.jnotepad.controller.config.PluginConfigController;
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.util.PopUpUtil;
import org.slf4j.Logger;
import java.io.File;
@@ -18,7 +18,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
-import static org.jcnc.jnotepad.plugin.PluginLoader.readPlugin;
+import static org.jcnc.jnotepad.controller.plugin.PluginLoader.readPlugin;
/**
* 插件管理器
diff --git a/src/main/java/org/jcnc/jnotepad/model/aReadme.md b/src/main/java/org/jcnc/jnotepad/model/aReadme.md
new file mode 100644
index 0000000..3bb67d3
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/model/aReadme.md
@@ -0,0 +1 @@
+model 存放模型相关的代码,包括实体类和枚举。
diff --git a/src/main/java/org/jcnc/jnotepad/model/entity/PluginDescriptor.java b/src/main/java/org/jcnc/jnotepad/model/entity/PluginDescriptor.java
index b7e4f71..c339d88 100644
--- a/src/main/java/org/jcnc/jnotepad/model/entity/PluginDescriptor.java
+++ b/src/main/java/org/jcnc/jnotepad/model/entity/PluginDescriptor.java
@@ -1,7 +1,7 @@
package org.jcnc.jnotepad.model.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
-import org.jcnc.jnotepad.plugin.interfaces.Plugin;
+import org.jcnc.jnotepad.controller.plugin.interfaces.Plugin;
import java.util.Objects;
diff --git a/src/main/java/org/jcnc/jnotepad/ui/component/aReadme.md b/src/main/java/org/jcnc/jnotepad/ui/component/aReadme.md
new file mode 100644
index 0000000..dee97fc
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/aReadme.md
@@ -0,0 +1 @@
+component 目录包含可复用的UI组件,如自定义模块。
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/TextCodeArea.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/TextCodeArea.java
similarity index 99%
rename from src/main/java/org/jcnc/jnotepad/component/module/TextCodeArea.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/module/TextCodeArea.java
index 3a36ae3..c5ac2f4 100644
--- a/src/main/java/org/jcnc/jnotepad/component/module/TextCodeArea.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/TextCodeArea.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.module;
+package org.jcnc.jnotepad.ui.component.module;
import javafx.application.Platform;
import javafx.geometry.Insets;
diff --git a/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractBorderPane.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractBorderPane.java
new file mode 100644
index 0000000..934c3a6
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractBorderPane.java
@@ -0,0 +1,65 @@
+package org.jcnc.jnotepad.ui.component.module.base;
+
+import javafx.scene.Node;
+import javafx.scene.layout.BorderPane;
+import org.jcnc.jnotepad.ui.component.module.interfaces.BorderPaneAble;
+
+/**
+ * 抽象边界面板类。
+ *
+ * 这个抽象类继承自 JavaFX 的 BorderPane 类,实现了 BorderPaneAble 接口,用于管理 UI 组件的布局。
+ *
+ * @author luke
+ */
+public abstract class AbstractBorderPane extends BorderPane implements BorderPaneAble {
+
+ /**
+ * 设置顶部组件。
+ *
+ * @param node 顶部组件
+ */
+ @Override
+ public void setTopComponent(Node node) {
+ setTop(node);
+ }
+
+ /**
+ * 设置底部组件。
+ *
+ * @param node 底部组件
+ */
+ @Override
+ public void setBottomComponent(Node node) {
+ setBottom(node);
+ }
+
+ /**
+ * 设置左侧组件。
+ *
+ * @param node 左侧组件
+ */
+ @Override
+ public void setLeftComponent(Node node) {
+ setLeft(node);
+ }
+
+ /**
+ * 设置右侧组件。
+ *
+ * @param node 右侧组件
+ */
+ @Override
+ public void setRightComponent(Node node) {
+ setRight(node);
+ }
+
+ /**
+ * 设置中心组件。
+ *
+ * @param node 中心组件
+ */
+ @Override
+ public void setCenterComponent(Node node) {
+ setCenter(node);
+ }
+}
diff --git a/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractHorizontalBox.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractHorizontalBox.java
new file mode 100644
index 0000000..93b7e05
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractHorizontalBox.java
@@ -0,0 +1,55 @@
+package org.jcnc.jnotepad.ui.component.module.base;
+
+import javafx.scene.Node;
+import javafx.scene.layout.HBox;
+import org.jcnc.jnotepad.ui.component.module.interfaces.HorizontalBoxAble;
+
+/**
+ * 抽象水平盒子类。
+ *
+ * 这个抽象类继承自 JavaFX 的 HBox 类,实现了 HorizontalBoxAble 接口,用于管理水平排列的 UI 组件。
+ *
+ * 请注意,这个类只是一个抽象类,用于提供基本的水平盒子布局功能。您可以继承此类并添加自己的 UI 组件以构建更复杂的界面。
+ *
+ * @author luke
+ */
+public abstract class AbstractHorizontalBox extends HBox implements HorizontalBoxAble {
+ private final HBox hBox;
+
+ /**
+ * 创建一个新的 AbstractHorizontalBox 实例。
+ */
+ public AbstractHorizontalBox() {
+ hBox = new HBox();
+ }
+
+ /**
+ * 向水平盒子添加一个节点。
+ *
+ * @param node 要添加的节点
+ */
+ @Override
+ public void addChild(Node node) {
+ hBox.getChildren().add(node);
+ }
+
+ /**
+ * 向水平盒子添加多个节点。
+ *
+ * @param nodes 要添加的节点数组
+ */
+ @Override
+ public void addChild(Node... nodes) {
+ hBox.getChildren().addAll(nodes);
+ }
+
+ /**
+ * 获取水平盒子的实例。
+ *
+ * @return 水平盒子实例
+ */
+ @Override
+ public HBox getHorizontalBox() {
+ return hBox;
+ }
+}
diff --git a/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractVerticalBox.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractVerticalBox.java
new file mode 100644
index 0000000..a460894
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/base/AbstractVerticalBox.java
@@ -0,0 +1,55 @@
+package org.jcnc.jnotepad.ui.component.module.base;
+
+import javafx.scene.Node;
+import javafx.scene.layout.VBox;
+import org.jcnc.jnotepad.ui.component.module.interfaces.VerticalBoxAble;
+
+/**
+ * 抽象垂直盒子类。
+ *
+ * 这个抽象类继承自 JavaFX 的 VBox 类,实现了 VerticalBoxAble 接口,用于管理垂直排列的 UI 组件。
+ *
+ * 请注意,这个类只是一个抽象类,用于提供基本的垂直盒子布局功能。您可以继承此类并添加自己的 UI 组件以构建更复杂的界面。
+ *
+ * @author luke
+ */
+public abstract class AbstractVerticalBox extends VBox implements VerticalBoxAble {
+ private final VBox vBox;
+
+ /**
+ * 创建一个新的 AbstractVerticalBox 实例。
+ */
+ public AbstractVerticalBox() {
+ vBox = new VBox();
+ }
+
+ /**
+ * 向垂直盒子添加一个节点。
+ *
+ * @param node 要添加的节点
+ */
+ @Override
+ public void addChild(Node node) {
+ vBox.getChildren().add(node);
+ }
+
+ /**
+ * 向垂直盒子添加多个节点。
+ *
+ * @param nodes 要添加的节点数组
+ */
+ @Override
+ public void addChild(Node... nodes) {
+ vBox.getChildren().addAll(nodes);
+ }
+
+ /**
+ * 获取垂直盒子的实例。
+ *
+ * @return 垂直盒子实例
+ */
+ @Override
+ public VBox getVerticalBox() {
+ return vBox;
+ }
+}
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/hbox/CustomTitleBarBox.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/hbox/CustomTitleBarBox.java
similarity index 84%
rename from src/main/java/org/jcnc/jnotepad/component/module/hbox/CustomTitleBarBox.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/module/hbox/CustomTitleBarBox.java
index 6b65b4b..534da1f 100644
--- a/src/main/java/org/jcnc/jnotepad/component/module/hbox/CustomTitleBarBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/hbox/CustomTitleBarBox.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.module.hbox;
+package org.jcnc.jnotepad.ui.component.module.hbox;
import javafx.animation.TranslateTransition;
import javafx.geometry.Pos;
@@ -14,11 +14,18 @@ import javafx.util.Duration;
* 自定义标题栏组件,用于自定义窗口标题栏的显示和交互。
* 该类提供了窗口图标、标题文本以及最小化、最大化和关闭按钮的功能。
*
- * @author 许轲
+ * 这个类允许用户创建自定义的窗口标题栏,包括图标、标题文本和按钮来最小化、最大化和关闭窗口。
+ *
+ * 通过使用 {@link #getInstance()} 方法获取单例实例,然后将其添加到窗口的顶部,即可创建自定义标题栏。
+ *
+ * @author luke
*/
public class CustomTitleBarBox extends HBox {
private static CustomTitleBarBox instance;
+ /**
+ * 创建一个新的 CustomTitleBarBox 实例。
+ */
public CustomTitleBarBox() {
// 设置样式和布局
this.setAlignment(Pos.CENTER);
@@ -65,9 +72,9 @@ public class CustomTitleBarBox extends HBox {
}
/**
- * 获取标题栏的单例实例
+ * 获取标题栏的单例实例。
*
- * @return CustomTitleBar的单例实例
+ * @return CustomTitleBarBox 的单例实例
*/
public static CustomTitleBarBox getInstance() {
if (instance == null) {
@@ -77,9 +84,9 @@ public class CustomTitleBarBox extends HBox {
}
/**
- * 使窗口可拖动
+ * 使窗口可拖动。
*
- * @param stage 要拖动的窗口的Stage对象
+ * @param stage 要拖动的窗口的 Stage 对象
*/
public void makeDraggable(Stage stage) {
// 创建一个平移动画,设置持续时间和目标位置
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/interfaces/BorderPaneAble.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/BorderPaneAble.java
similarity index 82%
rename from src/main/java/org/jcnc/jnotepad/component/module/interfaces/BorderPaneAble.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/BorderPaneAble.java
index f4d6b7f..1c9946f 100644
--- a/src/main/java/org/jcnc/jnotepad/component/module/interfaces/BorderPaneAble.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/BorderPaneAble.java
@@ -1,12 +1,14 @@
-package org.jcnc.jnotepad.component.module.interfaces;
+package org.jcnc.jnotepad.ui.component.module.interfaces;
import javafx.scene.Node;
/**
- * 可设置BorderPane子组件的接口
+ * 可设置BorderPane子组件的接口。
*
* 该接口定义了设置BorderPane的各个子组件(上、下、左、右、中)的方法。
*
+ * 实现此接口的类可以设置BorderPane布局的各个子组件,以定制UI布局。
+ *
* @author luke
*/
public interface BorderPaneAble {
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/interfaces/ControllerAble.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/ControllerAble.java
similarity index 57%
rename from src/main/java/org/jcnc/jnotepad/component/module/interfaces/ControllerAble.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/ControllerAble.java
index eaaf6c2..a8054c5 100644
--- a/src/main/java/org/jcnc/jnotepad/component/module/interfaces/ControllerAble.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/ControllerAble.java
@@ -1,11 +1,14 @@
-package org.jcnc.jnotepad.component.module.interfaces;
+package org.jcnc.jnotepad.ui.component.module.interfaces;
/**
- * 控制器接口类
+ * 控制器接口类。
*
- * 该接口定义了控制器的方法,用于打开关联文件并创建TextArea。
+ * 该接口定义了控制器的方法,用于打开关联文件并创建 TextArea。
*
- * @author 许轲
+ * 实现此接口的类可以通过调用方法来打开关联文件并创建 TextArea,以执行与文件操作相关的控制逻辑。
+ *
+ * @param 原始参数的类型
+ * @author luke
*/
public interface ControllerAble {
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/interfaces/HorizontalBoxAble.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/HorizontalBoxAble.java
similarity index 62%
rename from src/main/java/org/jcnc/jnotepad/component/module/interfaces/HorizontalBoxAble.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/HorizontalBoxAble.java
index 3184723..cc2f441 100644
--- a/src/main/java/org/jcnc/jnotepad/component/module/interfaces/HorizontalBoxAble.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/HorizontalBoxAble.java
@@ -1,12 +1,14 @@
-package org.jcnc.jnotepad.component.module.interfaces;
+package org.jcnc.jnotepad.ui.component.module.interfaces;
import javafx.scene.Node;
import javafx.scene.layout.HBox;
/**
- * 可添加子节点的水平布局接口
+ * 可添加子节点的水平布局接口。
*
- * 该接口定义了添加子节点和获取水平布局的方法。
+ * 该接口定义了向水平布局添加子节点和获取水平布局的方法。
+ *
+ * 实现此接口的类可以使用方法将一个或多个子节点添加到水平布局中,以自定义水平布局的UI组件。
*
* @author luke
*/
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/interfaces/VerticalBoxAble.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/VerticalBoxAble.java
similarity index 61%
rename from src/main/java/org/jcnc/jnotepad/component/module/interfaces/VerticalBoxAble.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/VerticalBoxAble.java
index 87b5f10..1808bb7 100644
--- a/src/main/java/org/jcnc/jnotepad/component/module/interfaces/VerticalBoxAble.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/interfaces/VerticalBoxAble.java
@@ -1,12 +1,14 @@
-package org.jcnc.jnotepad.component.module.interfaces;
+package org.jcnc.jnotepad.ui.component.module.interfaces;
import javafx.scene.Node;
import javafx.scene.layout.VBox;
/**
- * 可添加子节点的垂直布局接口
+ * 可添加子节点的垂直布局接口。
*
- * 该接口定义了添加子节点和获取垂直布局的方法。
+ * 该接口定义了向垂直布局添加子节点和获取垂直布局的方法。
+ *
+ * 实现此接口的类可以使用方法将一个或多个子节点添加到垂直布局中,以自定义垂直布局的UI组件。
*
* @author luke
*/
diff --git a/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/BuildPanel.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/BuildPanel.java
new file mode 100644
index 0000000..19eb2ae
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/BuildPanel.java
@@ -0,0 +1,85 @@
+package org.jcnc.jnotepad.ui.component.module.vbox;
+
+import javafx.scene.control.Tab;
+import javafx.scene.control.TabPane;
+import org.jcnc.jnotepad.ui.component.module.vbox.components.CmdTerminalBox;
+import org.jcnc.jnotepad.ui.component.module.vbox.components.DebugBox;
+import org.jcnc.jnotepad.ui.component.module.vbox.components.RunBox;
+
+/**
+ * 底部运行、调试和命令终端面板。
+ *
+ * 这个类实现了一个包含运行信息、调试信息和命令终端的底部面板。它是TabPane的子类,用于将这三个组件以选项卡的形式显示在底部面板上。
+ *
+ * 可以通过调用getInstance方法获取单例实例。
+ *
+ * @see CmdTerminalBox
+ * @see RunBox
+ * @see DebugBox
+ * @see TabPane
+ * @author cccqyu
+ */
+public class BuildPanel extends TabPane {
+
+ private static BuildPanel instance = null;
+
+ /**
+ * 获取BuildPanel的单例实例。
+ *
+ * @return BuildPanel的单例实例
+ */
+ public static BuildPanel getInstance() {
+
+ if (instance == null) {
+ instance = new BuildPanel();
+ }
+ return instance;
+ }
+
+ private final CmdTerminalBox cmdTerminalBox;
+ private final RunBox runBox;
+ private final DebugBox debugBox;
+
+ private BuildPanel() {
+ cmdTerminalBox = new CmdTerminalBox();
+ runBox = new RunBox();
+ debugBox = new DebugBox();
+
+ Tab runTab = new Tab("运行", runBox);
+ runTab.setClosable(false);
+
+ Tab buildTab = new Tab("调试", debugBox);
+ buildTab.setClosable(false);
+
+ Tab cmdTab = new Tab("命令终端", cmdTerminalBox);
+ cmdTab.setClosable(false);
+ this.getTabs().addAll(runTab, buildTab, cmdTab);
+ }
+
+ /**
+ * 获取命令终端组件。
+ *
+ * @return CmdTerminalBox对象
+ */
+ public CmdTerminalBox getCmdTerminalBox() {
+ return cmdTerminalBox;
+ }
+
+ /**
+ * 获取运行信息组件。
+ *
+ * @return RunBox对象
+ */
+ public RunBox getRunBox() {
+ return runBox;
+ }
+
+ /**
+ * 获取调试信息组件。
+ *
+ * @return DebugBox对象
+ */
+ public DebugBox getDebugBox() {
+ return debugBox;
+ }
+}
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/vbox/components/CmdTerminalBox.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/CmdTerminalBox.java
similarity index 90%
rename from src/main/java/org/jcnc/jnotepad/component/module/vbox/components/CmdTerminalBox.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/CmdTerminalBox.java
index 3d7951a..97ed871 100644
--- a/src/main/java/org/jcnc/jnotepad/component/module/vbox/components/CmdTerminalBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/CmdTerminalBox.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.module.vbox.components;
+package org.jcnc.jnotepad.ui.component.module.vbox.components;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
@@ -10,7 +10,7 @@ import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.util.Duration;
import org.fxmisc.richtext.StyleClassedTextArea;
-import org.jcnc.jnotepad.util.LogUtil;
+import org.jcnc.jnotepad.app.utils.LogUtil;
import java.io.*;
import java.nio.charset.Charset;
@@ -18,6 +18,12 @@ import java.nio.charset.Charset;
/**
* 命令行终端界面。
*
+ * 这个类实现了一个简单的命令行终端界面,用于显示命令输出并接受用户输入的命令。
+ *
+ * 通过调用构造函数来创建CmdTerminal对象。它包括了一个用于显示命令输出的文本区域和一个用于输入命令的文本框。
+ *
+ * 这个终端界面支持基本的命令执行,并将命令输出显示在文本区域中。
+ *
* @author luke
*/
public class CmdTerminalBox extends VBox {
@@ -64,7 +70,6 @@ public class CmdTerminalBox extends VBox {
// 获取当前工作目录的文件夹路径
currentDirectory = System.getProperty("user.dir");
-
// 创建并启动cmd进程,使用GBK字符编码
try {
cmdProcess = new ProcessBuilder("cmd.exe")
@@ -77,11 +82,9 @@ public class CmdTerminalBox extends VBox {
LogUtil.getLogger(this.getClass()).info("已调用, {}", cmdProcess);
}
-
// 延迟执行打印当前文件夹路径的语句
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0.5), event -> {
appendTextToCmdOutput(currentDirectory + ">" + "\n");
-
}));
timeline.setCycleCount(1);
timeline.play();
diff --git a/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/DebugBox.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/DebugBox.java
new file mode 100644
index 0000000..9be0a3f
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/DebugBox.java
@@ -0,0 +1,31 @@
+package org.jcnc.jnotepad.ui.component.module.vbox.components;
+
+import org.jcnc.jnotepad.ui.component.module.TextCodeArea;
+
+/**
+ * 调试信息显示界面。
+ *
+ * 这个类实现了一个用于显示调试信息的界面,它是TextCodeArea的子类,并在构造函数中将其设置为不可编辑状态。
+ *
+ * 调试信息可以通过调用setText方法将文本添加到界面中。
+ *
+ * @author cccqyu
+ */
+public class DebugBox extends TextCodeArea {
+ /**
+ * 创建DebugBox对象的构造函数。
+ */
+ public DebugBox() {
+ super();
+ this.setEditable(false);
+ }
+
+ /**
+ * 设置调试信息的文本内容。
+ *
+ * @param text 要显示的调试信息文本
+ */
+ public void setText(String text) {
+ this.appendText(text);
+ }
+}
diff --git a/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/RunBox.java b/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/RunBox.java
new file mode 100644
index 0000000..01fe3ad
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/module/vbox/components/RunBox.java
@@ -0,0 +1,31 @@
+package org.jcnc.jnotepad.ui.component.module.vbox.components;
+
+import org.jcnc.jnotepad.ui.component.module.TextCodeArea;
+
+/**
+ * 运行信息显示界面。
+ *
+ * 这个类实现了一个用于显示运行信息的界面,它是TextCodeArea的子类,并在构造函数中将其设置为不可编辑状态。
+ *
+ * 运行信息可以通过调用setText方法将文本添加到界面中。
+ *
+ * @author cccqyu
+ */
+public class RunBox extends TextCodeArea {
+ /**
+ * 创建RunBox对象的构造函数。
+ */
+ public RunBox() {
+ super();
+ this.setEditable(false);
+ }
+
+ /**
+ * 设置运行信息的文本内容。
+ *
+ * @param text 要显示的运行信息文本
+ */
+ public void setText(String text) {
+ this.appendText(text);
+ }
+}
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/AppDialogBuilder.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/AppDialogBuilder.java
similarity index 97%
rename from src/main/java/org/jcnc/jnotepad/component/stage/dialog/AppDialogBuilder.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/AppDialogBuilder.java
index ec46440..b4011eb 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/AppDialogBuilder.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/AppDialogBuilder.java
@@ -1,13 +1,13 @@
-package org.jcnc.jnotepad.component.stage.dialog;
+package org.jcnc.jnotepad.ui.component.stage.dialog;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.image.Image;
import javafx.stage.Modality;
import javafx.stage.Stage;
-import org.jcnc.jnotepad.component.stage.dialog.interfaces.DialogButtonAction;
+import org.jcnc.jnotepad.app.utils.UiUtil;
import org.jcnc.jnotepad.model.enums.DialogType;
-import org.jcnc.jnotepad.util.UiUtil;
+import org.jcnc.jnotepad.ui.component.stage.dialog.interfaces.DialogButtonAction;
import org.kordamp.ikonli.javafx.FontIcon;
/**
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/AppDialogStage.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/AppDialogStage.java
similarity index 95%
rename from src/main/java/org/jcnc/jnotepad/component/stage/dialog/AppDialogStage.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/AppDialogStage.java
index b5cb9f3..b0ef87b 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/AppDialogStage.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/AppDialogStage.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.dialog;
+package org.jcnc.jnotepad.ui.component.stage.dialog;
import javafx.scene.Scene;
import javafx.scene.control.Button;
@@ -7,7 +7,7 @@ import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
-import org.jcnc.jnotepad.component.stage.dialog.interfaces.DialogButtonAction;
+import org.jcnc.jnotepad.ui.component.stage.dialog.interfaces.DialogButtonAction;
/**
* 应用对话框
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/DirectoryChooserFactory.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/DirectoryChooserFactory.java
similarity index 93%
rename from src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/DirectoryChooserFactory.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/DirectoryChooserFactory.java
index 104f4b2..0958a10 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/DirectoryChooserFactory.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/DirectoryChooserFactory.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.dialog.factory;
+package org.jcnc.jnotepad.ui.component.stage.dialog.factory;
import javafx.stage.DirectoryChooser;
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/FileChooserFactory.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/FileChooserFactory.java
similarity index 94%
rename from src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/FileChooserFactory.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/FileChooserFactory.java
index 954c797..77f815f 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/FileChooserFactory.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/FileChooserFactory.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.dialog.factory;
+package org.jcnc.jnotepad.ui.component.stage.dialog.factory;
import javafx.stage.FileChooser;
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/impl/BasicDirectoryChooserFactory.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/impl/BasicDirectoryChooserFactory.java
similarity index 90%
rename from src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/impl/BasicDirectoryChooserFactory.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/impl/BasicDirectoryChooserFactory.java
index 9e07fc1..7870fcf 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/impl/BasicDirectoryChooserFactory.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/impl/BasicDirectoryChooserFactory.java
@@ -1,7 +1,7 @@
-package org.jcnc.jnotepad.component.stage.dialog.factory.impl;
+package org.jcnc.jnotepad.ui.component.stage.dialog.factory.impl;
import javafx.stage.DirectoryChooser;
-import org.jcnc.jnotepad.component.stage.dialog.factory.DirectoryChooserFactory;
+import org.jcnc.jnotepad.ui.component.stage.dialog.factory.DirectoryChooserFactory;
import java.io.File;
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/impl/BasicFileChooserFactory.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/impl/BasicFileChooserFactory.java
similarity index 94%
rename from src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/impl/BasicFileChooserFactory.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/impl/BasicFileChooserFactory.java
index c84b86f..c8152d3 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/factory/impl/BasicFileChooserFactory.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/factory/impl/BasicFileChooserFactory.java
@@ -1,7 +1,7 @@
-package org.jcnc.jnotepad.component.stage.dialog.factory.impl;
+package org.jcnc.jnotepad.ui.component.stage.dialog.factory.impl;
import javafx.stage.FileChooser;
-import org.jcnc.jnotepad.component.stage.dialog.factory.FileChooserFactory;
+import org.jcnc.jnotepad.ui.component.stage.dialog.factory.FileChooserFactory;
import java.io.File;
import java.util.List;
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/interfaces/DialogButtonAction.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/interfaces/DialogButtonAction.java
similarity index 72%
rename from src/main/java/org/jcnc/jnotepad/component/stage/dialog/interfaces/DialogButtonAction.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/interfaces/DialogButtonAction.java
index f4bb4e4..8a27e43 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/dialog/interfaces/DialogButtonAction.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/dialog/interfaces/DialogButtonAction.java
@@ -1,6 +1,6 @@
-package org.jcnc.jnotepad.component.stage.dialog.interfaces;
+package org.jcnc.jnotepad.ui.component.stage.dialog.interfaces;
-import org.jcnc.jnotepad.component.stage.dialog.AppDialogStage;
+import org.jcnc.jnotepad.ui.component.stage.dialog.AppDialogStage;
/**
* 对话框按钮点击事件接口
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/setting/CustomSetButton.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/CustomSetButton.java
similarity index 79%
rename from src/main/java/org/jcnc/jnotepad/component/stage/setting/CustomSetButton.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/CustomSetButton.java
index 8432ca7..b349004 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/setting/CustomSetButton.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/CustomSetButton.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.setting;
+package org.jcnc.jnotepad.ui.component.stage.setting;
import javafx.scene.control.Button;
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/setting/SetDevBox.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/SetDevBox.java
similarity index 97%
rename from src/main/java/org/jcnc/jnotepad/component/stage/setting/SetDevBox.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/SetDevBox.java
index 990c849..123464b 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/setting/SetDevBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/SetDevBox.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.setting;
+package org.jcnc.jnotepad.ui.component.stage.setting;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/setting/SetStage.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/SetStage.java
similarity index 95%
rename from src/main/java/org/jcnc/jnotepad/component/stage/setting/SetStage.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/SetStage.java
index b6aa98b..6be26fc 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/setting/SetStage.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/setting/SetStage.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.setting;
+package org.jcnc.jnotepad.ui.component.stage.setting;
import atlantafx.base.controls.CustomTextField;
import atlantafx.base.theme.Styles;
@@ -16,24 +16,24 @@ import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Modality;
import javafx.stage.Stage;
+import org.jcnc.jnotepad.app.common.constants.TextConstants;
+import org.jcnc.jnotepad.app.common.manager.ApplicationCacheManager;
import org.jcnc.jnotepad.app.config.AppConfig;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
import org.jcnc.jnotepad.app.manager.ApplicationManager;
-import org.jcnc.jnotepad.common.constants.TextConstants;
-import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
-import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicDirectoryChooserFactory;
+import org.jcnc.jnotepad.app.utils.PopUpUtil;
+import org.jcnc.jnotepad.app.utils.UiUtil;
import org.jcnc.jnotepad.controller.config.AppConfigController;
import org.jcnc.jnotepad.controller.event.handler.toolbar.OpenDirectory;
+import org.jcnc.jnotepad.controller.plugin.PluginManagerInterface;
import org.jcnc.jnotepad.model.entity.Cache;
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
-import org.jcnc.jnotepad.plugin.PluginManagerInterface;
-import org.jcnc.jnotepad.util.PopUpUtil;
-import org.jcnc.jnotepad.util.UiUtil;
+import org.jcnc.jnotepad.ui.component.stage.dialog.factory.impl.BasicDirectoryChooserFactory;
import java.io.File;
-import static org.jcnc.jnotepad.common.constants.AppConstants.SCREEN_LENGTH;
-import static org.jcnc.jnotepad.common.constants.AppConstants.SCREEN_WIDTH;
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.SCREEN_LENGTH;
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.SCREEN_WIDTH;
/**
* SetStage类表示设置窗口的单例对象。此窗口用于显示不同的设置选项和其对应的布局。
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/builder/StageButtonBuilder.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/builder/StageButtonBuilder.java
similarity index 92%
rename from src/main/java/org/jcnc/jnotepad/component/stage/topmenu/builder/StageButtonBuilder.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/builder/StageButtonBuilder.java
index 22e022b..01b7ec7 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/builder/StageButtonBuilder.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/builder/StageButtonBuilder.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.topmenu.builder;
+package org.jcnc.jnotepad.ui.component.stage.topmenu.builder;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/help/DeveloperDebugPaneStage.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/help/DeveloperDebugPaneStage.java
similarity index 94%
rename from src/main/java/org/jcnc/jnotepad/component/stage/topmenu/help/DeveloperDebugPaneStage.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/help/DeveloperDebugPaneStage.java
index 7735781..a9bcba6 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/help/DeveloperDebugPaneStage.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/help/DeveloperDebugPaneStage.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.topmenu.help;
+package org.jcnc.jnotepad.ui.component.stage.topmenu.help;
import javafx.geometry.Insets;
import javafx.scene.Scene;
@@ -10,10 +10,10 @@ import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.core.component.stage.AbstractPaneStage;
import org.jcnc.jnotepad.app.manager.ApplicationManager;
-import org.jcnc.jnotepad.component.stage.topmenu.builder.StageButtonBuilder;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.util.PopUpUtil;
-import org.jcnc.jnotepad.util.UiUtil;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.app.utils.PopUpUtil;
+import org.jcnc.jnotepad.app.utils.UiUtil;
+import org.jcnc.jnotepad.ui.component.stage.topmenu.builder.StageButtonBuilder;
import org.slf4j.Logger;
/**
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/help/HelpPaneStage.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/help/HelpPaneStage.java
similarity index 95%
rename from src/main/java/org/jcnc/jnotepad/component/stage/topmenu/help/HelpPaneStage.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/help/HelpPaneStage.java
index 7ac86ad..14b0dc6 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/help/HelpPaneStage.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/help/HelpPaneStage.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.topmenu.help;
+package org.jcnc.jnotepad.ui.component.stage.topmenu.help;
import atlantafx.base.theme.Styles;
import javafx.event.ActionEvent;
@@ -16,12 +16,12 @@ import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.core.component.stage.AbstractPaneStage;
-import org.jcnc.jnotepad.util.ClipboardUtil;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.util.NotificationUtil;
-import org.jcnc.jnotepad.util.UiUtil;
+import org.jcnc.jnotepad.app.utils.ClipboardUtil;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.app.utils.NotificationUtil;
+import org.jcnc.jnotepad.app.utils.UiUtil;
-import static org.jcnc.jnotepad.common.constants.AppConstants.*;
+import static org.jcnc.jnotepad.app.common.constants.AppConstants.*;
/**
* 帮助页面
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/plugin/CustomSplitPane.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/plugin/CustomSplitPane.java
similarity index 96%
rename from src/main/java/org/jcnc/jnotepad/component/stage/topmenu/plugin/CustomSplitPane.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/plugin/CustomSplitPane.java
index 42a6e36..4018f0a 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/plugin/CustomSplitPane.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/plugin/CustomSplitPane.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.topmenu.plugin;
+package org.jcnc.jnotepad.ui.component.stage.topmenu.plugin;
import javafx.geometry.Orientation;
import javafx.scene.control.SplitPane;
diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/plugin/PluginManagementPane.java b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/plugin/PluginManagementPane.java
similarity index 97%
rename from src/main/java/org/jcnc/jnotepad/component/stage/topmenu/plugin/PluginManagementPane.java
rename to src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/plugin/PluginManagementPane.java
index fa39582..7717116 100644
--- a/src/main/java/org/jcnc/jnotepad/component/stage/topmenu/plugin/PluginManagementPane.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/component/stage/topmenu/plugin/PluginManagementPane.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.component.stage.topmenu.plugin;
+package org.jcnc.jnotepad.ui.component.stage.topmenu.plugin;
import atlantafx.base.controls.Tile;
import atlantafx.base.controls.ToggleSwitch;
@@ -26,12 +26,12 @@ import javafx.stage.Stage;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;
import org.jcnc.jnotepad.api.core.component.stage.AbstractPaneStage;
-import org.jcnc.jnotepad.component.stage.setting.CustomSetButton;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.app.utils.PopUpUtil;
+import org.jcnc.jnotepad.app.utils.UiUtil;
+import org.jcnc.jnotepad.controller.plugin.manager.PluginManager;
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
-import org.jcnc.jnotepad.plugin.manager.PluginManager;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.util.PopUpUtil;
-import org.jcnc.jnotepad.util.UiUtil;
+import org.jcnc.jnotepad.ui.component.stage.setting.CustomSetButton;
import org.slf4j.Logger;
import java.awt.*;
diff --git a/src/main/java/org/jcnc/jnotepad/ui/views/aReadme.md b/src/main/java/org/jcnc/jnotepad/ui/views/aReadme.md
new file mode 100644
index 0000000..3c76b3b
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/aReadme.md
@@ -0,0 +1 @@
+view 存放与视图相关的代码。
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/BottomStatusBoxManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/BottomStatusBoxManager.java
similarity index 95%
rename from src/main/java/org/jcnc/jnotepad/views/manager/BottomStatusBoxManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/BottomStatusBoxManager.java
index 4874082..afb5bed 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/BottomStatusBoxManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/BottomStatusBoxManager.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import javafx.beans.value.ChangeListener;
import javafx.collections.ObservableList;
@@ -10,12 +10,12 @@ import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.layout.HBox;
import org.jcnc.jnotepad.api.core.views.manager.builder.BottomStatusBoxButtonBuilder;
+import org.jcnc.jnotepad.app.common.constants.TextConstants;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
-import org.jcnc.jnotepad.common.constants.TextConstants;
-import org.jcnc.jnotepad.component.module.TextCodeArea;
-import org.jcnc.jnotepad.views.root.bottom.status.BottomStatusBox;
-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.ui.component.module.TextCodeArea;
+import org.jcnc.jnotepad.ui.views.root.bottom.status.BottomStatusBox;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTab;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTabPane;
import org.kordamp.ikonli.javafx.FontIcon;
import java.nio.charset.Charset;
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/BuildPanelManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/BuildPanelManager.java
similarity index 89%
rename from src/main/java/org/jcnc/jnotepad/views/manager/BuildPanelManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/BuildPanelManager.java
index 199fb73..4ba4cb2 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/BuildPanelManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/BuildPanelManager.java
@@ -1,8 +1,8 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import javafx.scene.control.SplitPane;
-import org.jcnc.jnotepad.component.module.TextCodeArea;
-import org.jcnc.jnotepad.views.root.center.main.MainBorderPane;
+import org.jcnc.jnotepad.ui.component.module.TextCodeArea;
+import org.jcnc.jnotepad.ui.views.root.center.main.MainBorderPane;
/**
* 构建底部三大菜单管理类
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/CenterTabPaneManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/CenterTabPaneManager.java
similarity index 95%
rename from src/main/java/org/jcnc/jnotepad/views/manager/CenterTabPaneManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/CenterTabPaneManager.java
index d7e6584..4d3cbc9 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/CenterTabPaneManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/CenterTabPaneManager.java
@@ -1,18 +1,18 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.scene.control.Tab;
import javafx.stage.Stage;
-import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
-import org.jcnc.jnotepad.component.module.TextCodeArea;
+import org.jcnc.jnotepad.app.common.manager.ApplicationCacheManager;
+import org.jcnc.jnotepad.app.utils.FileUtil;
+import org.jcnc.jnotepad.app.utils.PopUpUtil;
import org.jcnc.jnotepad.controller.config.UserConfigController;
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
-import org.jcnc.jnotepad.util.FileUtil;
-import org.jcnc.jnotepad.util.PopUpUtil;
-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.menubar.TopMenuBar;
+import org.jcnc.jnotepad.ui.component.module.TextCodeArea;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTab;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTabPane;
+import org.jcnc.jnotepad.ui.views.root.top.menubar.TopMenuBar;
import java.io.File;
import java.util.ArrayList;
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/DirectorySidebarManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/DirectorySidebarManager.java
similarity index 92%
rename from src/main/java/org/jcnc/jnotepad/views/manager/DirectorySidebarManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/DirectorySidebarManager.java
index bc2b104..f774190 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/DirectorySidebarManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/DirectorySidebarManager.java
@@ -1,15 +1,15 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import javafx.beans.value.ChangeListener;
import javafx.scene.control.SplitPane;
import javafx.scene.control.TreeItem;
-import org.jcnc.jnotepad.common.constants.SplitPaneItemConstants;
-import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
+import org.jcnc.jnotepad.app.common.constants.SplitPaneItemConstants;
+import org.jcnc.jnotepad.app.common.manager.ApplicationCacheManager;
+import org.jcnc.jnotepad.app.utils.FileUtil;
import org.jcnc.jnotepad.controller.event.handler.toolbar.OpenDirectory;
import org.jcnc.jnotepad.model.entity.DirFileModel;
-import org.jcnc.jnotepad.util.FileUtil;
-import org.jcnc.jnotepad.views.root.center.main.MainBorderPane;
-import org.jcnc.jnotepad.views.root.center.main.center.directory.DirectorySidebarPane;
+import org.jcnc.jnotepad.ui.views.root.center.main.MainBorderPane;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.directory.DirectorySidebarPane;
import java.io.File;
import java.util.List;
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/MainBorderPaneManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/MainBorderPaneManager.java
similarity index 77%
rename from src/main/java/org/jcnc/jnotepad/views/manager/MainBorderPaneManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/MainBorderPaneManager.java
index 79aa88c..aff2c01 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/MainBorderPaneManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/MainBorderPaneManager.java
@@ -1,12 +1,12 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import javafx.geometry.Orientation;
import javafx.scene.control.SplitPane;
-import org.jcnc.jnotepad.common.constants.SplitPaneItemConstants;
-import org.jcnc.jnotepad.component.module.vbox.BuildPanel;
-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;
+import org.jcnc.jnotepad.app.common.constants.SplitPaneItemConstants;
+import org.jcnc.jnotepad.ui.component.module.vbox.BuildPanel;
+import org.jcnc.jnotepad.ui.views.root.center.main.MainBorderPane;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.directory.DirectorySidebarPane;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTabPane;
/**
* 主界面边界布局
@@ -52,7 +52,7 @@ public class MainBorderPaneManager {
BuildPanel buildPanel = BuildPanel.getInstance();
rootSplitPane.getItems().add(SplitPaneItemConstants.ROOT_SPLIT_PANE_TOP_SPLIT_PANE, topSplitPane);
- rootSplitPane.getItems().add(SplitPaneItemConstants.ROOT_SPLIT_PANE_CMDBox, buildPanel);
+ rootSplitPane.getItems().add(SplitPaneItemConstants.TOP_SPLIT_PANE_CENTER_TAB_PANE, buildPanel);
// 将总分割面板设置在布局中部
MAIN_BORDER_PANE.setCenterComponent(rootSplitPane);
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/RootBorderPaneManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootBorderPaneManager.java
similarity index 74%
rename from src/main/java/org/jcnc/jnotepad/views/manager/RootBorderPaneManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/RootBorderPaneManager.java
index 005e4a2..82fa0c7 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/RootBorderPaneManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootBorderPaneManager.java
@@ -1,11 +1,11 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
-import org.jcnc.jnotepad.views.root.RootBorderPane;
-import org.jcnc.jnotepad.views.root.bottom.RootBottomSideBarVerticalBox;
-import org.jcnc.jnotepad.views.root.center.main.MainBorderPane;
-import org.jcnc.jnotepad.views.root.left.sidebar.tools.ToolVerticalBox;
-import org.jcnc.jnotepad.views.root.right.RootRightSideBarVerticalBox;
-import org.jcnc.jnotepad.views.root.top.RootTopBorderPane;
+import org.jcnc.jnotepad.ui.views.root.RootBorderPane;
+import org.jcnc.jnotepad.ui.views.root.bottom.RootBottomSideBarVerticalBox;
+import org.jcnc.jnotepad.ui.views.root.center.main.MainBorderPane;
+import org.jcnc.jnotepad.ui.views.root.left.sidebar.tools.ToolVerticalBox;
+import org.jcnc.jnotepad.ui.views.root.right.RootRightSideBarVerticalBox;
+import org.jcnc.jnotepad.ui.views.root.top.RootTopBorderPane;
/**
* 应用程序的根布局管理类
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/RootBottomSideBarVerticalBoxManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootBottomSideBarVerticalBoxManager.java
similarity index 81%
rename from src/main/java/org/jcnc/jnotepad/views/manager/RootBottomSideBarVerticalBoxManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/RootBottomSideBarVerticalBoxManager.java
index 107b4ab..0120c8d 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/RootBottomSideBarVerticalBoxManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootBottomSideBarVerticalBoxManager.java
@@ -1,9 +1,9 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import javafx.scene.layout.VBox;
-import org.jcnc.jnotepad.views.root.bottom.RootBottomSideBarVerticalBox;
-import org.jcnc.jnotepad.views.root.bottom.function.FunctionBox;
-import org.jcnc.jnotepad.views.root.bottom.status.BottomStatusBox;
+import org.jcnc.jnotepad.ui.views.root.bottom.RootBottomSideBarVerticalBox;
+import org.jcnc.jnotepad.ui.views.root.bottom.function.FunctionBox;
+import org.jcnc.jnotepad.ui.views.root.bottom.status.BottomStatusBox;
/**
* 底部根侧边栏垂直布局管理类
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/RootManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootManager.java
similarity index 98%
rename from src/main/java/org/jcnc/jnotepad/views/manager/RootManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/RootManager.java
index fc6b5bc..5e0fb37 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/RootManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootManager.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import atlantafx.base.controls.Notification;
import atlantafx.base.util.Animations;
@@ -12,7 +12,7 @@ import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.util.Duration;
import org.jcnc.jnotepad.controller.exception.AppException;
-import org.jcnc.jnotepad.views.root.RootBorderPane;
+import org.jcnc.jnotepad.ui.views.root.RootBorderPane;
/**
* 根布局管理器类,用于管理记事本应用程序的根布局组件。
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/RootRightSideBarVerticalBoxManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootRightSideBarVerticalBoxManager.java
similarity index 85%
rename from src/main/java/org/jcnc/jnotepad/views/manager/RootRightSideBarVerticalBoxManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/RootRightSideBarVerticalBoxManager.java
index e06a904..a7cbe4b 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/RootRightSideBarVerticalBoxManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootRightSideBarVerticalBoxManager.java
@@ -1,6 +1,6 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
-import org.jcnc.jnotepad.views.root.right.RootRightSideBarVerticalBox;
+import org.jcnc.jnotepad.ui.views.root.right.RootRightSideBarVerticalBox;
/**
* 右侧边栏的垂直布局容器管理类
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/RootTopBorderPaneManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootTopBorderPaneManager.java
similarity index 80%
rename from src/main/java/org/jcnc/jnotepad/views/manager/RootTopBorderPaneManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/RootTopBorderPaneManager.java
index 0d8308c..f0921fe 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/RootTopBorderPaneManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/RootTopBorderPaneManager.java
@@ -1,7 +1,7 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
-import org.jcnc.jnotepad.views.root.top.RootTopBorderPane;
-import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
+import org.jcnc.jnotepad.ui.views.root.top.RootTopBorderPane;
+import org.jcnc.jnotepad.ui.views.root.top.menubar.TopMenuBar;
/**
* 顶部边界面板管理类
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/SidebarToolBarManager.java
similarity index 94%
rename from src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/SidebarToolBarManager.java
index cad62de..ba25342 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/SidebarToolBarManager.java
@@ -1,13 +1,13 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import javafx.scene.Node;
import org.jcnc.jnotepad.api.core.views.manager.AbstractManager;
import org.jcnc.jnotepad.api.core.views.manager.builder.SideBarButtonBuilder;
+import org.jcnc.jnotepad.app.utils.UiUtil;
import org.jcnc.jnotepad.controller.event.handler.toolbar.DirTreeBtn;
import org.jcnc.jnotepad.controller.event.handler.toolbar.RunBtn;
import org.jcnc.jnotepad.controller.event.handler.toolbar.SetBtn;
-import org.jcnc.jnotepad.util.UiUtil;
-import org.jcnc.jnotepad.views.root.left.sidebar.tools.SidebarToolBar;
+import org.jcnc.jnotepad.ui.views.root.left.sidebar.tools.SidebarToolBar;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java b/src/main/java/org/jcnc/jnotepad/ui/views/manager/TopMenuBarManager.java
similarity index 94%
rename from src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/manager/TopMenuBarManager.java
index 03edb9f..898e050 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/manager/TopMenuBarManager.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.manager;
+package org.jcnc.jnotepad.ui.views.manager;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
@@ -6,11 +6,11 @@ import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.scene.input.KeyCombination;
import org.jcnc.jnotepad.api.core.views.manager.AbstractManager;
+import org.jcnc.jnotepad.app.utils.LogUtil;
import org.jcnc.jnotepad.controller.config.UserConfigController;
import org.jcnc.jnotepad.model.entity.ShortcutKey;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
-import org.jcnc.jnotepad.views.root.top.menubar.menu.*;
+import org.jcnc.jnotepad.ui.views.root.top.menubar.TopMenuBar;
+import org.jcnc.jnotepad.ui.views.root.top.menubar.menu.*;
import org.slf4j.Logger;
import java.util.ArrayList;
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/RootBorderPane.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/RootBorderPane.java
similarity index 85%
rename from src/main/java/org/jcnc/jnotepad/views/root/RootBorderPane.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/RootBorderPane.java
index 88b50b4..1fcc2ed 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/RootBorderPane.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/RootBorderPane.java
@@ -1,6 +1,6 @@
-package org.jcnc.jnotepad.views.root;
+package org.jcnc.jnotepad.ui.views.root;
-import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
+import org.jcnc.jnotepad.ui.component.module.base.AbstractBorderPane;
/**
* RootBorderPane 表示 JNotepad 应用程序的根布局。
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/bottom/RootBottomSideBarVerticalBox.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/RootBottomSideBarVerticalBox.java
similarity index 87%
rename from src/main/java/org/jcnc/jnotepad/views/root/bottom/RootBottomSideBarVerticalBox.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/RootBottomSideBarVerticalBox.java
index ade0095..1b785bb 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/bottom/RootBottomSideBarVerticalBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/RootBottomSideBarVerticalBox.java
@@ -1,7 +1,7 @@
-package org.jcnc.jnotepad.views.root.bottom;
+package org.jcnc.jnotepad.ui.views.root.bottom;
import javafx.scene.layout.VBox;
-import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
+import org.jcnc.jnotepad.ui.component.module.base.AbstractVerticalBox;
/**
* 底部根侧边栏垂直布局
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/bottom/function/FunctionBox.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/function/FunctionBox.java
similarity index 92%
rename from src/main/java/org/jcnc/jnotepad/views/root/bottom/function/FunctionBox.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/function/FunctionBox.java
index 0fcd58e..5d9826a 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/bottom/function/FunctionBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/function/FunctionBox.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.root.bottom.function;
+package org.jcnc.jnotepad.ui.views.root.bottom.function;
import javafx.geometry.Insets;
import javafx.scene.control.MenuBar;
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/bottom/status/BottomStatusBox.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/status/BottomStatusBox.java
similarity index 87%
rename from src/main/java/org/jcnc/jnotepad/views/root/bottom/status/BottomStatusBox.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/status/BottomStatusBox.java
index d95e7c6..6f1133a 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/bottom/status/BottomStatusBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/bottom/status/BottomStatusBox.java
@@ -1,8 +1,8 @@
-package org.jcnc.jnotepad.views.root.bottom.status;
+package org.jcnc.jnotepad.ui.views.root.bottom.status;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
-import org.jcnc.jnotepad.component.module.base.AbstractHorizontalBox;
+import org.jcnc.jnotepad.ui.component.module.base.AbstractHorizontalBox;
/**
* 状态栏组件封装。
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/center/main/MainBorderPane.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/MainBorderPane.java
similarity index 80%
rename from src/main/java/org/jcnc/jnotepad/views/root/center/main/MainBorderPane.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/MainBorderPane.java
index 5bbef69..88eb532 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/center/main/MainBorderPane.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/MainBorderPane.java
@@ -1,6 +1,6 @@
-package org.jcnc.jnotepad.views.root.center.main;
+package org.jcnc.jnotepad.ui.views.root.center.main;
-import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
+import org.jcnc.jnotepad.ui.component.module.base.AbstractBorderPane;
/**
* 主界面边界布局
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/directory/DirectorySidebarPane.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/directory/DirectorySidebarPane.java
similarity index 89%
rename from src/main/java/org/jcnc/jnotepad/views/root/center/main/center/directory/DirectorySidebarPane.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/directory/DirectorySidebarPane.java
index 02563bc..f36bba4 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/directory/DirectorySidebarPane.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/directory/DirectorySidebarPane.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.root.center.main.center.directory;
+package org.jcnc.jnotepad.ui.views.root.center.main.center.directory;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
@@ -7,7 +7,7 @@ import org.jcnc.jnotepad.model.entity.DirFileModel;
import java.io.File;
import java.util.Objects;
-import static org.jcnc.jnotepad.util.TabUtil.openFileToTab;
+import static org.jcnc.jnotepad.app.utils.TabUtil.openFileToTab;
/**
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTab.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/tab/CenterTab.java
similarity index 93%
rename from src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTab.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/tab/CenterTab.java
index f365523..6d1001f 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTab.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/tab/CenterTab.java
@@ -1,16 +1,16 @@
-package org.jcnc.jnotepad.views.root.center.main.center.tab;
+package org.jcnc.jnotepad.ui.views.root.center.main.center.tab;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.scene.control.Tab;
import org.fxmisc.flowless.VirtualizedScrollPane;
-import org.jcnc.jnotepad.component.module.TextCodeArea;
+import org.jcnc.jnotepad.app.utils.FileUtil;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.app.utils.TabUtil;
import org.jcnc.jnotepad.controller.config.UserConfigController;
-import org.jcnc.jnotepad.util.FileUtil;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.util.TabUtil;
-import org.jcnc.jnotepad.views.manager.BottomStatusBoxManager;
-import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
+import org.jcnc.jnotepad.ui.component.module.TextCodeArea;
+import org.jcnc.jnotepad.ui.views.manager.BottomStatusBoxManager;
+import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
import org.slf4j.Logger;
import java.io.BufferedWriter;
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTabPane.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/tab/CenterTabPane.java
similarity index 84%
rename from src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTabPane.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/tab/CenterTabPane.java
index b242380..c1909d3 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/center/main/center/tab/CenterTabPane.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/center/main/center/tab/CenterTabPane.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.root.center.main.center.tab;
+package org.jcnc.jnotepad.ui.views.root.center.main.center.tab;
import javafx.scene.control.TabPane;
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/SidebarToolBar.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/left/sidebar/tools/SidebarToolBar.java
similarity index 96%
rename from src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/SidebarToolBar.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/left/sidebar/tools/SidebarToolBar.java
index a406e4a..268e441 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/SidebarToolBar.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/left/sidebar/tools/SidebarToolBar.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.root.left.sidebar.tools;
+package org.jcnc.jnotepad.ui.views.root.left.sidebar.tools;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolVerticalBox.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/left/sidebar/tools/ToolVerticalBox.java
similarity index 86%
rename from src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolVerticalBox.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/left/sidebar/tools/ToolVerticalBox.java
index 4b16b08..69a189b 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/left/sidebar/tools/ToolVerticalBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/left/sidebar/tools/ToolVerticalBox.java
@@ -1,8 +1,8 @@
-package org.jcnc.jnotepad.views.root.left.sidebar.tools;
+package org.jcnc.jnotepad.ui.views.root.left.sidebar.tools;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
-import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
+import org.jcnc.jnotepad.ui.component.module.base.AbstractVerticalBox;
/**
* 垂直布局类
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/right/RootRightSideBarVerticalBox.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/right/RootRightSideBarVerticalBox.java
similarity index 85%
rename from src/main/java/org/jcnc/jnotepad/views/root/right/RootRightSideBarVerticalBox.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/right/RootRightSideBarVerticalBox.java
index 6de4e90..aed21d1 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/right/RootRightSideBarVerticalBox.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/right/RootRightSideBarVerticalBox.java
@@ -1,6 +1,6 @@
-package org.jcnc.jnotepad.views.root.right;
+package org.jcnc.jnotepad.ui.views.root.right;
-import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
+import org.jcnc.jnotepad.ui.component.module.base.AbstractVerticalBox;
/**
* 右侧边栏的垂直布局容器类。
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/RootTopBorderPane.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/RootTopBorderPane.java
similarity index 85%
rename from src/main/java/org/jcnc/jnotepad/views/root/top/RootTopBorderPane.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/top/RootTopBorderPane.java
index 7cd3d7a..2abc29d 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/top/RootTopBorderPane.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/RootTopBorderPane.java
@@ -1,6 +1,6 @@
-package org.jcnc.jnotepad.views.root.top;
+package org.jcnc.jnotepad.ui.views.root.top;
-import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
+import org.jcnc.jnotepad.ui.component.module.base.AbstractBorderPane;
/**
* RootTopBorderPane 类表示 JNotepad 应用程序的顶部边界面板。
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/TopMenuBar.java
similarity index 96%
rename from src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/TopMenuBar.java
index 7d82c07..ca594df 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/TopMenuBar.java
@@ -1,8 +1,8 @@
-package org.jcnc.jnotepad.views.root.top.menubar;
+package org.jcnc.jnotepad.ui.views.root.top.menubar;
import javafx.scene.control.*;
-import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
-import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
+import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTab;
import java.util.HashMap;
import java.util.Map;
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/FileTopMenu.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/FileTopMenu.java
similarity index 93%
rename from src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/FileTopMenu.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/FileTopMenu.java
index ceac373..0d290db 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/FileTopMenu.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/FileTopMenu.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.root.top.menubar.menu;
+package org.jcnc.jnotepad.ui.views.root.top.menubar.menu;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
@@ -9,7 +9,7 @@ import org.jcnc.jnotepad.controller.event.handler.toolbar.OpenDirectory;
import java.util.HashMap;
import java.util.Map;
-import static org.jcnc.jnotepad.common.constants.TextConstants.*;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
/**
* 文件菜单
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/HelpTopMenu.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/HelpTopMenu.java
similarity index 83%
rename from src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/HelpTopMenu.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/HelpTopMenu.java
index 7626a34..035f129 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/HelpTopMenu.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/HelpTopMenu.java
@@ -1,16 +1,16 @@
-package org.jcnc.jnotepad.views.root.top.menubar.menu;
+package org.jcnc.jnotepad.ui.views.root.top.menubar.menu;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
-import org.jcnc.jnotepad.component.stage.topmenu.help.DeveloperDebugPaneStage;
-import org.jcnc.jnotepad.component.stage.topmenu.help.HelpPaneStage;
+import org.jcnc.jnotepad.ui.component.stage.topmenu.help.DeveloperDebugPaneStage;
+import org.jcnc.jnotepad.ui.component.stage.topmenu.help.HelpPaneStage;
import java.util.HashMap;
import java.util.Map;
-import static org.jcnc.jnotepad.common.constants.TextConstants.*;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
/**
* 帮助菜单
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/LanguageTopMenu.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/LanguageTopMenu.java
similarity index 96%
rename from src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/LanguageTopMenu.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/LanguageTopMenu.java
index 98e0b60..3fa2d47 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/LanguageTopMenu.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/LanguageTopMenu.java
@@ -1,4 +1,4 @@
-package org.jcnc.jnotepad.views.root.top.menubar.menu;
+package org.jcnc.jnotepad.ui.views.root.top.menubar.menu;
import javafx.event.ActionEvent;
import javafx.scene.control.Menu;
@@ -15,7 +15,7 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
-import static org.jcnc.jnotepad.common.constants.TextConstants.*;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
/**
* 语言顶部菜单
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/PluginTopMenu.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/PluginTopMenu.java
similarity index 86%
rename from src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/PluginTopMenu.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/PluginTopMenu.java
index 10ac572..f3291bc 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/PluginTopMenu.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/PluginTopMenu.java
@@ -1,14 +1,14 @@
-package org.jcnc.jnotepad.views.root.top.menubar.menu;
+package org.jcnc.jnotepad.ui.views.root.top.menubar.menu;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
-import org.jcnc.jnotepad.component.stage.topmenu.plugin.PluginManagementPane;
+import org.jcnc.jnotepad.ui.component.stage.topmenu.plugin.PluginManagementPane;
import java.util.HashMap;
import java.util.Map;
-import static org.jcnc.jnotepad.common.constants.TextConstants.*;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
/**
* 插件菜单
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/RunTopMenu.java
similarity index 88%
rename from src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/RunTopMenu.java
index 91d891c..fc69cf2 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/RunTopMenu.java
@@ -1,22 +1,22 @@
-package org.jcnc.jnotepad.views.root.top.menubar.menu;
+package org.jcnc.jnotepad.ui.views.root.top.menubar.menu;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
-import org.jcnc.jnotepad.component.module.vbox.BuildPanel;
-import org.jcnc.jnotepad.util.LogUtil;
-import org.jcnc.jnotepad.views.manager.BuildPanelManager;
-import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
-import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
+import org.jcnc.jnotepad.app.utils.LogUtil;
+import org.jcnc.jnotepad.ui.component.module.vbox.BuildPanel;
+import org.jcnc.jnotepad.ui.views.manager.BuildPanelManager;
+import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
+import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTab;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
-import static org.jcnc.jnotepad.common.constants.TextConstants.DE_BUG;
-import static org.jcnc.jnotepad.common.constants.TextConstants.RUN;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.DE_BUG;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.RUN;
/**
* 运行菜单
@@ -142,7 +142,7 @@ public class RunTopMenu extends AbstractTopMenu {
// 调试 test
registerMenuItem(topMenuBar.getDeBugItem(), DE_BUG, "deBugItem", event -> {
BUILD_PANEL_MANAGER.controlShow(true);
- BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getBuildBox(), "待开发");
+ BUILD_PANEL_MANAGER.setText(BUILD_PANEL.getDebugBox(), "待开发");
});
diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/SettingTopMenu.java b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/SettingTopMenu.java
similarity index 90%
rename from src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/SettingTopMenu.java
rename to src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/SettingTopMenu.java
index e4d262d..c7d7e58 100644
--- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/SettingTopMenu.java
+++ b/src/main/java/org/jcnc/jnotepad/ui/views/root/top/menubar/menu/SettingTopMenu.java
@@ -1,18 +1,18 @@
-package org.jcnc.jnotepad.views.root.top.menubar.menu;
+package org.jcnc.jnotepad.ui.views.root.top.menubar.menu;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
+import org.jcnc.jnotepad.app.utils.UiUtil;
import org.jcnc.jnotepad.controller.config.UserConfigController;
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenConfig;
-import org.jcnc.jnotepad.util.UiUtil;
-import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
+import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
import java.util.HashMap;
import java.util.Map;
-import static org.jcnc.jnotepad.common.constants.TextConstants.*;
+import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
/**
* 设置菜单