From 9f4c734b40eaead57cb4e103eb571812b0dad464 Mon Sep 17 00:00:00 2001 From: gewuyou <1063891901@qq.com> Date: Sun, 17 Sep 2023 21:22:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 27 +- libs/README.md | 1 + .../jcnc/jnotepad/plugin/PluginManager.java | 2 +- .../plugin/PluginManagerInterface.java | 8 +- .../jnotepad/ui/dialog/AppDialogBuilder.java | 249 +++++++++--------- .../ui/dialog/factory/FileChooserFactory.java | 6 +- .../jnotepad/ui/module/SettingsComponent.java | 4 +- .../java/org/jcnc/jnotepad/util/UiUtil.java | 6 +- src/main/resources/css/styles.css | 1 - 9 files changed, 150 insertions(+), 154 deletions(-) diff --git a/README.md b/README.md index 9e4b714..fba4a69 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,6 @@ JNotepad使用Java语言编写,并基于JavaFX框架开发,具有良好的 [docs-url]: https://gitee.com/jcnc-org/docs - - [下载][gitee-download] 2. Linux/MacOS 平台,查看入门指南 @@ -103,24 +102,22 @@ JNotepad使用Java语言编写,并基于JavaFX框架开发,具有良好的 - `插件 > 增加插件`:(管理插件系统,待完善)。 - ## 依赖项 POM文件中的全部依赖项: -| 组ID | 工件ID | 版本 | 功能描述 | -|--------------------------------|------------------------------|--------|------------------------------------------------| -| org.kordamp.ikonli | ikonli-javafx | 12.3.1 | 提供JavaFX应用程序中的图标集成。 | -| org.kordamp.ikonli | ikonli-antdesignicons-pack | 12.3.1 | 包含Ant Design图标集的Ikonli图标包。 | -| io.github.mkpaz | atlantafx-base | 2.0.1 | 提供Atlantafx库的基本功能。 | -| org.openjfx | javafx-fxml | 20.0.2 | JavaFX的FXML模块,用于构建用户界面。 | -| org.junit.jupiter | junit-jupiter-api | 5.9.2 | 用于JUnit 5测试框架的API。 | -| com.fasterxml.jackson.core | jackson-databind | 2.15.2 | 用于JSON数据的序列化和反序列化。 | -| org.slf4j | slf4j-api | 2.0.7 | 简单日志门面,用于处理日志记录。 | -| ch.qos.logback | logback-core | 1.4.11 | Logback的核心组件,用于日志记录。 | -| ch.qos.logback | logback-classic | 1.4.11 | Logback的经典模块,提供日志记录功能。 | -| com.ibm.icu | icu4j | 73.2 | ICU(International Components for Unicode)库,用于处理Unicode字符和文本。| - +| 组ID | 工件ID | 版本 | 功能描述 | +|----------------------------|----------------------------|--------|--------------------------------------------------------------| +| org.kordamp.ikonli | ikonli-javafx | 12.3.1 | 提供JavaFX应用程序中的图标集成。 | +| org.kordamp.ikonli | ikonli-antdesignicons-pack | 12.3.1 | 包含Ant Design图标集的Ikonli图标包。 | +| io.github.mkpaz | atlantafx-base | 2.0.1 | 提供Atlantafx库的基本功能。 | +| org.openjfx | javafx-fxml | 20.0.2 | JavaFX的FXML模块,用于构建用户界面。 | +| org.junit.jupiter | junit-jupiter-api | 5.9.2 | 用于JUnit 5测试框架的API。 | +| com.fasterxml.jackson.core | jackson-databind | 2.15.2 | 用于JSON数据的序列化和反序列化。 | +| org.slf4j | slf4j-api | 2.0.7 | 简单日志门面,用于处理日志记录。 | +| ch.qos.logback | logback-core | 1.4.11 | Logback的核心组件,用于日志记录。 | +| ch.qos.logback | logback-classic | 1.4.11 | Logback的经典模块,提供日志记录功能。 | +| com.ibm.icu | icu4j | 73.2 | ICU(International Components for Unicode)库,用于处理Unicode字符和文本。 | ## 软件运行截图 diff --git a/libs/README.md b/libs/README.md index 833df2a..29806ca 100644 --- a/libs/README.md +++ b/libs/README.md @@ -40,4 +40,5 @@ jar uf libs/icu4j-73.2.jar -C libs/tmpOut/com.ibm.icu module-info.class ``` ## Reference + 1. [java_jlink_automatic_module_cannot_be_used_with_jlink](https://tacosteemers.com/articles/java_jlink_automatic_module_cannot_be_used_with_jlink.html) \ No newline at end of file diff --git a/src/main/java/org/jcnc/jnotepad/plugin/PluginManager.java b/src/main/java/org/jcnc/jnotepad/plugin/PluginManager.java index 79150c2..76a35b3 100644 --- a/src/main/java/org/jcnc/jnotepad/plugin/PluginManager.java +++ b/src/main/java/org/jcnc/jnotepad/plugin/PluginManager.java @@ -28,7 +28,6 @@ import static org.jcnc.jnotepad.plugin.PluginLoader.readPlugin; */ public class PluginManager { private static final PluginManager INSTANCE = new PluginManager(); - Logger logger = LogUtil.getLogger(this.getClass()); /** * 插件类别 */ @@ -37,6 +36,7 @@ public class PluginManager { * 插件信息 */ private final List pluginInfos = new ArrayList<>(); + Logger logger = LogUtil.getLogger(this.getClass()); private PluginManager() { diff --git a/src/main/java/org/jcnc/jnotepad/plugin/PluginManagerInterface.java b/src/main/java/org/jcnc/jnotepad/plugin/PluginManagerInterface.java index c8c945e..a36beea 100644 --- a/src/main/java/org/jcnc/jnotepad/plugin/PluginManagerInterface.java +++ b/src/main/java/org/jcnc/jnotepad/plugin/PluginManagerInterface.java @@ -27,6 +27,10 @@ public class PluginManagerInterface { private static final PluginManagerInterface INSTANCE = new PluginManagerInterface(); Logger logger = LogUtil.getLogger(this.getClass()); + public static PluginManagerInterface getInstance() { + return INSTANCE; + } + /** * 启动插件演示界面 * @@ -54,10 +58,6 @@ public class PluginManagerInterface { primaryStage.show(); } - public static PluginManagerInterface getInstance() { - return INSTANCE; - } - /** * 显示已加载插件的信息 * diff --git a/src/main/java/org/jcnc/jnotepad/ui/dialog/AppDialogBuilder.java b/src/main/java/org/jcnc/jnotepad/ui/dialog/AppDialogBuilder.java index 327b896..fcb0616 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/dialog/AppDialogBuilder.java +++ b/src/main/java/org/jcnc/jnotepad/ui/dialog/AppDialogBuilder.java @@ -86,112 +86,11 @@ public class AppDialogBuilder { } } - /** - * 设置应用图标 - */ - public AppDialogBuilder setAppIcon(Image appIcon) { - this.appIcon = appIcon; - return this; - } - public AppDialog build() { appDialog = new AppDialog(this); return appDialog; } - /** - * 设置对话框标题 - */ - public AppDialogBuilder setTitle(String title) { - this.title = title; - return this; - } - - - /** - * 设置对话框头部文本 - */ - public AppDialogBuilder setHeaderText(String headerText) { - this.headerText = headerText; - return this; - } - - /** - * 设置自定义文本 - */ - public AppDialogBuilder setCustomText(String customText) { - this.customText = customText; - return this; - } - - /** - * 设置对话框宽度 - */ - public AppDialogBuilder setWidth(double width) { - this.width = width; - return this; - } - - /** - * 设置对话框高度 - */ - public AppDialogBuilder setHeight(double height) { - this.height = height; - return this; - } - - /** - * 设置对话框左侧图标 - */ - public AppDialogBuilder setIcon(FontIcon icon) { - this.icon = icon; - return this; - } - - /** - * 设置左按钮操作 - */ - public AppDialogBuilder setLeftBtnAction(DialogButtonAction leftBtnAction) { - if (leftBtnAction != null) { - this.leftBtnAction = leftBtnAction; - } - return this; - } - - /** - * 设置右按钮操作 - */ - public AppDialogBuilder setRightBtnAction(DialogButtonAction rightBtnAction) { - if (rightBtnAction != null) { - this.rightBtnAction = rightBtnAction; - } - return this; - } - - /** - * 设置左按钮文本 - */ - public AppDialogBuilder setLeftBtnText(String leftBtnText) { - this.leftBtnText = leftBtnText; - return this; - } - - /** - * 设置右按钮文本 - */ - public AppDialogBuilder setRightBtnText(String rightBtnText) { - this.rightBtnText = rightBtnText; - return this; - } - - /** - * 设置图标边距 - */ - public AppDialogBuilder setIconCoxPaddingInsets(Insets iconCoxPaddingInsets) { - this.iconCoxPaddingInsets = iconCoxPaddingInsets; - return this; - } - /** * 设置水平盒子边距 */ @@ -200,14 +99,6 @@ public class AppDialogBuilder { return this; } - /** - * 设置是否可调整大小 - */ - public AppDialogBuilder setResizable(boolean resizable) { - isResizable = resizable; - return this; - } - /** * 设置水平盒子间距 */ @@ -216,14 +107,6 @@ public class AppDialogBuilder { return this; } - /** - * 设置垂直盒子位置 - */ - public AppDialogBuilder setVboxPos(Pos vboxPos) { - this.vboxPos = vboxPos; - return this; - } - /** * 设置水平盒子位置 */ @@ -232,62 +115,154 @@ public class AppDialogBuilder { return this; } - /** - * 设置模态性 - */ - public AppDialogBuilder setModality(Modality modality) { - this.modality = modality; - return this; - } - public Image getAppIcon() { return appIcon; } + /** + * 设置应用图标 + */ + public AppDialogBuilder setAppIcon(Image appIcon) { + this.appIcon = appIcon; + return this; + } + public String getTitle() { return title; } + /** + * 设置对话框标题 + */ + public AppDialogBuilder setTitle(String title) { + this.title = title; + return this; + } + public String getHeaderText() { return headerText; } + /** + * 设置对话框头部文本 + */ + public AppDialogBuilder setHeaderText(String headerText) { + this.headerText = headerText; + return this; + } + public String getCustomText() { return customText; } + /** + * 设置自定义文本 + */ + public AppDialogBuilder setCustomText(String customText) { + this.customText = customText; + return this; + } + public double getWidth() { return width; } + /** + * 设置对话框宽度 + */ + public AppDialogBuilder setWidth(double width) { + this.width = width; + return this; + } + public double getHeight() { return height; } + /** + * 设置对话框高度 + */ + public AppDialogBuilder setHeight(double height) { + this.height = height; + return this; + } + public FontIcon getIcon() { return icon; } + /** + * 设置对话框左侧图标 + */ + public AppDialogBuilder setIcon(FontIcon icon) { + this.icon = icon; + return this; + } + public DialogButtonAction getLeftBtnAction() { return leftBtnAction; } + /** + * 设置左按钮操作 + */ + public AppDialogBuilder setLeftBtnAction(DialogButtonAction leftBtnAction) { + if (leftBtnAction != null) { + this.leftBtnAction = leftBtnAction; + } + return this; + } + public DialogButtonAction getRightBtnAction() { return rightBtnAction; } + /** + * 设置右按钮操作 + */ + public AppDialogBuilder setRightBtnAction(DialogButtonAction rightBtnAction) { + if (rightBtnAction != null) { + this.rightBtnAction = rightBtnAction; + } + return this; + } + public String getLeftBtnText() { return leftBtnText; } + /** + * 设置左按钮文本 + */ + public AppDialogBuilder setLeftBtnText(String leftBtnText) { + this.leftBtnText = leftBtnText; + return this; + } + public String getRightBtnText() { return rightBtnText; } + /** + * 设置右按钮文本 + */ + public AppDialogBuilder setRightBtnText(String rightBtnText) { + this.rightBtnText = rightBtnText; + return this; + } + public Insets getIconCoxPaddingInsets() { return iconCoxPaddingInsets; } + /** + * 设置图标边距 + */ + public AppDialogBuilder setIconCoxPaddingInsets(Insets iconCoxPaddingInsets) { + this.iconCoxPaddingInsets = iconCoxPaddingInsets; + return this; + } + public Insets gethBoxPaddingInsets() { return hBoxPaddingInsets; } @@ -296,6 +271,14 @@ public class AppDialogBuilder { return isResizable; } + /** + * 设置是否可调整大小 + */ + public AppDialogBuilder setResizable(boolean resizable) { + isResizable = resizable; + return this; + } + public double getHBoxSpacing() { return hBoxSpacing; } @@ -304,6 +287,14 @@ public class AppDialogBuilder { return vboxPos; } + /** + * 设置垂直盒子位置 + */ + public AppDialogBuilder setVboxPos(Pos vboxPos) { + this.vboxPos = vboxPos; + return this; + } + public Pos getHboxPos() { return hboxPos; } @@ -311,4 +302,12 @@ public class AppDialogBuilder { public Modality getModality() { return modality; } + + /** + * 设置模态性 + */ + public AppDialogBuilder setModality(Modality modality) { + this.modality = modality; + return this; + } } diff --git a/src/main/java/org/jcnc/jnotepad/ui/dialog/factory/FileChooserFactory.java b/src/main/java/org/jcnc/jnotepad/ui/dialog/factory/FileChooserFactory.java index 46457a7..7f465b3 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/dialog/factory/FileChooserFactory.java +++ b/src/main/java/org/jcnc/jnotepad/ui/dialog/factory/FileChooserFactory.java @@ -22,9 +22,9 @@ public interface FileChooserFactory { /** * 创建详细的文件选择对话框。 * - * @param title 对话框标题 - * @param filename 默认选中的文件名 - * @param directory 初始目录 + * @param title 对话框标题 + * @param filename 默认选中的文件名 + * @param directory 初始目录 * @param extensionFilters 文件类型过滤器 * @return javafx.stage.FileChooser 详细文件选择对话框对象 * @apiNote 该方法用于创建一个带有标题、默认文件名、初始目录和文件类型过滤器的详细文件选择对话框。 diff --git a/src/main/java/org/jcnc/jnotepad/ui/module/SettingsComponent.java b/src/main/java/org/jcnc/jnotepad/ui/module/SettingsComponent.java index 1edb1ba..cbb2180 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/module/SettingsComponent.java +++ b/src/main/java/org/jcnc/jnotepad/ui/module/SettingsComponent.java @@ -33,8 +33,8 @@ public class SettingsComponent extends VBox { /** * 创建一个设置组件实例。 * - * @param labelText 标签文本 - * @param buttonText 按钮文本 + * @param labelText 标签文本 + * @param buttonText 按钮文本 */ public SettingsComponent(String labelText, String buttonText) { setSpacing(10); diff --git a/src/main/java/org/jcnc/jnotepad/util/UiUtil.java b/src/main/java/org/jcnc/jnotepad/util/UiUtil.java index d19778c..0d1f073 100644 --- a/src/main/java/org/jcnc/jnotepad/util/UiUtil.java +++ b/src/main/java/org/jcnc/jnotepad/util/UiUtil.java @@ -44,9 +44,6 @@ public class UiUtil { private static final FontIcon SUCCESS_ICON = FontIcon.of(CHECK_CIRCLE); - private UiUtil() { - } - static { // 暂时设置颜色 ERROR_ICON.getStyleClass().addAll(Styles.DANGER); @@ -56,6 +53,9 @@ public class UiUtil { SUCCESS_ICON.getStyleClass().addAll(Styles.SUCCESS); } + private UiUtil() { + } + /** * 获取应用程序图标。 * diff --git a/src/main/resources/css/styles.css b/src/main/resources/css/styles.css index 1f9270c..6167aad 100644 --- a/src/main/resources/css/styles.css +++ b/src/main/resources/css/styles.css @@ -5,7 +5,6 @@ } - /* tab修改标签样式 */ .tab-title-editable { -fx-fx-border-width: 0;