2023年10月10日17:06:31

master
zhangmeng 2023-10-10 17:06:40 +08:00
parent 4d30ad799d
commit 8f0616d8f3
5 changed files with 71 additions and 13 deletions

View File

@ -5,13 +5,11 @@ import com.zhangmeng.tools.components.RecursiveFileList;
import com.zhangmeng.tools.dto.FileTreeView;
import com.zhangmeng.tools.editors.ace.AceEditor;
import com.zhangmeng.tools.editors.ace.AceMode;
import com.zhangmeng.tools.editors.ace.AceTheme;
import com.zhangmeng.tools.editors.codemirr.CodeMirrWebView;
import com.zhangmeng.tools.editors.monaco.*;
import com.zhangmeng.tools.editors.timifx.TimiFxEditor;
import com.zhangmeng.tools.utils.AlertUtils;
import com.zhangmeng.tools.utils.ClipboardUtils;
import com.zhangmeng.tools.utils.ImagePath;
import com.zhangmeng.tools.utils.ResourcesUtils;
import com.zhangmeng.tools.utils.*;
import eu.mihosoft.monacofx.Editor;
import eu.mihosoft.monacofx.MonacoFX;
import javafx.application.Platform;
@ -46,6 +44,8 @@ import javafx.stage.Stage;
import javafx.util.Callback;
import lombok.extern.slf4j.Slf4j;
import net.imyeyu.timifx.service.RunAsync;
import net.imyeyu.timijava.config.Config;
import net.imyeyu.timijava.config.ConfigManager;
import org.apache.commons.io.FilenameUtils;
import org.fxmisc.flowless.VirtualizedScrollPane;
import org.fxmisc.richtext.CodeArea;
@ -76,6 +76,9 @@ public class EditorListImplController {
@FXML
public MenuItem save;
@FXML
public Menu them_list;
public enum Type {
JAVA, HTML, GO, JS, CSS, SQL, XML, YML, MARKDOWN
@ -92,6 +95,7 @@ public class EditorListImplController {
private AnchorPane timiFx;
private SimpleObjectProperty<File> choose_file = new SimpleObjectProperty<>(null);
private SimpleObjectProperty<AceTheme> choose_them = new SimpleObjectProperty<>(null);
private final ObservableList<Path> filePaths_list = FXCollections.observableArrayList();
public static final String color_cell = "#f4f4f4";
@ -270,6 +274,8 @@ public class EditorListImplController {
@FXML
public void initialize() {
String local = ConfigManager.getConfig(Resources.CONFIG_PATH).getString(Config.section("Main").key("AceJsThem"));
choose_them.setValue(AceTheme.valueOf(local));
init();
listView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
@ -369,10 +375,55 @@ public class EditorListImplController {
tabPane = new TabPane();
//添加菜单
addMenu();
//加载菜单
// for (AceTheme value : AceTheme.values()) {
// String them_string = value.toString();
// MenuItem menuItem = new MenuItem(them_string);
// menuItem.setOnAction(event -> {
// AceEditor aceEditor = (AceEditor) tabPane.getSelectionModel().getSelectedItem().getContent();
// MenuItem source = (MenuItem) event.getSource();
// aceEditor.setAceTheme(AceTheme.valueOf(source.getText()));
// });
// them_list.getItems().add(menuItem);
// }
ListView<String> listView = new ListView<>();
ObservableList<String> objects = FXCollections.observableArrayList();
for (AceTheme value : AceTheme.values()) {
String them_string = value.toString();
objects.add(them_string);
}
listView.setItems(objects);
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
if (newValue!= null){
if (tabPane.getSelectionModel().getSelectedItem() == null){
choose_them.setValue(AceTheme.valueOf(newValue));
AlertUtils.alert_warning("主题选择成功!");
return;
}
AceEditor aceEditor = (AceEditor) tabPane.getSelectionModel().getSelectedItem().getContent();
aceEditor.setAceTheme(AceTheme.valueOf(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);
});
File file = null;
FileTreeView fileTreeView = new FileTreeView(file);
fileTreeView.setBorder(BORDER_EXLEFT);
fileTreeView.setFixedCellSize(40);
splitPane.getItems().clear();
splitPane.getItems().add(0, fileTreeView);
splitPane.getItems().add(1, tabPane);
@ -651,7 +702,7 @@ public class EditorListImplController {
case MARKDOWN -> mode = AceMode.MARKDOWN;
}
//新建编辑器
AceEditor editor = new AceEditor(choose_file.getValue(),mode,null);
AceEditor editor = new AceEditor(choose_file.getValue(), mode, EditorListImplController.this.choose_them.get());
WebView view = editor.getWebView();
AnchorPane.setTopAnchor(view, 0.0);
AnchorPane.setBottomAnchor(view, 0.0);

View File

@ -104,6 +104,7 @@ public class AlertUtils {
stage.initStyle(StageStyle.UTILITY);
stage.initOwner(primaryStage);
stage.initModality(Modality.APPLICATION_MODAL);
stage.setResizable(false);
stage.show();
}
}

View File

@ -7,6 +7,9 @@
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.layout.AnchorPane?>
<?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">
<children>
<MenuBar layoutX="14.0" layoutY="27.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
@ -112,9 +115,9 @@
<Menu mnemonicParsing="false" text="编辑器">
<items>
<MenuItem mnemonicParsing="false" onAction="#ace_menu_item" text="ace.js 编辑器" />
<MenuItem mnemonicParsing="false" onAction="#monaco_menu_item" text="monaco.js 编辑器" />
<MenuItem mnemonicParsing="false" onAction="#codemirror_menu_item" text="codemirror.js 编辑器" />
<MenuItem mnemonicParsing="false" onAction="#timeFx_menu_item" text="timefx 编辑器" />
<!-- <MenuItem mnemonicParsing="false" onAction="#monaco_menu_item" text="monaco.js 编辑器" />-->
<!-- <MenuItem mnemonicParsing="false" onAction="#codemirror_menu_item" text="codemirror.js 编辑器" />-->
<!-- <MenuItem mnemonicParsing="false" onAction="#timeFx_menu_item" text="timefx 编辑器" />-->
</items>
</Menu>
@ -138,6 +141,9 @@
<MenuItem fx:id="save" mnemonicParsing="false" text="保存" />
</items>
</Menu>
<Menu fx:id="them_list" mnemonicParsing="false" text="主题">
</Menu>
</menus>
</MenuBar>
</children>

View File

@ -115,9 +115,9 @@
<Menu mnemonicParsing="false" text="编辑器">
<items>
<MenuItem mnemonicParsing="false" text="ace.js 编辑器" onAction="#ace_menu_item"/>
<MenuItem mnemonicParsing="false" text="monaco.js 编辑器" onAction="#monaco_menu_item"/>
<MenuItem mnemonicParsing="false" text="codemirror.js 编辑器" onAction="#codemirror_menu_item"/>
<MenuItem mnemonicParsing="false" text="timefx 编辑器" onAction="#timeFx_menu_item"/>
<!-- <MenuItem mnemonicParsing="false" text="monaco.js 编辑器" onAction="#monaco_menu_item"/>-->
<!-- <MenuItem mnemonicParsing="false" text="codemirror.js 编辑器" onAction="#codemirror_menu_item"/>-->
<!-- <MenuItem mnemonicParsing="false" text="timefx 编辑器" onAction="#timeFx_menu_item"/>-->
</items>
</Menu>

View File

@ -14,7 +14,7 @@ Width=1300
Height=850
# 编辑器主题
AceJsThem=kr_theme
AceJsThem=monokai
[Interpolator]