From afa4cbbf467d779d5715bb7f4822858f67c1df9b Mon Sep 17 00:00:00 2001 From: zhangmeng <1334717033@qq.com> Date: Mon, 12 Jun 2023 17:13:02 +0800 Subject: [PATCH] =?UTF-8?q?2023=E5=B9=B46=E6=9C=8812=E6=97=A517:12:55?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/controller/FileEditController.java | 51 ++++++++++++------- .../zhangmeng/tools/languages/ProcessSql.java | 8 +-- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/zhangmeng/tools/controller/FileEditController.java b/src/main/java/com/zhangmeng/tools/controller/FileEditController.java index 6487ea7..10b9a9d 100644 --- a/src/main/java/com/zhangmeng/tools/controller/FileEditController.java +++ b/src/main/java/com/zhangmeng/tools/controller/FileEditController.java @@ -8,6 +8,7 @@ import com.zhangmeng.tools.languages.ProcessHtml; import com.zhangmeng.tools.languages.ProcessJava; import com.zhangmeng.tools.languages.ProcessSql; import com.zhangmeng.tools.utils.AlertUtils; +import javafx.application.Platform; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; @@ -112,7 +113,7 @@ public class FileEditController { Stage stage = new Stage(); FileChooser dc = new FileChooser(); dc.setTitle("文件选择"); - dc.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("文件类型", "*.java", "*.go", "*.txt", "*.json","*.sql")); + dc.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("文件类型", "*.java", "*.go", "*.txt", "*.json", "*.sql")); File file = dc.showOpenDialog(stage); if (file != null) { refresh(file, true); @@ -269,9 +270,13 @@ public class FileEditController { ex.printStackTrace(); } } - if (!(FileUtils.sizeOf(file) > 50 * 1024 * 1024 )){ + if (!(FileUtils.sizeOf(file) > 10 * 1024 * 1024)) { codeArea.textProperty().addListener((obs, oldText, newText) -> { - codeArea.setStyleSpans(0, computeHighlighting(newText, type)); + new Thread(() -> { + Platform.runLater(() -> { + codeArea.setStyleSpans(0, computeHighlighting(newText, type)); + }); + }).start(); }); } codeArea.replaceText(0, 0, file_content); @@ -355,14 +360,24 @@ public class FileEditController { flag = false; } if (flag) { - Type type = Type.JAVA; + Type type = null; + + if (extension.equals("java")) { + type = Type.JAVA; + } + if (extension.equals("go")) { type = Type.GO; } if (extension.equals("html")) { type = Type.HTML; } - + if (extension.equals("sql")) { + type = Type.SQL; + } + if (type == null) { + type = Type.JAVA; + } open_file(file, type); } else { AlertUtils.alert_warning("该文件不支持!"); @@ -416,20 +431,20 @@ public class FileEditController { if (type.equals(Type.HTML)) { styleClass = matcher.group("PAREN") != null ? "paren" : - matcher.group("BRACE") != null ? "brace" : - matcher.group("BRACKET") != null ? "bracket" : - matcher.group("SEMICOLON") != null ? "semicolon" : - matcher.group("STRING") != null ? "string" : - matcher.group("COMMENT") != null ? "comment" : - matcher.group("ANNOTATION") != null ? "annotation" : - matcher.group("PARAMS") != null ? "parameter" : - matcher.group("METHOD") != null ? "method" : - matcher.group("HTMLKEYWORDS") != null ? "html-keyword" : //html 标签 - matcher.group("HTMLKEYWORDS2") != null ? "html-keyword2" : //html 属性 - null; /* never happens */ + matcher.group("BRACE") != null ? "brace" : + matcher.group("BRACKET") != null ? "bracket" : + matcher.group("SEMICOLON") != null ? "semicolon" : + matcher.group("STRING") != null ? "string" : + matcher.group("COMMENT") != null ? "comment" : + matcher.group("ANNOTATION") != null ? "annotation" : + matcher.group("PARAMS") != null ? "parameter" : + matcher.group("METHOD") != null ? "method" : + matcher.group("HTMLKEYWORDS") != null ? "html-keyword" : //html 标签 + matcher.group("HTMLKEYWORDS2") != null ? "html-keyword2" : //html 属性 + null; /* never happens */ } - if (type.equals(Type.SQL)){ + if (type.equals(Type.SQL)) { styleClass = matcher.group("PAREN") != null ? "paren" : matcher.group("BRACE") != null ? "brace" : matcher.group("BRACKET") != null ? "bracket" : @@ -441,7 +456,7 @@ public class FileEditController { matcher.group("METHOD") != null ? "method" : matcher.group("HTMLKEYWORDS") != null ? "html-keyword" : //html 标签 matcher.group("HTMLKEYWORDS2") != null ? "html-keyword2" : //html 属性 - null; + null; /* never happens */ } assert styleClass != null; spansBuilder.add(Collections.emptyList(), matcher.start() - lastKwEnd); diff --git a/src/main/java/com/zhangmeng/tools/languages/ProcessSql.java b/src/main/java/com/zhangmeng/tools/languages/ProcessSql.java index aaa60b7..13ea9ba 100644 --- a/src/main/java/com/zhangmeng/tools/languages/ProcessSql.java +++ b/src/main/java/com/zhangmeng/tools/languages/ProcessSql.java @@ -12,13 +12,13 @@ public class ProcessSql { public static final String[] HTMLKEYWORDS = new String[] { "CREATE","create", "drop", "DROP", "INSERT","insert", "SELECT", "select","UPDATE","update","DELETE","delete", "FORMAT", "SUM","DATE", - "title","img", "hr", "a", "table","div","span", - "ul", "dl","dd","i","script","li","link" + "CONSTRAINT","FOREIGN","REFERENCES","DEFAULT","NULL" }; public static final String[] HTMLKEYWORDS2 = new String[] { - "use", "IF", "if", "PRIMARY KEY", "FROM", "from","order","group","INNER","JOIN","ON","values","ALTER","SHOW", - "by","INTO","VALUES","WHERE","where","SET","set","LIKE","like","UNION","ORDER","BY","GROUP","EXISTS","TABLE","table" + "use", "IF", "if", "PRIMARY","KEY","UNIQUE", "FROM", "from","order","group","INNER","JOIN","ON","values","ALTER","SHOW","into", + "by","INTO","VALUES","WHERE","where","SET","set","LIKE","like","UNION","ORDER","BY","GROUP","EXISTS","TABLE","table", + "COUNT", "SUM", "AVG", "MIN", "MAX" }; public static final String HTMLKEYWORDS_PATTERN = "\\b(" + String.join("|", HTMLKEYWORDS) + ")\\b";