From f7505f60633840da8fcf314424e56a484ea612ee Mon Sep 17 00:00:00 2001 From: songdragon Date: Thu, 24 Aug 2023 18:01:58 +0800 Subject: [PATCH 1/6] =?UTF-8?q?fix:=20#I7VP0I=20=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=BC=96=E7=A0=81=E6=97=B6=E5=B0=9D=E8=AF=95?= =?UTF-8?q?=E6=89=80=E6=9C=89=E5=8F=AF=E8=83=BD=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jcnc/jnotepad/tool/EncodingDetector.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java index 84d1d86..8f7c2d1 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java +++ b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java @@ -36,10 +36,12 @@ public class EncodingDetector { CharsetDetector charsetDetector = new CharsetDetector(); try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file.getPath()))) { charsetDetector.setText(inputStream); - CharsetMatch match = charsetDetector.detect(); - LOG.debug("{} : {}", match.getName(), match.getConfidence()); - if (match.getConfidence() > 50) { - return match.getName(); + CharsetMatch[] matchList = charsetDetector.detectAll(); + for (CharsetMatch match : matchList) { + LOG.debug("{} : {}", match.getName(), match.getConfidence()); + if (match.getConfidence() > 50) { + return match.getName(); + } } } catch (Exception e) { LOG.error("", e); From 13382d2cd43aaf893fe1b946845e6a26e4f92b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E8=BD=B2?= Date: Thu, 24 Aug 2023 22:37:19 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8DEncodingDetector=20?= =?UTF-8?q?=E6=96=87=E6=9C=AC=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jcnc/jnotepad/constants/AppConstants.java | 4 ---- .../java/org/jcnc/jnotepad/constants/TextConstants.java | 6 +++++- src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java | 2 ++ tool/jpackage.txt | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java b/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java index 9530aff..d6378ec 100644 --- a/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java +++ b/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java @@ -18,10 +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 f2531d5..c962615 100644 --- a/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java +++ b/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java @@ -6,6 +6,10 @@ import java.util.Properties; /** * 文本常量 + *

