2023年10月10日17:06:31
parent
4d30ad799d
commit
8f0616d8f3
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ Width=1300
|
||||||
Height=850
|
Height=850
|
||||||
|
|
||||||
# 编辑器主题
|
# 编辑器主题
|
||||||
AceJsThem=kr_theme
|
AceJsThem=monokai
|
||||||
|
|
||||||
|
|
||||||
[Interpolator]
|
[Interpolator]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue