🐛 修复 BUG 当切换语言时,下方状态栏无法切换的bug,️ 优化 切换语言的逻辑

This commit is contained in:
gewuyou 2023-08-27 09:41:07 +08:00
parent 20bf5e75f4
commit ab2030a0e2
9 changed files with 35 additions and 22 deletions

View File

@ -200,6 +200,7 @@ public class LocalizationConfig {
private String unknown; private String unknown;
/// JNotepadStatusBox /// JNotepadStatusBox
private String row; private String row;
private String column; private String column;

View File

@ -3,6 +3,7 @@ package org.jcnc.jnotepad.app.init;
import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.jcnc.jnotepad.app.config.LocalizationConfig;
import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.tool.LogUtil;
import org.jcnc.jnotepad.ui.menu.JNotepadMenuBar; import org.jcnc.jnotepad.ui.menu.JNotepadMenuBar;
import org.jcnc.jnotepad.ui.status.JNotepadStatusBox;
import org.slf4j.Logger; import org.slf4j.Logger;
import java.io.InputStream; import java.io.InputStream;
@ -37,6 +38,7 @@ public class LoadLanguageConfig extends LoadJnotepadConfig<String> {
// 刷新菜单栏 // 刷新菜单栏
jNotepadMenuBar.initMenuBar(); jNotepadMenuBar.initMenuBar();
jNotepadMenuBar.toggleLanguageCheck(language); jNotepadMenuBar.toggleLanguageCheck(language);
JNotepadStatusBox.getInstance().initStatusBox();
} }
} }
} }

View File

@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import org.jcnc.jnotepad.exception.AppException;
import org.jcnc.jnotepad.json.DataGenerator; import org.jcnc.jnotepad.json.DataGenerator;
import org.jcnc.jnotepad.json.MyData; import org.jcnc.jnotepad.json.MyData;
import org.jcnc.jnotepad.tool.JsonUtil; import org.jcnc.jnotepad.tool.JsonUtil;
@ -65,10 +66,6 @@ public class TextConstants {
public static final String CHINESE = "chinese"; public static final String CHINESE = "chinese";
public static final String LOWER_LANGUAGE = "language"; public static final String LOWER_LANGUAGE = "language";
private static final String BUTTON_NAME = "buttonName";
private static final String SHORTCUT_KEY_VALUE = "shortcutKeyValue";
/** /**
* 语言映射 * 语言映射
*/ */
@ -86,7 +83,7 @@ public class TextConstants {
try { try {
JNOTEPAD_CONFIG = createShortcutKeyJsonString(); JNOTEPAD_CONFIG = createShortcutKeyJsonString();
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
throw new RuntimeException(e); throw new AppException(e);
} }
} }

View File

