2023年11月18日17:35:40

master
zhangmeng 2023-11-18 17:38:08 +08:00
parent 55825ab510
commit 8b426d1920
3 changed files with 255 additions and 143 deletions

View File

@ -5,12 +5,15 @@ import javafx.embed.swing.SwingNode;
import javafx.scene.layout.AnchorPane;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
import org.fife.ui.rsyntaxtextarea.Theme;
import org.fife.ui.rtextarea.RTextScrollPane;
import javax.swing.*;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import java.awt.*;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
public class RxEditer extends AnchorPane{
private final SimpleIntegerProperty line = new SimpleIntegerProperty();
@ -30,10 +33,30 @@ public class RxEditer extends AnchorPane{
textArea.setFont(font);
}
//选择全部
public void selectAll(){
textArea.selectAll();
}
private void changeStyleViaThemeXml(String them_name) {
try {
Theme theme = Theme.load(getClass().getResourceAsStream(
"/org/fife/ui/rsyntaxtextarea/themes/" + them_name + ".xml"));
theme.apply(textArea);
} catch (IOException ioe) { // Never happens
ioe.printStackTrace();
}
}
public void setTheme(String them_name){
changeStyleViaThemeXml(them_name);
}
public RxEditer(String style) {
SwingNode sn = new SwingNode();
new Thread(()->{
SwingUtilities.invokeLater(() -> {
try {
SwingUtilities.invokeAndWait(() -> {
textArea.setEditable(true);//编辑器
if (style == null || style.equals("")) {
textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);//java
@ -60,6 +83,9 @@ public class RxEditer extends AnchorPane{
RTextScrollPane sp = new RTextScrollPane(textArea);
sn.setContent(sp);
});
} catch (InterruptedException | InvocationTargetException e) {
throw new RuntimeException(e);
}
}).start();
getChildren().add(sn);
setTopAnchor(sn, 0.0);

View File

@ -1,6 +1,7 @@
package com.zhangmeng.tools.controller;
import com.sun.javafx.PlatformUtil;
import com.zhangmeng.tools.components.JFontDialog;
import com.zhangmeng.tools.components.RecursiveFileList;
import com.zhangmeng.tools.components.RxEditer;
import com.zhangmeng.tools.dto.FileTreeView;
@ -19,6 +20,8 @@ import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.embed.swing.SwingFXUtils;
import javafx.embed.swing.SwingNode;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventHandler;
@ -51,9 +54,11 @@ import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
import org.fxmisc.flowless.VirtualizedScrollPane;
import org.fxmisc.richtext.CodeArea;
import javax.swing.*;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@ -83,6 +88,8 @@ public class EditorListImplController {
@FXML
public MenuItem new_file;
public Menu font_item;
public void swing_menu_item(ActionEvent actionEvent) {
editer_index.setValue(1);
@ -109,7 +116,7 @@ public class EditorListImplController {
private CodeMirrWebView codemirror;
private AnchorPane timiFx;
private AnchorPane swingEditor;
private RxEditer swingEditor;
private SimpleObjectProperty<File> choose_file = new SimpleObjectProperty<>(null);
private SimpleObjectProperty<AceTheme> choose_them = new SimpleObjectProperty<>(null);
@ -406,6 +413,9 @@ public class EditorListImplController {
// });
// them_list.getItems().add(menuItem);
// }
if (editer_index.getValue()==null || editer_index.getValue() == 0){
ListView<String> listView = new ListView<>();
ObservableList<String> objects = FXCollections.observableArrayList();
@ -439,6 +449,58 @@ public class EditorListImplController {
Stage primaryStage = (Stage) EditorListImplController.this.splitPane.getScene().getWindow();
AlertUtils.alert("设置", them_choose,200,400, primaryStage);
});
}
if (editer_index.getValue() == 1){
ListView<String> listView = new ListView<>();
ObservableList<String> objects = FXCollections.observableArrayList();
objects.add("dark");
objects.add("default");
objects.add("default-alt");
objects.add("druid");
objects.add("eclipse");
objects.add("idea");
objects.add("monokai");
objects.add("theme");
objects.add("vs");
listView.setItems(objects);
listView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue!= null){
if (tabPane.getSelectionModel().getSelectedItem() == null){
//choose_them.setValue(newValue);
AlertUtils.alert_warning("主题选择成功!");
return;
}
RxEditer aceEditor = (RxEditer) tabPane.getSelectionModel().getSelectedItem().getContent();
aceEditor.setTheme(newValue);
}
});
MenuItem menuItem = new MenuItem("设置主题");
them_list.getItems().add(menuItem);
menuItem.setOnAction(event -> {
AnchorPane them_choose = new AnchorPane();
them_choose.setPrefWidth(200);
them_choose.setPrefHeight(400);
them_choose.getChildren().add(listView);
Stage primaryStage = (Stage) EditorListImplController.this.splitPane.getScene().getWindow();
AlertUtils.alert("设置", them_choose,200,400, primaryStage);
});
// SwingNode swingNode = new SwingNode();
// try {
// SwingUtilities.invokeAndWait(()->{
// JFontDialog jFontDialog = new JFontDialog();
// swingNode.setContent(jFontDialog);
// });
// } catch (InterruptedException | InvocationTargetException e) {
// throw new RuntimeException(e);
// }
}
File file = null;
FileTreeView fileTreeView = new FileTreeView(file);

View File

@ -10,14 +10,17 @@
<?import javafx.scene.control.CustomMenuItem?>
<?import javafx.scene.control.ComboBox?>
<?import java.lang.String?>
<AnchorPane prefHeight="800.0" prefWidth="1661.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.tools.controller.EditorListImplController">
<AnchorPane prefHeight="800.0" prefWidth="1661.0" xmlns="http://javafx.com/javafx/19"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.tools.controller.EditorListImplController">
<children>
<MenuBar layoutX="14.0" layoutY="27.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<MenuBar layoutX="14.0" layoutY="27.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
AnchorPane.topAnchor="0.0">
<menus>
<Menu mnemonicParsing="false" text="加密工具">
<items>
<MenuItem mnemonicParsing="false" onAction="#md5_menu_item" text="md5 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item" text="spring security 加密" />
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item"
text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#jks_file_menu_item" text="jkd 文件生成"/>
</items>
@ -43,16 +46,20 @@
<MenuItem mnemonicParsing="false" onAction="#mail_menu_item" text="邮件发送"/>
<MenuItem mnemonicParsing="false" onAction="#telephone_menu_item" text="手机号工具"/>
<MenuItem mnemonicParsing="false" onAction="#JsonView_menu_item" text="JsonView"/>
<MenuItem mnemonicParsing="false" onAction="#maven_jar_install_menu_item" text="maven-jar-install" />
<MenuItem mnemonicParsing="false" onAction="#maven_jar_install_menu_item"
text="maven-jar-install"/>
<MenuItem mnemonicParsing="false" onAction="#word_ocr_menu_item" text="word-ocr"/>
<MenuItem mnemonicParsing="false" onAction="#bar_code_menu_item" text="条形码识别"/>
<MenuItem mnemonicParsing="false" onAction="#pdf_menu_item" text="pdf识别"/>
<MenuItem mnemonicParsing="false" onAction="#batch_update_file_name_menu_item" text="批量修改文件名" />
<MenuItem mnemonicParsing="false" onAction="#batch_update_file_name_menu_item"
text="批量修改文件名"/>
<MenuItem mnemonicParsing="false" onAction="#capter_screen_menu_item" text="截图工具"/>
<MenuItem mnemonicParsing="false" onAction="#file_edit_menu_item" text="文件编辑器"/>
<MenuItem mnemonicParsing="false" onAction="#layui_form_gen_menu_item" text="LayUI表单代码生成" />
<MenuItem mnemonicParsing="false" onAction="#layui_form_gen_menu_item"
text="LayUI表单代码生成"/>
<MenuItem mnemonicParsing="false" onAction="#log_console_menu_item" text="日志输出"/>
<MenuItem mnemonicParsing="false" onAction="#edit_plus_code_menu_item" text="EditPlus注册码生成" />
<MenuItem mnemonicParsing="false" onAction="#edit_plus_code_menu_item"
text="EditPlus注册码生成"/>
<MenuItem mnemonicParsing="false" onAction="#minio_upload_menu_item" text="minio文件上传"/>
</items>
</Menu>
@ -69,8 +76,10 @@
<Menu mnemonicParsing="false" text="代码工具">
<items>
<MenuItem mnemonicParsing="false" onAction="#sql_code_gen_menu_item" text="mysql代码生成"/>
<MenuItem mnemonicParsing="false" onAction="#mybatis_plus_gen_menu_item" text="mybatis-plus 代码生成" />
<MenuItem mnemonicParsing="false" onAction="#json_javabean_gen_menu_item" text="json转javaBean 代码生成" />
<MenuItem mnemonicParsing="false" onAction="#mybatis_plus_gen_menu_item"
text="mybatis-plus 代码生成"/>
<MenuItem mnemonicParsing="false" onAction="#json_javabean_gen_menu_item"
text="json转javaBean 代码生成"/>
<MenuItem mnemonicParsing="false" onAction="#sql_query_gen_menu_item" text="sql 查询"/>
</items>
</Menu>
@ -85,15 +94,22 @@
<Menu mnemonicParsing="false" text="server 工具">
<items>
<MenuItem mnemonicParsing="false" onAction="#http_server_menu_item" text="http-server 请求工具" />
<MenuItem mnemonicParsing="false" onAction="#http_server_menu_item"
text="http-server 请求工具"/>
<MenuItem mnemonicParsing="false" onAction="#ftp_server_menu_item" text="ftp-server 请求工具"/>
<MenuItem mnemonicParsing="false" onAction="#ssh_client_menu_item" text="ssh-client 请求工具"/>
<MenuItem mnemonicParsing="false" onAction="#socket_server_menu_item" text="socket-server 服务工具" />
<MenuItem mnemonicParsing="false" onAction="#socket_client_aio_menu_item" text="socket-client-aio 客户端工具" />
<MenuItem mnemonicParsing="false" onAction="#socket_server_aio_menu_item" text="socket-server-aio 服务端工具" />
<MenuItem mnemonicParsing="false" onAction="#socket_server_nio_menu_item" text="socket-server-nio 服务端工具" />
<MenuItem mnemonicParsing="false" onAction="#socket_client_nio_menu_item" text="socket-client-nio 客户端工具" />
<MenuItem mnemonicParsing="false" onAction="#web_socket_client_menu_item" text="web-socket-client 客户端工具" />
<MenuItem mnemonicParsing="false" onAction="#socket_server_menu_item"
text="socket-server 服务工具"/>
<MenuItem mnemonicParsing="false" onAction="#socket_client_aio_menu_item"
text="socket-client-aio 客户端工具"/>
<MenuItem mnemonicParsing="false" onAction="#socket_server_aio_menu_item"
text="socket-server-aio 服务端工具"/>
<MenuItem mnemonicParsing="false" onAction="#socket_server_nio_menu_item"
text="socket-server-nio 服务端工具"/>
<MenuItem mnemonicParsing="false" onAction="#socket_client_nio_menu_item"
text="socket-client-nio 客户端工具"/>
<MenuItem mnemonicParsing="false" onAction="#web_socket_client_menu_item"
text="web-socket-client 客户端工具"/>
</items>
</Menu>
@ -107,7 +123,8 @@
<items>
<MenuItem mnemonicParsing="false" onAction="#ace_js_menu_item" text="ace.js 编辑器"/>
<MenuItem mnemonicParsing="false" onAction="#monaco_js_menu_item" text="monaco.js 编辑器"/>
<MenuItem mnemonicParsing="false" onAction="#codemirror_js_menu_item" text="codemirror.js 编辑器" />
<MenuItem mnemonicParsing="false" onAction="#codemirror_js_menu_item"
text="codemirror.js 编辑器"/>
<MenuItem mnemonicParsing="false" onAction="#timeFx_fx_menu_item" text="timefx 编辑器"/>
</items>
</Menu>
@ -123,12 +140,16 @@
</menus>
</MenuBar>
<AnchorPane layoutY="25.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="25.0">
<AnchorPane layoutY="25.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"
AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="25.0">
<children>
<SplitPane fx:id="splitPane" dividerPositions="0.5" prefHeight="575.0" prefWidth="1200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="25.0">
<SplitPane fx:id="splitPane" dividerPositions="0.5" prefHeight="575.0" prefWidth="1200.0"
AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
AnchorPane.topAnchor="25.0">
<items>
<ListView fx:id="listView" maxWidth="300.0" minWidth="200.0" prefHeight="634.0" prefWidth="295.0" />
<ListView fx:id="listView" maxWidth="300.0" minWidth="200.0" prefHeight="634.0"
prefWidth="295.0"/>
<AnchorPane prefHeight="200.0" prefWidth="200.0"/>
</items>
</SplitPane>
@ -144,6 +165,9 @@
</Menu>
<Menu fx:id="them_list" mnemonicParsing="false" text="主题">
</Menu>
<Menu fx:id="font_item" mnemonicParsing="false" text="字体">
</Menu>
</menus>
</MenuBar>