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 super ResourceBundle> 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 extends ResourceBundle> 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 @@
-
-
-
+
+
+