2023年6月1日17:49:06 修改编辑器

master
zhangmeng 2023-06-01 18:30:23 +08:00
parent ccf0c9c774
commit 9476743c77
1 changed files with 48 additions and 44 deletions

View File

@ -7,6 +7,8 @@ import com.zhangmeng.tools.utils.AlertUtils;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.SplitPane;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.image.Image;
import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser;
@ -33,7 +35,7 @@ import java.util.regex.Pattern;
* @author :
* @version : 1.0
* @date : 2023-06-01 10:44
*
* <p>
*
*/
@Slf4j
@ -51,21 +53,16 @@ public class FileEditController {
@FXML
public SplitPane splitPane;
private CodeArea codeArea;
private RecursiveFileList recursiveFileList = null;
private TabPane tabPane = null;
@FXML
public void initialize() {
recursiveFileList = new RecursiveFileList(null);
codeArea = new CodeArea();
URL resource = this.getClass().getClassLoader().getResource("css/code.css");
codeArea.setParagraphGraphicFactory(LineNumberFactory.get(codeArea));
codeArea.textProperty().addListener((obs, oldText, newText) -> {
codeArea.setStyleSpans(0, computeHighlighting(newText,Type.JAVA));
});
codeArea.getStylesheets().add(resource.toExternalForm());
tabPane = new TabPane();
splitPane.getItems().add(0, recursiveFileList);
splitPane.getItems().add(1,new VirtualizedScrollPane<>(codeArea));
splitPane.getItems().add(1, tabPane);
splitPane.setDividerPosition(0, 0.20);
splitPane.setDividerPosition(1, 0.80);
}
@ -76,6 +73,9 @@ public class FileEditController {
}
public void open_file(File file, Type type) {
CodeArea codeArea = new CodeArea();
URL resource = this.getClass().getClassLoader().getResource("css/code.css");
codeArea.getStylesheets().add(resource.toExternalForm());
byte[] bytes = new byte[0];
try {
bytes = Files.readAllBytes(file.toPath());
@ -85,12 +85,14 @@ public class FileEditController {
String file_content = new String(bytes, StandardCharsets.UTF_8);
codeArea.clear();
codeArea.replaceText(0, 0, file_content);
codeArea.textProperty().addListener((obs, oldText, newText) -> {
codeArea.setStyleSpans(0, computeHighlighting(newText, type));
});
codeArea.setStyleSpans(0, computeHighlighting(file_content, type));
Tab tab = new Tab(file.getName());
tab.setContent(new VirtualizedScrollPane<>(codeArea));
tabPane.getTabs().add(tab);
tabPane.getSelectionModel().select(tab);
}
public void open_file_dir() {
@ -131,6 +133,10 @@ public class FileEditController {
if (extension.equals("ico")) {
flag = false;
}
if (extension.equals("exe")) {
flag = false;
}
//
// if (extension.equals("json")){
// flag = true;
@ -165,7 +171,7 @@ public class FileEditController {
});
splitPane.getItems().add(0, recursiveFileList);
splitPane.getItems().add(1,new VirtualizedScrollPane<>(codeArea));
splitPane.getItems().add(1, tabPane);
splitPane.setDividerPosition(0, 0.20);
splitPane.setDividerPosition(1, 0.80);
}
@ -177,8 +183,6 @@ public class FileEditController {
if (type.equals(Type.GO)) {
matcher = ProcessGO.PATTERN.matcher(text);
}
int lastKwEnd = 0;
StyleSpansBuilder<Collection<String>> spansBuilder = new StyleSpansBuilder<>();
while (matcher.find()) {