diff --git a/src/main/java/org/jcnc/jnotepad/LunchApp.java b/src/main/java/org/jcnc/jnotepad/LunchApp.java index e5126bc132dba17f683449d0ddfd6a3c52b0d4b7..3fb856c8573e3b3d91b4e6c1492f7eeed78fbaf4 100644 --- a/src/main/java/org/jcnc/jnotepad/LunchApp.java +++ b/src/main/java/org/jcnc/jnotepad/LunchApp.java @@ -23,9 +23,8 @@ public class LunchApp extends Application { private static final ExecutorService threadPool = Executors.newCachedThreadPool(); public static boolean isRelevance = true; + Controller controller = Controller.getInstance(); Scene scene; - Controller controller = new Controller(); - View view; @Override diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java index 0109e62819834cce578fcb8ee52cb75a719ff153..0a7fae9ffc737c04e3f5f7fdf63840b9526fa78c 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/NewFile.java @@ -7,8 +7,6 @@ import org.jcnc.jnotepad.ui.LineNumberTextArea; import org.jcnc.jnotepad.controller.manager.Controller; import org.jcnc.jnotepad.view.manager.ViewManager; -import java.util.Objects; - import static org.jcnc.jnotepad.view.manager.ViewManager.tabPane; /** @@ -25,7 +23,7 @@ public class NewFile implements EventHandler { @Override public void handle(ActionEvent event) { // 获取控制器 - Controller controller = new Controller(); + Controller controller = Controller.getInstance(); LineNumberTextArea lineNumberTextArea = new LineNumberTextArea(); @@ -38,6 +36,9 @@ public class NewFile implements EventHandler { "-fx-border-color:white ;-fx-background-color:white;" ); + //TODO: refactor:统一TextArea新建、绑定监听器入口 + // 增加autoSave监听器绑定 + controller.autoSave(textArea); // 创建一个新的Tab页 Tab tab = new Tab("新建文本 " + ++ViewManager.tabIndex); diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/OpenFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/OpenFile.java index 66cbe2a58c7151a2d1731d9df468af0143ed913d..635a34a02f300d1a5c4d0da2650d0f497a686de6 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/OpenFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/OpenFile.java @@ -26,7 +26,7 @@ public class OpenFile implements EventHandler { @Override public void handle(ActionEvent event) { // 获取控制器 - Controller controller = new Controller(); + Controller controller = Controller.getInstance(); // 创建文件选择器 FileChooser fileChooser = new FileChooser(); // 显示文件选择对话框,并获取选中的文件 diff --git a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java index 4ed5b00829378bf19218f76815a0afc10ce4dc09..00f8fa17cbb921a857df46bb4301126dce53ca76 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java +++ b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java @@ -25,6 +25,16 @@ import java.util.List; */ public class Controller implements ControllerInterface { + private static final Controller INSTANCE = new Controller(); + + private Controller() { + + } + + public static Controller getInstance() { + return INSTANCE; + } + /** * 打开关联文件并创建文本区域。 * @@ -270,7 +280,7 @@ public class Controller implements ControllerInterface { LineNumberTextArea textArea = new LineNumberTextArea(); textArea.setStyle( "-fx-border-color:white;" + - "-fx-background-color:white" + "-fx-background-color:white" ); return textArea; } diff --git a/src/main/java/org/jcnc/jnotepad/view/init/View.java b/src/main/java/org/jcnc/jnotepad/view/init/View.java index be7bcb4f84cd9f9bddade42a12990da8c90173eb..4e99f634dece14296cdd9a49465116c827e53e29 100644 --- a/src/main/java/org/jcnc/jnotepad/view/init/View.java +++ b/src/main/java/org/jcnc/jnotepad/view/init/View.java @@ -17,17 +17,17 @@ public class View { public void initItem() { // 初始化菜单项的事件处理器 - EventHandler newFileEventHandler = new Controller().getNewFileEventHandler(new LineNumberTextArea()); + EventHandler newFileEventHandler = Controller.getInstance().getNewFileEventHandler(new LineNumberTextArea()); newItem.setOnAction(newFileEventHandler); - EventHandler openFileEventHandler = new Controller().getOpenFileEventHandler(); + EventHandler openFileEventHandler = Controller.getInstance().getOpenFileEventHandler(); openItem.setOnAction(openFileEventHandler); - EventHandler saveAsFileEventHandler = new Controller().getSaveAsFileEventHandler(); + EventHandler saveAsFileEventHandler = Controller.getInstance().getSaveAsFileEventHandler(); saveAsItem.setOnAction(saveAsFileEventHandler); - lineFeedItem.setOnAction(new Controller().getLineFeedEventHandler(new LineNumberTextArea())); + lineFeedItem.setOnAction(Controller.getInstance().getLineFeedEventHandler(new LineNumberTextArea())); } public void initTabPane() { - new Controller().initTabPane(); + Controller.getInstance().initTabPane(); } // 初始化快捷键