diff --git a/src/main/java/org/jcnc/jnotepad/constants/PathConstants.java b/src/main/java/org/jcnc/jnotepad/constants/PathConstants.java index e666e75..3e14c10 100644 --- a/src/main/java/org/jcnc/jnotepad/constants/PathConstants.java +++ b/src/main/java/org/jcnc/jnotepad/constants/PathConstants.java @@ -11,7 +11,7 @@ public class PathConstants { /** * 快捷键配置文件路径 - * todo:这里这个配置可以通过配置文件读取 + * todo:这里这个配置应当可以通过配置文件读取 */ public static final String SHORTCUT_KEY_CONFIGURATION_FILE_PATH = "/config/shortcutKey.json"; } diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveAsFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveAsFile.java index 6d675ac..d300a67 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveAsFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/SaveAsFile.java @@ -2,6 +2,7 @@ package org.jcnc.jnotepad.controller.event.handler; import javafx.event.ActionEvent; import javafx.event.EventHandler; +import org.jcnc.jnotepad.tool.LogUtil; import static org.jcnc.jnotepad.tool.FileUtil.saveTab; @@ -24,6 +25,7 @@ public class SaveAsFile implements EventHandler { */ @Override public void handle(ActionEvent event) { + LogUtil.getLogger(SaveAsFile.class).info("已调用另存为功能"); saveTab(this.getClass()); } } diff --git a/src/main/java/org/jcnc/jnotepad/controller/manager/ShortcutKey.java b/src/main/java/org/jcnc/jnotepad/controller/manager/ShortcutKey.java index 0764aa7..49ec717 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/manager/ShortcutKey.java +++ b/src/main/java/org/jcnc/jnotepad/controller/manager/ShortcutKey.java @@ -8,6 +8,7 @@ import javafx.scene.input.KeyCombination; import org.jcnc.jnotepad.Interface.ShortcutKeyInterface; import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.ui.menu.JNotepadMenuBar; +import org.slf4j.Logger; import java.io.*; import java.util.Map; @@ -19,39 +20,22 @@ import static org.jcnc.jnotepad.constants.PathConstants.SHORTCUT_KEY_CONFIGURATI * @author 一个大转盘
*/ public class ShortcutKey implements ShortcutKeyInterface { + Logger logger = LogUtil.getLogger(this.getClass()); + + /** + * 按配置创建快捷键 + * + * @apiNote 此方法通过配置json文件初始化快捷键 + * @since 2023/8/23 21:56 + */ + @Override public void createShortcutKeyByConfig() { - String rootPath = System.getProperty("user.dir"); - // 构建JSON文件路径 - String jsonFilePath = rootPath + SHORTCUT_KEY_CONFIGURATION_FILE_PATH; - InputStream inputStream = getClass().getResourceAsStream(SHORTCUT_KEY_CONFIGURATION_FILE_PATH); - StringBuffer jsonData = new StringBuffer(); - File file = new File(jsonFilePath); - if (file.exists()) { - try (BufferedReader reader = new BufferedReader(new FileReader(file))) { - String line; - while ((line = reader.readLine()) != null) { - jsonData.append(line); - } - } catch (IOException e) { - LogUtil.getLogger(this.getClass()).error("读取配置失败!", e); - } - } else { - // todo new InputStreamReader(inputStream) 实参 'inputStream' 可能为null - try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { - String line; - while ((line = reader.readLine()) != null) { - jsonData.append(line); - } - } catch (IOException e) { - LogUtil.getLogger(this.getClass()).error("读取配置失败!", e); - } - } - + String jsonData = getJsonPathDataBasedOnJson(); // 转json对象 GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = gsonBuilder.create(); - Map shortcutKeyConfig = gson.fromJson(jsonData.toString(), new TypeToken>() { + Map shortcutKeyConfig = gson.fromJson(jsonData, new TypeToken>() { }.getType()); for (Map.Entry stringObjectEntry : shortcutKeyConfig.entrySet()) { // 保证json的key必须和变量名一致 @@ -60,8 +44,45 @@ public class ShortcutKey implements ShortcutKeyInterface { if ("".equals(shortKeyValue) || Objects.isNull(menuItem)) { continue; } + logger.info("快捷键对象:{}->已分配快捷键:{}", menuItem.getText(), shortKeyValue); // 动态添加快捷键 menuItem.setAccelerator(KeyCombination.keyCombination(shortKeyValue)); } } + + /** + * 根据json路径返回解析的Json数据 + * + * @return java.lang.String Json数据 + */ + private String getJsonPathDataBasedOnJson() { + String rootPath = System.getProperty("user.dir"); + // 构建JSON文件路径 + String jsonFilePath = rootPath + SHORTCUT_KEY_CONFIGURATION_FILE_PATH; + StringBuilder jsonData = new StringBuilder(); + InputStream inputStream = getClass().getResourceAsStream(SHORTCUT_KEY_CONFIGURATION_FILE_PATH); + File file = new File(jsonFilePath); + if (file.exists()) { + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + String line; + while ((line = reader.readLine()) != null) { + jsonData.append(line); + } + } catch (IOException e) { + logger.error("读取配置失败!", e); + } + } else { + if (inputStream != null) { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { + String line; + while ((line = reader.readLine()) != null) { + jsonData.append(line); + } + } catch (IOException e) { + logger.error("读取配置失败!", e); + } + } + } + return jsonData.toString(); + } } diff --git a/src/main/java/org/jcnc/jnotepad/tool/FileUtil.java b/src/main/java/org/jcnc/jnotepad/tool/FileUtil.java index 0672391..cdd2a0c 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/FileUtil.java +++ b/src/main/java/org/jcnc/jnotepad/tool/FileUtil.java @@ -16,7 +16,8 @@ public class FileUtil { } /** - * 把一个文件中的内容读取成一个String字符串 + * 把一个文件中的内容读取成一个String字符串
+ * 注意:该方法不支持多线程操作 * * @param jsonFile json文件 * @return String @@ -28,7 +29,7 @@ public class FileUtil { ) { int ch; - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); while ((ch = reader.read()) != -1) { sb.append((char) ch); } diff --git a/src/main/resources/config/shortcutKey.json b/src/main/resources/config/shortcutKey.json index c063b25..1fb4d56 100644 --- a/src/main/resources/config/shortcutKey.json +++ b/src/main/resources/config/shortcutKey.json @@ -2,7 +2,7 @@ "newItem": "ctrl+n", "openItem": "ctrl+o", "saveItem": "ctrl+s", - "saveAsItem": "ctrl+shift+s", + "saveAsItem": "ctrl+alt+s", "lineFeedItem": "", "addItem": "", diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index fc98ce7..252427a 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -3,15 +3,15 @@ - + JJ - + - +