From 885386674254770dc772166095210874aa861784 Mon Sep 17 00:00:00 2001 From: songdragon Date: Wed, 30 Aug 2023 22:46:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=A6=E5=AD=98?= =?UTF-8?q?=E6=97=B6=E5=8F=AF=E8=83=BD=E4=BF=9D=E5=AD=98=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/handler/menuBar/SaveFile.java | 4 +-- .../ui/module/LineNumberTextArea.java | 29 ++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuBar/SaveFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuBar/SaveFile.java index fb1c761..3eee73a 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuBar/SaveFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuBar/SaveFile.java @@ -75,13 +75,13 @@ public class SaveFile implements EventHandler { File file = fileChooser.showSaveDialog(UiUtil.getAppWindow()); if (file != null) { LogUtil.getLogger(currentClass).info("正在保存文件:{}", file.getName()); + // 将文件对象保存到Tab页的UserData中,tab的save方法调用时会用到 + selectedTab.setUserData(file); selectedTab.save(); // 将保存后的文件设置为已关联 selectedTab.setRelevance(true); // 更新Tab页标签上的文件名 selectedTab.setText(file.getName()); - // 将文件对象保存到Tab页的UserData中 - selectedTab.setUserData(file); } } } diff --git a/src/main/java/org/jcnc/jnotepad/ui/module/LineNumberTextArea.java b/src/main/java/org/jcnc/jnotepad/ui/module/LineNumberTextArea.java index 428214d..81ee991 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/module/LineNumberTextArea.java +++ b/src/main/java/org/jcnc/jnotepad/ui/module/LineNumberTextArea.java @@ -7,6 +7,7 @@ import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.tool.SingletonUtil; import org.jcnc.jnotepad.tool.UiUtil; import org.jcnc.jnotepad.ui.root.center.tab.JNotepadTab; +import org.slf4j.Logger; import java.io.BufferedWriter; import java.io.File; @@ -17,6 +18,8 @@ import java.io.IOException; * @author 许轲 */ public class LineNumberTextArea extends BorderPane { + + private static final Logger logger=LogUtil.getLogger(LineNumberTextArea.class); static final int[] SIZE_TABLE = {9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE}; private static final int MIN_LINE_NUMBER_WIDTH = 30; @@ -72,17 +75,21 @@ public class LineNumberTextArea extends BorderPane { */ public void save() { JNotepadTab tab = UiUtil.getJnotepadtab(); - if (tab != null) { - File file = (File) tab.getUserData(); - String newValue = this.mainTextArea.getText(); - if (file != null) { - try (BufferedWriter writer = new BufferedWriter(new FileWriter(file, tab.getCharset()))) { - writer.write(newValue); - LogUtil.getLogger(this.getClass()).info("正在自动保存---"); - } catch (IOException ignored) { - LogUtil.getLogger(this.getClass()).info("已忽视IO异常!"); - } - } + if (tab == null) { + return; + } + File file = (File) tab.getUserData(); + String newValue = this.mainTextArea.getText(); + if (file == null) { + // 文件对象不存在 + logger.warn("Tab上没有关联文件信息"); + return; + } + try (BufferedWriter writer = new BufferedWriter(new FileWriter(file, tab.getCharset()))) { + writer.write(newValue); + LogUtil.getLogger(this.getClass()).info("正在自动保存---"); + } catch (IOException ignored) { + LogUtil.getLogger(this.getClass()).info("已忽视IO异常!"); } } From 757a0e233b638f904b42b260afbf9a18f85a6ddf Mon Sep 17 00:00:00 2001 From: songdragon Date: Wed, 30 Aug 2023 22:59:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=E5=B0=81=E8=A3=85=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E4=B8=BA=E6=8C=87=E5=AE=9A=E6=96=87=E4=BB=B6=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/handler/menuBar/SaveFile.java | 4 +--- .../jnotepad/ui/root/center/tab/JNotepadTab.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuBar/SaveFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuBar/SaveFile.java index 3eee73a..f33022f 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuBar/SaveFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menuBar/SaveFile.java @@ -75,9 +75,7 @@ public class SaveFile implements EventHandler { File file = fileChooser.showSaveDialog(UiUtil.getAppWindow()); if (file != null) { LogUtil.getLogger(currentClass).info("正在保存文件:{}", file.getName()); - // 将文件对象保存到Tab页的UserData中,tab的save方法调用时会用到 - selectedTab.setUserData(file); - selectedTab.save(); + selectedTab.save(file); // 将保存后的文件设置为已关联 selectedTab.setRelevance(true); // 更新Tab页标签上的文件名 diff --git a/src/main/java/org/jcnc/jnotepad/ui/root/center/tab/JNotepadTab.java b/src/main/java/org/jcnc/jnotepad/ui/root/center/tab/JNotepadTab.java index d5edb7a..700be3a 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/root/center/tab/JNotepadTab.java +++ b/src/main/java/org/jcnc/jnotepad/ui/root/center/tab/JNotepadTab.java @@ -4,6 +4,7 @@ import javafx.scene.control.Tab; import org.jcnc.jnotepad.controller.config.AppConfigController; import org.jcnc.jnotepad.ui.module.LineNumberTextArea; +import java.io.File; import java.nio.charset.Charset; /** @@ -70,7 +71,22 @@ public class JNotepadTab extends Tab { this.charset = charset; } + /** + * 保存文件内容 + */ public void save() { this.lineNumberTextArea.save(); } + + /** + * 保存为指定文件 + * @param file 新文件 + */ + public void save(File file) { + if (file == null) { + return; + } + this.setUserData(file); + save(); + } }