diff --git a/src/main/java/com/zhangmeng/tools/controller/EditListController.java b/src/main/java/com/zhangmeng/tools/controller/EditListController.java index b91d095..0976cd3 100644 --- a/src/main/java/com/zhangmeng/tools/controller/EditListController.java +++ b/src/main/java/com/zhangmeng/tools/controller/EditListController.java @@ -1,6 +1,7 @@ package com.zhangmeng.tools.controller; import com.zhangmeng.tools.editors.ace.AceEditor; +import com.zhangmeng.tools.editors.monaco.MonacoEdit; import com.zhangmeng.tools.utils.ImagePath; import com.zhangmeng.tools.utils.ResourcesUtils; import javafx.beans.property.SimpleDoubleProperty; @@ -34,9 +35,10 @@ public class EditListController { private SimpleDoubleProperty width = new SimpleDoubleProperty(0.0); private SimpleDoubleProperty height = new SimpleDoubleProperty(0.0); - private AceEditor root; + private AnchorPane root; private AceEditor acJsEditor; + private MonacoEdit monacoEdit; public static final String color_cell = "#f4f4f4"; @@ -225,6 +227,12 @@ public class EditListController { acJsEditor(flag); } + if (newValue.getIndex() == 1) { + if (monacoEdit != null){ + flag = true; + } + monacoEdit(flag); + } } }); } @@ -232,6 +240,7 @@ public class EditListController { public static Image getImage(ResourcesUtils.EditorList player){ return switch (player){ case Ace_JS -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5)); + case Monaco_JS -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5)); }; } @@ -294,18 +303,33 @@ public class EditListController { listView.getSelectionModel().select(0); if (!flag){ - root = new AceEditor(); - WebView webView = root.getWebView(); + acJsEditor = new AceEditor(); + root = acJsEditor; + WebView webView = acJsEditor.getWebView(); webView.prefWidthProperty().bind(root.widthProperty()); webView.prefHeightProperty().bind(root.heightProperty()); - - acJsEditor = root; }else { root = acJsEditor; } common_method(); } + private void monacoEdit(boolean flag) { + //默认选择第一个 + listView.getSelectionModel().select(1); + + if (!flag){ + monacoEdit = new MonacoEdit(); + root = monacoEdit; + WebView webView = monacoEdit.getWebView(); + webView.prefWidthProperty().bind(root.widthProperty()); + webView.prefHeightProperty().bind(root.heightProperty()); + }else { + root = monacoEdit; + } + common_method(); + } + private void common_method() { splitPane.getItems().remove(1); @@ -564,4 +588,8 @@ public class EditListController { ListView listView = (ListView) fx.lookup("#listView"); listView.getSelectionModel().select(index); } + + public void monaco_js_menu_item(ActionEvent actionEvent) { + + } } 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 45096a5..676de79 100644 --- a/src/main/java/com/zhangmeng/tools/editors/ace/AceHelper.java +++ b/src/main/java/com/zhangmeng/tools/editors/ace/AceHelper.java @@ -76,7 +76,7 @@ public class AceHelper { editor.session.setMode("ace/mode/java"); //字体大小 - editor.setFontSize(20); + editor.setFontSize(16); //editor.setValue(Areacode); //启动提示 diff --git a/src/main/java/com/zhangmeng/tools/editors/monaco/MonacoEdit.java b/src/main/java/com/zhangmeng/tools/editors/monaco/MonacoEdit.java index df26562..8022720 100644 --- a/src/main/java/com/zhangmeng/tools/editors/monaco/MonacoEdit.java +++ b/src/main/java/com/zhangmeng/tools/editors/monaco/MonacoEdit.java @@ -89,7 +89,8 @@ public class MonacoEdit extends AnchorPane { * @param value */ private void setMonacoText(String value) { - editor.call("setValue", value, 1); + JSObject editor = (JSObject) engine.executeScript("window"); + editor.call("setValue", value); } /** @@ -128,7 +129,7 @@ public class MonacoEdit extends AnchorPane { // window = (JSObject) engine.executeScript("window"); window.setMember("MonacoEdit", this); - editor = (JSObject) engine.executeScript("window.monaco.editor"); +// editor = (JSObject) engine.executeScript("monaco.editor"); setMonacoText(getText()); setMonacoMode(mode); // WebView 整合 Ace.js 后 Ctrl+C 和 Ctrl+X 有问题,重新处理下。 diff --git a/src/main/java/com/zhangmeng/tools/editors/monaco/MonacoHelper.java b/src/main/java/com/zhangmeng/tools/editors/monaco/MonacoHelper.java index 3bcae3e..b5ef0e7 100644 --- a/src/main/java/com/zhangmeng/tools/editors/monaco/MonacoHelper.java +++ b/src/main/java/com/zhangmeng/tools/editors/monaco/MonacoHelper.java @@ -21,326 +21,130 @@ public class MonacoHelper { InputStream loader_JS = AceHelper.class.getResourceAsStream(loader_js_path); ) { String html = """ - - + + - - Monaco Editor Demo - - - """; - - html += ""; - html += """ - - - + - + //获取所选文本 + function getSelected() { + var text = code_edit.getModel().getValueInRange(code_edit.getSelection()) + } - + function setValue(){ + // 销毁当前的编辑器实例 + code_edit.dispose(); + addNewEditor("defaultCode", 'java'); + } -
- - -
-
+ + - + - +
+ + + + + +
+
+ + + + """; return html; diff --git a/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java b/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java index 26a512a..e23f759 100644 --- a/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java +++ b/src/main/java/com/zhangmeng/tools/utils/ResourcesUtils.java @@ -362,6 +362,7 @@ public class ResourcesUtils { public enum EditorList { Ace_JS("ace.js 编辑器", 0), + Monaco_JS("ace.js 编辑器", 1), ; EditorList(String title, int index) { diff --git a/src/main/resources/fxml/editor-list.fxml b/src/main/resources/fxml/editor-list.fxml index 264473d..5cf0827 100644 --- a/src/main/resources/fxml/editor-list.fxml +++ b/src/main/resources/fxml/editor-list.fxml @@ -106,6 +106,7 @@ +