From bc5629b2511a9f80525e3feada0c914c69376670 Mon Sep 17 00:00:00 2001 From: zhangmeng <1334717033@qq.com> Date: Sun, 8 Oct 2023 17:52:13 +0800 Subject: [PATCH] =?UTF-8?q?2023=E5=B9=B410=E6=9C=888=E6=97=A517:52:04?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/editors/ace/AceEditor.java | 33 +++++++++++++++++++ .../tools/editors/ace/AceHelper.java | 16 ++++++--- .../zhangmeng/tools/editors/ace/AceTheme.java | 28 +++++++++++++++- 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/zhangmeng/tools/editors/ace/AceEditor.java b/src/main/java/com/zhangmeng/tools/editors/ace/AceEditor.java index d5dcd35..4014864 100644 --- a/src/main/java/com/zhangmeng/tools/editors/ace/AceEditor.java +++ b/src/main/java/com/zhangmeng/tools/editors/ace/AceEditor.java @@ -4,7 +4,13 @@ package com.zhangmeng.tools.editors.ace; import com.zhangmeng.tools.utils.AlertUtils; import com.zhangmeng.tools.utils.ClipboardUtils; import javafx.beans.property.*; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; import javafx.concurrent.Worker; +import javafx.scene.Scene; +import javafx.scene.control.ComboBox; +import javafx.scene.control.SingleSelectionModel; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.layout.AnchorPane; @@ -22,6 +28,9 @@ import java.io.IOException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** * @author zhangmeng @@ -219,6 +228,30 @@ public class AceEditor extends AnchorPane { event.consume(); ClipboardUtils.setString(selectedText()); } + + if (event.isControlDown() && event.getCode() == KeyCode.T) { + event.consume(); + + List list = Arrays.stream(AceTheme.values()).collect(Collectors.toList()); + + ComboBox comboBox = new ComboBox<>(); + comboBox.setItems(FXCollections.observableArrayList(list)); + + AnchorPane anchorPane = new AnchorPane(); + anchorPane.getChildren().add(comboBox); + anchorPane.setPrefWidth(200); + anchorPane.setPrefHeight(400); + Stage stage = new Stage(); + stage.setScene(new Scene(anchorPane)); + stage.show(); + + comboBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + if (newValue != null){ + setAceTheme(newValue); + } + }); + } + if (event.isControlDown() && event.getCode() == KeyCode.X) { event.consume(); ClipboardUtils.setString(selectedText()); diff --git a/src/main/java/com/zhangmeng/tools/editors/ace/AceHelper.java b/src/main/java/com/zhangmeng/tools/editors/ace/AceHelper.java index 676de79..ed1450d 100644 --- a/src/main/java/com/zhangmeng/tools/editors/ace/AceHelper.java +++ b/src/main/java/com/zhangmeng/tools/editors/ace/AceHelper.java @@ -18,7 +18,7 @@ public class AceHelper { InputStream aceJsStream = AceHelper.class.getResourceAsStream(ace_js); InputStream ext_language_tools = AceHelper.class.getResourceAsStream(ext_language_tools_js); InputStream modelJsStream = AceHelper.class.getResourceAsStream(model_js); - InputStream themeJsStream = AceHelper.class.getResourceAsStream(theme_js); +// InputStream themeJsStream = AceHelper.class.getResourceAsStream(theme_js); ) { String html = """ @@ -40,7 +40,7 @@ public class AceHelper { #editor-container{ height: 100%; width: 100%; - background: white; + } .ace_editor.ace_autocomplete { width: 415px; @@ -61,8 +61,16 @@ public class AceHelper { html += "\n" + "\n" + - "\n" + - "\n" + + "\n" ; + + //加载所有主题 + for (AceTheme value : AceTheme.values()) { + String theme_path = "/static/editors/ace-builds/src-min/" + value.getName(); + InputStream themeStream = AceHelper.class.getResourceAsStream(theme_path); + html += "\n" ; + } + + html+= "\n" + "\n" + "\n"; diff --git a/src/main/java/com/zhangmeng/tools/editors/ace/AceTheme.java b/src/main/java/com/zhangmeng/tools/editors/ace/AceTheme.java index 2f74e25..bb51b2b 100644 --- a/src/main/java/com/zhangmeng/tools/editors/ace/AceTheme.java +++ b/src/main/java/com/zhangmeng/tools/editors/ace/AceTheme.java @@ -2,9 +2,35 @@ package com.zhangmeng.tools.editors.ace; public enum AceTheme { + ambiance("theme-ambiance.js", "ace/theme/ambiance"), + chaos("theme-chaos.js", "ace/theme/chaos"), CHROME("theme-chrome.js", "ace/theme/chrome"), + cloud9_day("theme-cloud9_day.js", "ace/theme/cloud9_day"), + cloud9_night("theme-cloud9_night.js", "ace/theme/cloud9_night"), + cloud9_night_low_color("theme-cloud9_night_low_color.js", "ace/theme/cloud9_night_low_color"), + clouds("theme-clouds.js", "ace/theme/clouds"), + clouds_midnight("theme-clouds_midnight.js", "ace/theme/clouds_midnight"), + cobalt("theme-cobalt.js", "ace/theme/cobalt"), + crimson_editor("theme-crimson_editor.js", "ace/theme/crimson_editor"), + dawn("theme-dawn.js", "ace/theme/dawn"), + dracula("theme-dracula.js", "ace/theme/dracula"), + dreamweaver("theme-dreamweaver.js", "ace/theme/dreamweaver"), + eclipse("theme-eclipse.js", "ace/theme/eclipse"), + github("theme-github.js", "ace/theme/github"), + github_dark("theme-github_dark.js", "ace/theme/github_dark"), + gob("theme-gob.js", "ace/theme/gob"), + gruvbox("theme-gruvbox.js", "ace/theme/gruvbox"), + gruvbox_dark_hard("theme-gruvbox_dark_hard.js", "ace/theme/gruvbox_dark_hard"), + gruvbox_light_hard("theme-gruvbox_light_hard.js", "ace/theme/gruvbox_light_hard"), + idle_fingers("theme-idle_fingers.js", "ace/theme/idle_fingers"), + iplastic("theme-iplastic.js", "ace/theme/iplastic"), + katzenmilch("theme-katzenmilch.js", "ace/theme/katzenmilch"), + kr_theme("theme-kr_theme.js", "ace/theme/kr_theme"), + kuroir("theme-kuroir.js", "ace/theme/kuroir"), + merbivore("theme-merbivore.js", "ace/theme/merbivore"), XCODE_JS("theme-xcode.js", "ace/theme/theme-xcode"), - TOMORROW_NIGHT("theme-tomorrow_night.js", "ace/theme/tomorrow_night"); + TOMORROW_NIGHT("theme-tomorrow_night.js", "ace/theme/tomorrow_night"), + ; AceTheme(String name, String value) { this.name = name;