+ * 任何string请都在此处readPropertiesFromFile,然后在 + * src/main/java/org/jcnc/jnotepad/init/Config.java的getXXXXXLanguagePack + * 注册配置文件,设置多语言语言包 * * @author gewuyou */ @@ -56,7 +60,7 @@ public class TextConstants { public static final String JNOTEPAD_EN_LANGUAGE_PACK_NAME = PROPERTIES.getProperty("JNotepad en_language_pack"); /// EncodingDetector 文本常量 - public static final String UNKNOWN = "UNKNOWN"; + public static final String UNKNOWN = PROPERTIES.getProperty("UNKNOWN"); /// JNotepadStatusBox public static final String ROW = PROPERTIES.getProperty("ROW"); diff --git a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java index 8f7c2d1..ead291a 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java +++ b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java @@ -3,6 +3,7 @@ package org.jcnc.jnotepad.tool; import com.ibm.icu.text.CharsetDetector; import com.ibm.icu.text.CharsetMatch; +import org.jcnc.jnotepad.constants.TextConstants; import org.slf4j.Logger; import java.io.BufferedInputStream; @@ -13,6 +14,7 @@ import java.nio.charset.StandardCharsets; import static org.jcnc.jnotepad.constants.TextConstants.UNKNOWN; + /** * 编码检测工具类 * diff --git a/tool/jpackage.txt b/tool/jpackage.txt index fe617dd..85f61fc 100644 --- a/tool/jpackage.txt +++ b/tool/jpackage.txt @@ -4,7 +4,7 @@ jpackage ` -m org.jcnc.jnotepad/org.jcnc.jnotepad.LunchApp ` --runtime-image .\target\JNotepad\ ` --icon src/main/resources/img/icon.ico ` - --app-version 1.1.10 ` + --app-version 1.1.11 ` --vendor "JCNC" From c678fda57348ba61bd0bec320066f89bb32abd76 Mon Sep 17 00:00:00 2001 From: songdragon Date: Thu, 24 Aug 2023 22:57:20 +0800 Subject: [PATCH 3/6] =?UTF-8?q?fix:=20#I7VP0I=20=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B1=E8=B4=A5=E6=97=B6=EF=BC=8C=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=B3=BB=E7=BB=9F=E9=BB=98=E8=AE=A4=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java index ead291a..dc0fac6 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java +++ b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java @@ -60,7 +60,7 @@ public class EncodingDetector { public static Charset detectEncodingCharset(File file) { String charset = detectEncoding(file); if (charset.equals(UNKNOWN)) { - return StandardCharsets.UTF_8; + return Charset.defaultCharset(); } return Charset.forName(charset); } From 8a931725bfdfa6babd5129fadc5708232e66f68e Mon Sep 17 00:00:00 2001 From: songdragon Date: Thu, 24 Aug 2023 23:08:31 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20#I7VP0I=20=E9=81=8D=E5=8E=86?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=BC=96=E7=A0=81=E6=97=B6=EF=BC=8C=E5=8F=96?= =?UTF-8?q?=E6=A6=82=E7=8E=87=E7=9B=B8=E5=90=8C=EF=BC=8C=E4=BD=86=E6=9C=80?= =?UTF-8?q?=E5=85=88=E5=87=BA=E7=8E=B0=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jcnc/jnotepad/tool/EncodingDetector.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java index dc0fac6..b601e40 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java +++ b/src/main/java/org/jcnc/jnotepad/tool/EncodingDetector.java @@ -23,6 +23,10 @@ import static org.jcnc.jnotepad.constants.TextConstants.UNKNOWN; public class EncodingDetector { private static final Logger LOG = LogUtil.getLogger(EncodingDetector.class); + /** + * 编码侦测概率,阈值:50% + */ + public static final int THRESHOLD_CONFIDENCE = 50; private EncodingDetector() { @@ -39,10 +43,20 @@ public class EncodingDetector { try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file.getPath()))) { charsetDetector.setText(inputStream); CharsetMatch[] matchList = charsetDetector.detectAll(); - for (CharsetMatch match : matchList) { + if (matchList == null || matchList.length == 0) { + return UNKNOWN; + } + CharsetMatch maxConfidence = matchList[0]; + if (maxConfidence.getConfidence() < THRESHOLD_CONFIDENCE) { + return UNKNOWN; + } + for (int i = 1; i < matchList.length; i++) { + CharsetMatch match = matchList[i]; LOG.debug("{} : {}", match.getName(), match.getConfidence()); - if (match.getConfidence() > 50) { - return match.getName(); + if (match.getConfidence() >= THRESHOLD_CONFIDENCE && match.getConfidence() >= maxConfidence.getConfidence()) { + maxConfidence = match; + } else { + return maxConfidence.getName(); } } } catch (Exception e) { From 597062153a05f37620445ed045c6e949e29c0ee4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E8=BD=B2?= Date: Thu, 24 Aug 2023 23:16:26 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8D=A2=E8=A1=8Cbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jcnc/jnotepad/ui/LineNumberTextArea.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java b/src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java index 510bd4a..5198e78 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java +++ b/src/main/java/org/jcnc/jnotepad/ui/LineNumberTextArea.java @@ -41,18 +41,26 @@ public class LineNumberTextArea extends BorderPane { "-fx-border-color:white;" + "-fx-background-color:white" ); + + initListeners(); + setCenter(mainTextArea); setLeft(lineNumberArea); - initListeners(); + } private void initListeners() { // 当主要文本区域的垂直滚动位置发生变化时,使行号文本区域的滚动位置保持一致 - mainTextArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> lineNumberArea.setScrollTop(mainTextArea.getScrollTop())); + mainTextArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> { + lineNumberArea.setScrollTop(mainTextArea.getScrollTop()); + }); // 当行号文本区域的垂直滚动位置发生变化时,使主要文本区域的滚动位置保持一致 - lineNumberArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> mainTextArea.setScrollTop(lineNumberArea.getScrollTop())); + lineNumberArea.scrollTopProperty().addListener((observable, oldValue, newValue) -> { + mainTextArea.setScrollTop(lineNumberArea.getScrollTop()); + }); + lineNumberArea.textProperty().addListener((observable, oldValue, newValue) -> updateLineNumberWidth()); this.mainTextArea.caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> JNotepadStatusBox.getInstance().updateWordCountStatusLabel()); @@ -126,9 +134,10 @@ public class LineNumberTextArea extends BorderPane { lineNumberText.append(i).append("\n"); } lineNumberArea.setText(lineNumberText.toString()); + // 恢复之前的滚动位置 mainTextArea.setScrollTop(mainTextAreaScrollTop); - lineNumberArea.setScrollTop(lineNumberAreaScrollTop - 8); + lineNumberArea.setScrollTop(lineNumberAreaScrollTop-8); } public TextArea getMainTextArea() { From 4d942625cb9231d661eba7f21c9f6c696982715d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E8=BD=B2?= Date: Thu, 24 Aug 2023 23:16:40 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8D=A2=E8=A1=8Cbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 9278379..e86a6c2 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,5 @@ build/ logs/ /ch_language_pack.txt /en_language_pack.txt +/jnotepadConfig.json +/qodana.yaml