!39 ️ 优化代码 ️ 清理无效的代码

Merge pull request !39 from 格物方能致知/master
This commit is contained in:
songdragon 2023-08-27 10:18:15 +00:00 committed by Gitee
commit ea594c4048
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
16 changed files with 46 additions and 91 deletions

View File

@ -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;
}

View File

@ -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;
/**

View File

@ -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;
/**
* 本地化配置文件<br>
@ -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<String, Locale> SUPPORT_LOCALES;
private static final Map<Locale, String> 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) {

View File

@ -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<ResourceBundle> resources = new SimpleObjectProperty<>();
private final ObjectProperty<ResourceBundle> resources = new SimpleObjectProperty<>();
/**
* 获取当前资源文件
* @return
*
* @return 资源文件
*/
public ObjectProperty<ResourceBundle> 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);

View File

@ -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;

View File

@ -16,8 +16,6 @@ import java.io.InputStream;
public class LoadLanguageConfig extends LoadJnotepadConfig<String> {
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<String> {
if (!"".equals(language) && language != null) {
log.info("正在加载语言包:{}", language);
// 刷新语言包
localizationConfig.setCurrentLocal(language);
LocalizationConfig.setCurrentLocal(language);
JNotepadMenuBar jNotepadMenuBar = JNotepadMenuBar.getMenuBar();
// 刷新菜单栏
jNotepadMenuBar.toggleLanguageCheck(language);

View File

@ -18,7 +18,6 @@ public class AppConstants {
* 初始高度
*/
public static final double SCREEN_LENGTH = 600;
public static final String APP_NAME = "JNotepad";
/**
* logo地址
*/

View File

@ -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";

View File

@ -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;

View File

@ -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;

View File

@ -42,12 +42,12 @@ public class ThreadPoolManager {
*/
private static final BlockingQueue<Runnable> BLOCKING_QUEUE = new LinkedBlockingQueue<>(4);
/**
* 当前线程数
* 当前运行线程数
*/
private static final AtomicInteger THREAD_COUNT = new AtomicInteger(1);
/**
* 线程数自减
* 当前运行线程数自减
*
* @apiNote 当你创建任务时务必在最后执行一次该方法
* @see ThreadPoolManager

View File

@ -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();

View File

@ -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("已刷新快捷键!");

View File

@ -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<ResourceBundle>() {
@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);
}
}

View File

@ -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的实例如果实例不存在则创建一个新实例

View File

@ -9,9 +9,9 @@
<!-- 文件保留时间 -->
<property name="log.maxHistory" value="30"/>
<!-- 日志存储路径 -->
<property name="log.filePath" value="${user.home}/.jnotepad/logs"/>
<!--打包时,请使用下方的路径-->
<!--<property name="log.filePath" value="../logs"/>-->
<property name="log.filePath" value="logs"/>
<!--发布0时,请使用下方的路径-->
<!--<property name="log.filePath" value="${user.home}/.jnotepad/logs"/>-->
<!-- 日志的显式格式 -->
<property name="log.pattern"
value="时间:[%d{yyyy-MM-dd HH:mm:ss.SSS}] 线程:[%thread] 日志级别:[%-5level] 调用位置:[%logger{50} 参见:[\(%F:%L\)]] - 日志信息:[%msg]%n">