From a9dd2e21c5f76064d817fcb59b108b757c61eb7a Mon Sep 17 00:00:00 2001 From: gewuyou <1063891901@qq.com> Date: Sun, 27 Aug 2023 17:59:31 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=20=F0=9F=97=91=EF=B8=8F=20=E6=B8=85=E7=90=86?= =?UTF-8?q?=E6=97=A0=E6=95=88=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/module-info.java | 6 ++-- src/main/java/org/jcnc/jnotepad/LunchApp.java | 3 -- .../app/config/LocalizationConfig.java | 23 +++++------- .../jnotepad/app/i18n/UIResourceBundle.java | 35 +++++++++---------- .../jnotepad/app/init/LoadJnotepadConfig.java | 1 - .../jnotepad/app/init/LoadLanguageConfig.java | 4 +-- .../jcnc/jnotepad/constants/AppConstants.java | 1 - .../jnotepad/constants/TextConstants.java | 5 --- .../controller/event/handler/NewFile.java | 1 - .../controller/manager/Controller.java | 1 - .../jnotepad/manager/ThreadPoolManager.java | 4 +-- .../jcnc/jnotepad/tool/EncodingDetector.java | 4 +-- .../jnotepad/ui/menu/JNotepadMenuBar.java | 16 ++++----- .../jnotepad/ui/status/JNotepadStatusBox.java | 15 ++------ .../jnotepad/view/manager/ViewManager.java | 12 ------- src/main/resources/logback.xml | 6 ++-- 16 files changed, 46 insertions(+), 91 deletions(-) diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 535e1b9..29ee8d9 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -23,6 +23,8 @@ module org.jcnc.jnotepad { exports org.jcnc.jnotepad.constants; exports org.jcnc.jnotepad.ui; exports org.jcnc.jnotepad.app.init; - exports org.jcnc.jnotepad.json; // 导出 JSON 相关的包,以便 Jackson 库可以访问 - opens org.jcnc.jnotepad.json; // 打开 JSON 相关的包,以便 Jackson 库可以使用反射 + // 导出 JSON 相关的包,以便 Jackson 库可以访问 + exports org.jcnc.jnotepad.json; + // 打开 JSON 相关的包,以便 Jackson 库可以使用反射 + opens org.jcnc.jnotepad.json; } \ No newline at end of file diff --git a/src/main/java/org/jcnc/jnotepad/LunchApp.java b/src/main/java/org/jcnc/jnotepad/LunchApp.java index 863a9e6..03759dd 100644 --- a/src/main/java/org/jcnc/jnotepad/LunchApp.java +++ b/src/main/java/org/jcnc/jnotepad/LunchApp.java @@ -8,7 +8,6 @@ import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.layout.Pane; import javafx.stage.Stage; -import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.jcnc.jnotepad.app.i18n.UIResourceBundle; import org.jcnc.jnotepad.app.init.LoadJnotepadConfig; import org.jcnc.jnotepad.app.init.LoadLanguageConfig; @@ -37,8 +36,6 @@ public class LunchApp extends Application { * 线程池 */ private final ExecutorService threadPool = ThreadPoolManager.getThreadPool(); - - LocalizationConfig localizationConfig = LocalizationConfig.getLocalizationConfig(); Controller controller = Controller.getInstance(); Scene scene; /** diff --git a/src/main/java/org/jcnc/jnotepad/app/config/LocalizationConfig.java b/src/main/java/org/jcnc/jnotepad/app/config/LocalizationConfig.java index 62a1735..35aa48c 100644 --- a/src/main/java/org/jcnc/jnotepad/app/config/LocalizationConfig.java +++ b/src/main/java/org/jcnc/jnotepad/app/config/LocalizationConfig.java @@ -2,15 +2,14 @@ package org.jcnc.jnotepad.app.config; import org.jcnc.jnotepad.LunchApp; import org.jcnc.jnotepad.app.i18n.UIResourceBundle; -import org.jcnc.jnotepad.tool.LogUtil; -import org.slf4j.Logger; -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.util.*; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; -import static org.jcnc.jnotepad.constants.AppConstants.APP_NAME; -import static org.jcnc.jnotepad.constants.TextConstants.*; +import static org.jcnc.jnotepad.constants.TextConstants.CHINESE; +import static org.jcnc.jnotepad.constants.TextConstants.ENGLISH; /** * 本地化配置文件
@@ -21,10 +20,7 @@ import static org.jcnc.jnotepad.constants.TextConstants.*; */ public class LocalizationConfig { private static final LocalizationConfig LOCALIZATION_CONFIG = new LocalizationConfig(); - private final Properties properties = new Properties(); - private String language; - private static final Map SUPPORT_LOCALES; private static final Map SUPPORT_LANGUAGES; @@ -39,17 +35,17 @@ public class LocalizationConfig { SUPPORT_LANGUAGES.put(Locale.ENGLISH, ENGLISH); } - public static final Locale getCurrentLocal() { + public static Locale getCurrentLocal() { return Locale.getDefault(); } - public static final void setCurrentLocal(Locale locale) { + public static void setCurrentLocal(Locale locale) { Locale.setDefault(locale); UIResourceBundle.getInstance().resetLocal(); LOCALIZATION_CONFIG.setLanguage(SUPPORT_LANGUAGES.get(locale)); } - public static final void setCurrentLocal(String language) { + public static void setCurrentLocal(String language) { Locale locale = SUPPORT_LOCALES.get(language); if (locale != null) { setCurrentLocal(locale); @@ -74,7 +70,6 @@ public class LocalizationConfig { public void setTextWrap(String textWrap) { this.textWrap = textWrap; - properties.setProperty(TEXT_WRAP, textWrap); } private void setLanguage(String language) { 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 6135098..6be7af6 100644 --- a/src/main/java/org/jcnc/jnotepad/app/i18n/UIResourceBundle.java +++ b/src/main/java/org/jcnc/jnotepad/app/i18n/UIResourceBundle.java @@ -1,5 +1,6 @@ package org.jcnc.jnotepad.app.i18n; +import javafx.beans.binding.Bindings; import javafx.beans.binding.StringBinding; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; @@ -28,7 +29,7 @@ public class UIResourceBundle { */ private Locale currentLocale; - public static final UIResourceBundle getInstance() { + public static UIResourceBundle getInstance() { return INSTANCE; } @@ -39,11 +40,12 @@ public class UIResourceBundle { /** * 资源文件的观察者绑定。 */ - private ObjectProperty resources = new SimpleObjectProperty<>(); + private final ObjectProperty resources = new SimpleObjectProperty<>(); /** * 获取当前资源文件 - * @return + * + * @return 资源文件 */ public ObjectProperty resourcesProperty() { return resources; @@ -72,26 +74,19 @@ public class UIResourceBundle { /** * 获取key对应的绑定属性内容 + * * @param key key * @return key对应的内容 */ public StringBinding getStringBinding(String key) { - return new StringBinding() { - { - bind(resourcesProperty()); - } - - @Override - public String computeValue() { - return getResources().getString(key); - } - }; + return Bindings.createStringBinding(() -> getResources().getString(key), resourcesProperty()); } /** * 工具方法:绑定StringProperty和Key对应的内容 - * @param stringProperty - * @param key + * + * @param stringProperty 字符串属性 + * @param key 键值 */ public static void bindStringProperty(StringProperty stringProperty, String key) { if (stringProperty == null) { @@ -102,16 +97,18 @@ public class UIResourceBundle { /** * 获取当前资源中的key值 - * @param key - * @return + * + * @param key 资源所对应键 + * @return 当前键所对应的值 */ public static String getContent(String key) { - return getInstance().getResources().getString(key); + return INSTANCE.getResources().getString(key); } /** * 注册资源变更监听器 - * @param listener + * + * @param listener 变更监听器 */ public void addListener(ChangeListener listener) { this.resources.addListener(listener); diff --git a/src/main/java/org/jcnc/jnotepad/app/init/LoadJnotepadConfig.java b/src/main/java/org/jcnc/jnotepad/app/init/LoadJnotepadConfig.java index 858fbf7..52f3a94 100644 --- a/src/main/java/org/jcnc/jnotepad/app/init/LoadJnotepadConfig.java +++ b/src/main/java/org/jcnc/jnotepad/app/init/LoadJnotepadConfig.java @@ -3,7 +3,6 @@ package org.jcnc.jnotepad.app.init; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.jcnc.jnotepad.exception.AppException; import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.tool.PopUpUtil; diff --git a/src/main/java/org/jcnc/jnotepad/app/init/LoadLanguageConfig.java b/src/main/java/org/jcnc/jnotepad/app/init/LoadLanguageConfig.java index 747faf5..daab4bc 100644 --- a/src/main/java/org/jcnc/jnotepad/app/init/LoadLanguageConfig.java +++ b/src/main/java/org/jcnc/jnotepad/app/init/LoadLanguageConfig.java @@ -16,8 +16,6 @@ import java.io.InputStream; public class LoadLanguageConfig extends LoadJnotepadConfig { Logger log = LogUtil.getLogger(this.getClass()); - LocalizationConfig localizationConfig = LocalizationConfig.getLocalizationConfig(); - @Override protected String parseConfig(InputStream inputStream) { return getConfigJson(inputStream).get("language").asText(); @@ -30,7 +28,7 @@ public class LoadLanguageConfig extends LoadJnotepadConfig { if (!"".equals(language) && language != null) { log.info("正在加载语言包:{}", language); // 刷新语言包 - localizationConfig.setCurrentLocal(language); + LocalizationConfig.setCurrentLocal(language); JNotepadMenuBar jNotepadMenuBar = JNotepadMenuBar.getMenuBar(); // 刷新菜单栏 jNotepadMenuBar.toggleLanguageCheck(language); diff --git a/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java b/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java index 2a1e151..b2d91d7 100644 --- a/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java +++ b/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java @@ -18,7 +18,6 @@ public class AppConstants { * 初始高度 */ public static final double SCREEN_LENGTH = 600; - public static final String APP_NAME = "JNotepad"; /** * logo地址 */ diff --git a/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java b/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java index 57ebb60..9f1e551 100644 --- a/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java +++ b/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java @@ -22,10 +22,6 @@ public class TextConstants { /// GlobalConfig文本常量 - /** - * 自动换行配置key - */ - public static final String TEXT_WRAP = "text.wrap"; public static final String TITLE = "title"; public static final String SAVE = "SAVE"; @@ -44,7 +40,6 @@ public class TextConstants { public static final String UPPER_CHINESE = "CHINESE"; public static final String UPPER_ENGLISH = "ENGLISH"; public static final String NEW_FILE = "NEW_FILE"; - public static final String UNKNOWN = "UNKNOWN"; public static final String ROW = "ROW"; public static final String COLUMN = "COLUMN"; public static final String WORD_COUNT = "WORD_COUNT"; diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java index c6bbcfa..a568a37 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java @@ -2,7 +2,6 @@ package org.jcnc.jnotepad.controller.event.handler; import javafx.event.ActionEvent; import javafx.event.EventHandler; -import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.jcnc.jnotepad.app.i18n.UIResourceBundle; import org.jcnc.jnotepad.constants.TextConstants; import org.jcnc.jnotepad.ui.LineNumberTextArea; 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 e04b49c..d1a8212 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java +++ b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java @@ -3,7 +3,6 @@ package org.jcnc.jnotepad.controller.manager; import javafx.application.Platform; import javafx.concurrent.Task; import org.jcnc.jnotepad.Interface.ControllerInterface; -import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.jcnc.jnotepad.app.i18n.UIResourceBundle; import org.jcnc.jnotepad.constants.TextConstants; import org.jcnc.jnotepad.manager.ThreadPoolManager; diff --git a/src/main/java/org/jcnc/jnotepad/manager/ThreadPoolManager.java b/src/main/java/org/jcnc/jnotepad/manager/ThreadPoolManager.java index b388881..cf7f6ff 100644 --- a/src/main/java/org/jcnc/jnotepad/manager/ThreadPoolManager.java +++ b/src/main/java/org/jcnc/jnotepad/manager/ThreadPoolManager.java @@ -42,12 +42,12 @@ public class ThreadPoolManager { */ private static final BlockingQueue BLOCKING_QUEUE = new LinkedBlockingQueue<>(4); /** - * 当前线程数 + * 当前运行线程数 */ private static final AtomicInteger THREAD_COUNT = new AtomicInteger(1); /** - * 线程数自减 + * 当前运行线程数自减 * * @apiNote 当你创建任务时,务必在最后执行一次该方法 * @see ThreadPoolManager diff --git a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java index 628123b..a4d07e1 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java +++ b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java @@ -3,7 +3,6 @@ package org.jcnc.jnotepad.tool; import com.ibm.icu.text.CharsetDetector; import com.ibm.icu.text.CharsetMatch; -import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.slf4j.Logger; import java.io.BufferedInputStream; @@ -18,7 +17,6 @@ import java.nio.charset.Charset; * @author 许轲 */ public class EncodingDetector { - static LocalizationConfig localizationConfig = LocalizationConfig.getLocalizationConfig(); private static final Logger LOG = LogUtil.getLogger(EncodingDetector.class); /** * 编码侦测概率,阈值:50% @@ -71,6 +69,8 @@ public class EncodingDetector { public static Charset detectEncodingCharset(File file) { String charset = detectEncoding(file); try { + // 断言charset != null + assert charset != null; return Charset.forName(charset); } catch (Exception e) { return Charset.defaultCharset(); diff --git a/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java b/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java index 356d282..f5936ed 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java +++ b/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java @@ -9,7 +9,6 @@ import org.jcnc.jnotepad.LunchApp; import org.jcnc.jnotepad.app.config.GlobalConfig; import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.jcnc.jnotepad.app.i18n.UIResourceBundle; -import org.jcnc.jnotepad.constants.TextConstants; import org.jcnc.jnotepad.controller.event.handler.*; import org.jcnc.jnotepad.exception.AppException; import org.jcnc.jnotepad.tool.JsonUtil; @@ -127,9 +126,7 @@ public class JNotepadMenuBar extends MenuBar { switch (language) { case CHINESE -> chineseItem.setSelected(true); case ENGLISH -> englishItem.setSelected(true); - default -> { - - } + default -> logger.error("未知语言:{}", language); } } @@ -151,7 +148,7 @@ public class JNotepadMenuBar extends MenuBar { * 初始化语言菜单 */ private void initLanguageMenu() { - logger.info("初始化语言菜单:{}", UIResourceBundle.getContent(LANGUAGE)); + logger.info("初始化语言菜单!"); // 语言菜单 languageMenu = new Menu(); UIResourceBundle.bindStringProperty(languageMenu.textProperty(), LANGUAGE); @@ -177,7 +174,7 @@ public class JNotepadMenuBar extends MenuBar { * 初始化文件菜单 */ private void initFileMenu() { - logger.info("初始化文件菜单:{}", UIResourceBundle.getContent(FILE)); + logger.info("初始化文件菜单!"); // 文件菜单 fileMenu = new Menu(); UIResourceBundle.bindStringProperty(fileMenu.textProperty(), FILE); @@ -206,7 +203,7 @@ public class JNotepadMenuBar extends MenuBar { * 初始化设置菜单 */ private void initSettingMenu() { - logger.info("初始化设置菜单:{}", UIResourceBundle.getContent(SET)); + logger.info("初始化设置菜单"); // 设置菜单 setMenu = new Menu(); UIResourceBundle.bindStringProperty(setMenu.textProperty(), SET); @@ -232,7 +229,7 @@ public class JNotepadMenuBar extends MenuBar { * 初始化插件菜单 */ private void initPluginMenu() { - logger.info("初始化插件菜单:{}", UIResourceBundle.getContent(PLUGIN)); + logger.info("初始化插件菜单!"); // 插件菜单 pluginMenu = new Menu(); UIResourceBundle.bindStringProperty(pluginMenu.textProperty(), PLUGIN); @@ -276,7 +273,6 @@ public class JNotepadMenuBar extends MenuBar { englishItem.setOnAction(new LocalizationHandler() { @Override public void handle(ActionEvent actionEvent) { - try { setCurrentLanguage(ENGLISH); toggleLanguage(actionEvent); @@ -350,7 +346,7 @@ public class JNotepadMenuBar extends MenuBar { writer.write(JsonUtil.toJsonString(json)); // 刷新文件 writer.flush(); - // 重新加载快捷键 + // 重新加载快捷键与语言包 View.getInstance().initJnotepadConfigs(LunchApp.getLocalizationConfigs()); logger.info("已刷新语言包!"); logger.info("已刷新快捷键!"); diff --git a/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java b/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java index 01c681f..e1bba2b 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java +++ b/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java @@ -1,19 +1,15 @@ package org.jcnc.jnotepad.ui.status; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; import javafx.geometry.Insets; import javafx.scene.control.Label; import javafx.scene.control.TextArea; import javafx.scene.layout.HBox; -import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.jcnc.jnotepad.app.i18n.UIResourceBundle; import org.jcnc.jnotepad.constants.TextConstants; import org.jcnc.jnotepad.ui.tab.JNotepadTab; import org.jcnc.jnotepad.ui.tab.JNotepadTabPane; import java.nio.charset.Charset; -import java.util.ResourceBundle; /** * 状态栏组件封装。 @@ -36,7 +32,6 @@ public class JNotepadStatusBox extends HBox { * 显示文本编码 */ private Label encodingLabel; - private final String ENCODING_LABEL_FORMAT = "\t%s : %s"; private JNotepadStatusBox() { @@ -61,12 +56,7 @@ public class JNotepadStatusBox extends HBox { this.getChildren().add(encodingLabel); this.getProperties().put("borderpane-margin", new Insets(5, 10, 5, 10)); - UIResourceBundle.getInstance().addListener(new ChangeListener() { - @Override - public void changed(ObservableValue observable, ResourceBundle oldValue, ResourceBundle newValue) { - updateWhenTabSelected(); - } - }); + UIResourceBundle.getInstance().addListener((observable, oldValue, newValue) -> updateWhenTabSelected()); } @@ -167,6 +157,7 @@ public class JNotepadStatusBox extends HBox { } protected String getEncodingFormattedText(String encoding) { - return String.format(ENCODING_LABEL_FORMAT, UIResourceBundle.getContent(TextConstants.ENCODE), encoding); + String encodingLabelFormat = "\t%s : %s"; + return String.format(encodingLabelFormat, UIResourceBundle.getContent(TextConstants.ENCODE), encoding); } } diff --git a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java index 813a258..111769a 100644 --- a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java +++ b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java @@ -17,9 +17,6 @@ public class ViewManager { private int tabIndex = 0; - private Boolean line = true; - - // 主界面布局 /** * 主布局 @@ -39,15 +36,6 @@ public class ViewManager { return ++tabIndex; } - public Boolean getLine() { - return line; - } - - - public BorderPane getRoot() { - return root; - } - /** * 获取ViewManager的实例。如果实例不存在,则创建一个新实例。 diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 5b0517f..89ac5a3 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -9,9 +9,9 @@ - - - + + +