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.dto.FileTreeView;
import com.zhangmeng.tools.editors.ace.AceEditor; import com.zhangmeng.tools.editors.ace.AceEditor;
import com.zhangmeng.tools.editors.ace.AceMode; 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.codemirr.CodeMirrWebView;
import com.zhangmeng.tools.editors.monaco.*; import com.zhangmeng.tools.editors.monaco.*;
import com.zhangmeng.tools.editors.timifx.TimiFxEditor; import com.zhangmeng.tools.editors.timifx.TimiFxEditor;
import com.zhangmeng.tools.utils.AlertUtils; import com.zhangmeng.tools.utils.*;
import com.zhangmeng.tools.utils.ClipboardUtils;
import com.zhangmeng.tools.utils.ImagePath;
import com.zhangmeng.tools.utils.ResourcesUtils;
import eu.mihosoft.monacofx.Editor; import eu.mihosoft.monacofx.Editor;
import eu.mihosoft.monacofx.MonacoFX; import eu.mihosoft.monacofx.MonacoFX;
import javafx.application.Platform; import javafx.application.Platform;
@ -46,6 +44,8 @@ import javafx.stage.Stage;
import javafx.util.Callback; import javafx.util.Callback;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.imyeyu.timifx.service.RunAsync; 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.apache.commons.io.FilenameUtils;
import org.fxmisc.flowless.VirtualizedScrollPane; import org.fxmisc.flowless.VirtualizedScrollPane;
import org.fxmisc.richtext.CodeArea; import org.fxmisc.richtext.CodeArea;
@ -76,6 +76,9 @@ public class EditorListImplController {
@FXML @FXML
public MenuItem save; public MenuItem save;
@FXML
public Menu them_list;
public enum Type { public enum Type {
JAVA, HTML, GO, JS, CSS, SQL, XML, YML, MARKDOWN JAVA, HTML, GO, JS, CSS, SQL, XML, YML, MARKDOWN
@ -92,6 +95,7 @@ public class EditorListImplController {
private AnchorPane timiFx; private AnchorPane timiFx;
private SimpleObjectProperty<File> choose_file = new SimpleObjectProperty<>(null); private SimpleObjectProperty<File> choose_file = new SimpleObjectProperty<>(null);
private SimpleObjectProperty<AceTheme> choose_them = new SimpleObjectProperty<>(null);
private final ObservableList<Path> filePaths_list = FXCollections.observableArrayList(); private final ObservableList<Path> filePaths_list = FXCollections.observableArrayList();
public static final String color_cell = "#f4f4f4"; public static final String color_cell = "#f4f4f4";
@ -270,6 +274,8 @@ public class EditorListImplController {
@FXML @FXML
public void initialize() { public void initialize() {
String local = ConfigManager.getConfig(Resources.CONFIG_PATH).getString(Config.section("Main").key("AceJsThem"));
choose_them.setValue(AceTheme.valueOf(local));
init(); init();
listView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { listView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) { if (newValue != null) {
@ -369,10 +375,55 @@ public class EditorListImplController {
tabPane = new TabPane(); tabPane = new TabPane();
//添加菜单 //添加菜单
addMenu(); 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; File file = null;
FileTreeView fileTreeView = new FileTreeView(file); FileTreeView fileTreeView = new FileTreeView(file);
fileTreeView.setBorder(BORDER_EXLEFT); fileTreeView.setBorder(BORDER_EXLEFT);
fileTreeView.setFixedCellSize(40);
splitPane.getItems().clear(); splitPane.getItems().clear();
splitPane.getItems().add(0, fileTreeView); splitPane.getItems().add(0, fileTreeView);
splitPane.getItems().add(1, tabPane); splitPane.getItems().add(1, tabPane);
@ -651,7 +702,7 @@ public class EditorListImplController {
case MARKDOWN -> mode = AceMode.MARKDOWN; 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(); WebView view = editor.getWebView();
AnchorPane.setTopAnchor(view, 0.0); AnchorPane.setTopAnchor(view, 0.0);
AnchorPane.setBottomAnchor(view, 0.0); AnchorPane.setBottomAnchor(view, 0.0);

View File

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

View File

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

View File

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

View File

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