@ -5,9 +5,15 @@ import java.util.List;
/** /**
* 数据生成类用于生成示例数据 * 数据生成类用于生成示例数据
* @author 许轲
*/ */
public class DataGenerator { public class DataGenerator {
// 快捷键常量
private DataGenerator() {
}
/// 快捷键常量
private static final String CTRL_N = "ctrl+n"; private static final String CTRL_N = "ctrl+n";
private static final String CTRL_O = "ctrl+o"; private static final String CTRL_O = "ctrl+o";
private static final String CTRL_S = "ctrl+s"; private static final String CTRL_S = "ctrl+s";

View File

@ -4,6 +4,8 @@ import java.util.List;
/** /**
* 数据模型类用于表示 MyData 对象的数据结构 * 数据模型类用于表示 MyData 对象的数据结构
*
* @author 许轲
*/ */
public class MyData { public class MyData {
private String language; private String language;
@ -16,8 +18,6 @@ public class MyData {
private String buttonName; private String buttonName;
private String shortcutKeyValue; private String shortcutKeyValue;
public ShortcutKey() {}
public String getButtonName() { public String getButtonName() {
return buttonName; return buttonName;
} }
@ -35,8 +35,6 @@ public class MyData {
} }
} }
public MyData() {}
public String getLanguage() { public String getLanguage() {
return language; return language;
} }

View File

@ -11,9 +11,10 @@ import org.jcnc.jnotepad.exception.AppException;
* @author songdragon * @author songdragon
*/ */
public class JsonUtil { public class JsonUtil {
private JsonUtil() {
}
public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT); public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
;
public static String toJsonString(Object o) { public static String toJsonString(Object o) {
try { try {

View File

@ -1,9 +1,6 @@
package org.jcnc.jnotepad.ui.menu; package org.jcnc.jnotepad.ui.menu;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.scene.control.*; import javafx.scene.control.*;
@ -15,7 +12,6 @@ import org.jcnc.jnotepad.controller.event.handler.*;
import org.jcnc.jnotepad.exception.AppException; import org.jcnc.jnotepad.exception.AppException;
import org.jcnc.jnotepad.tool.JsonUtil; import org.jcnc.jnotepad.tool.JsonUtil;
import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.tool.LogUtil;
import org.jcnc.jnotepad.ui.status.JNotepadStatusBox;
import org.jcnc.jnotepad.ui.tab.JNotepadTab; import org.jcnc.jnotepad.ui.tab.JNotepadTab;
import org.jcnc.jnotepad.ui.tab.JNotepadTabPane; import org.jcnc.jnotepad.ui.tab.JNotepadTabPane;
import org.jcnc.jnotepad.view.init.View; import org.jcnc.jnotepad.view.init.View;
@ -42,8 +38,6 @@ public class JNotepadMenuBar extends MenuBar {
*/ */
JNotepadTabPane jNotepadTabPane = JNotepadTabPane.getInstance(); JNotepadTabPane jNotepadTabPane = JNotepadTabPane.getInstance();
JNotepadStatusBox jNotepadStatusBox = JNotepadStatusBox.getInstance();
private static final JNotepadMenuBar MENU_BAR = new JNotepadMenuBar(); private static final JNotepadMenuBar MENU_BAR = new JNotepadMenuBar();
LocalizationConfig localizationConfig = LocalizationConfig.getLocalizationConfig(); LocalizationConfig localizationConfig = LocalizationConfig.getLocalizationConfig();
@ -262,8 +256,9 @@ public class JNotepadMenuBar extends MenuBar {
public void handle(ActionEvent actionEvent) { public void handle(ActionEvent actionEvent) {
try { try {
setCurrentLanguage(ENGLISH); setCurrentLanguage(ENGLISH);
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
throw new RuntimeException(e); throw new AppException(e.getMessage());
} }
} }
}); });
@ -272,8 +267,9 @@ public class JNotepadMenuBar extends MenuBar {
public void handle(ActionEvent actionEvent) { public void handle(ActionEvent actionEvent) {
try { try {
setCurrentLanguage(CHINESE); setCurrentLanguage(CHINESE);
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
throw new RuntimeException(e); throw new AppException(e.getMessage());
} }
} }
}); });
@ -286,6 +282,10 @@ public class JNotepadMenuBar extends MenuBar {
* @since 2023/8/26 16:16 * @since 2023/8/26 16:16
*/ */
private void setCurrentLanguage(String language) throws JsonProcessingException { private void setCurrentLanguage(String language) throws JsonProcessingException {
// 如果当前已是该语言则不执行该方法
if (localizationConfig.getLanguagePackName().equals(LANGUAGE_FILE_MAP.get(language))) {
return;
}
boolean flag = false; boolean flag = false;
// 获取本地配置文件 // 获取本地配置文件
logger.info("尝试读取本地配置文件!"); logger.info("尝试读取本地配置文件!");
@ -299,7 +299,7 @@ public class JNotepadMenuBar extends MenuBar {
logger.error("读取失败,配置文件错误或不存在配置文件!"); logger.error("读取失败,配置文件错误或不存在配置文件!");
flag = true; flag = true;
} }
ObjectNode json = null; ObjectNode json;
if (!flag) { if (!flag) {
json = JsonUtil.OBJECT_MAPPER.readValue(jsonData.toString(), ObjectNode.class); json = JsonUtil.OBJECT_MAPPER.readValue(jsonData.toString(), ObjectNode.class);

View File

@ -35,6 +35,11 @@ public class JNotepadStatusBox extends HBox {
initStatusBox(); initStatusBox();
} }
/**
* 初始化状态栏组件
*
* @since 2023/8/27 9:33
*/
public void initStatusBox() { public void initStatusBox() {
this.getChildren().clear(); this.getChildren().clear();
// 创建状态栏 // 创建状态栏
@ -42,6 +47,7 @@ public class JNotepadStatusBox extends HBox {
// 创建新的标签以显示编码信息 // 创建新的标签以显示编码信息
enCodingLabel = new Label(); enCodingLabel = new Label();
updateEncodingLabel(); updateEncodingLabel();
updateWhenTabSelected();
this.getChildren().add(statusLabel); this.getChildren().add(statusLabel);
this.getChildren().add(enCodingLabel); this.getChildren().add(enCodingLabel);
this.getProperties().put("borderpane-margin", new Insets(5, 10, 5, 10)); this.getProperties().put("borderpane-margin", new Insets(5, 10, 5, 10));

View File

@ -21,8 +21,10 @@ public class ViewManager {
// 主界面布局 // 主界面布局
private BorderPane root; // 主布局 /**
* 主布局
*/
private BorderPane root;
private static ViewManager instance = null; private static ViewManager instance = null;