diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 974122b57738f6ab1c9fe6318879deb56f4522b1..6091e0e7636045976dc124ce7bd4bd40be2d6bdc 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -23,11 +23,6 @@ module org.jcnc.jnotepad { exports org.jcnc.jnotepad.controller.event.handler.menubar; exports org.jcnc.jnotepad.tool; exports org.jcnc.jnotepad.interfaces; - exports org.jcnc.jnotepad.ui.module; - exports org.jcnc.jnotepad.ui.setstage; - exports org.jcnc.jnotepad.root.center.main.center.tab; - exports org.jcnc.jnotepad.root.top.menu; - exports org.jcnc.jnotepad.view.manager; opens org.jcnc.jnotepad.app.config; exports org.jcnc.jnotepad.root.center.main.bottom.status; diff --git a/src/main/java/org/jcnc/jnotepad/LunchApp.java b/src/main/java/org/jcnc/jnotepad/LunchApp.java index a0b2c19c814cac7158ffae59b9adaad4cd732b38..598c667de44b10b301aa803545625d59f40fd155 100644 --- a/src/main/java/org/jcnc/jnotepad/LunchApp.java +++ b/src/main/java/org/jcnc/jnotepad/LunchApp.java @@ -27,10 +27,7 @@ import java.util.concurrent.ExecutorService; * @author 许轲 */ public class LunchApp extends Application { - /** - * 线程池 - */ - private final ExecutorService threadPool = ThreadPoolManager.getThreadPool(); + private static final Pane ROOT = new Pane(); private static final Scene SCENE; @@ -40,6 +37,11 @@ public class LunchApp extends Application { SCENE = new Scene(ROOT, width, length); } + /** + * 线程池 + */ + private final ExecutorService threadPool = ThreadPoolManager.getThreadPool(); + /** * 应用程序的入口点,启动 JavaFX 应用程序。 * diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/NewFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/NewFile.java index 72df58c209883ef41f2e0ebcfb13d0ab7e96a994..994646c81d65a48f306a7156da29110b24878f85 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/NewFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/NewFile.java @@ -4,9 +4,9 @@ import javafx.event.ActionEvent; import javafx.event.EventHandler; import org.jcnc.jnotepad.app.i18n.UiResourceBundle; import org.jcnc.jnotepad.constants.TextConstants; -import org.jcnc.jnotepad.root.center.main.bottom.status.StatusHorizontalBox; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTab; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTabPane; +import org.jcnc.jnotepad.root.center.main.bottom.status.JNotepadStatusBox; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTab; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane; import org.jcnc.jnotepad.ui.module.LineNumberTextArea; import org.jcnc.jnotepad.view.manager.ViewManager; @@ -38,15 +38,15 @@ public class NewFile implements EventHandler { // TODO: refactor:统一TextArea新建、绑定监听器入口 ViewManager viewManager = ViewManager.getInstance(); // 创建标签页 - MainTab mainTab = new MainTab( + JNotepadTab JNotepadTab = new JNotepadTab( UiResourceBundle.getContent(TextConstants.NEW_FILE) + viewManager.selfIncreaseAndGetTabIndex(), textArea); // 设置当前标签页与本地文件无关联 - mainTab.setRelevance(false); + JNotepadTab.setRelevance(false); // 将Tab页添加到TabPane中 - MainTabPane.getInstance().addNewTab(mainTab); + JNotepadTabPane.getInstance().addNewTab(JNotepadTab); // 更新编码信息 - StatusHorizontalBox.getInstance().updateEncodingLabel(); + JNotepadStatusBox.getInstance().updateEncodingLabel(); } } diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/OpenFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/OpenFile.java index f17dca7cfb0434bdf75cc56f9bb394bf17a89dec..bf01dab371fcaccbb540f362d9200086051923d7 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/OpenFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/OpenFile.java @@ -9,8 +9,8 @@ import javafx.stage.FileChooser; import org.jcnc.jnotepad.app.i18n.UiResourceBundle; import org.jcnc.jnotepad.constants.TextConstants; import org.jcnc.jnotepad.manager.ThreadPoolManager; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTab; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTabPane; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTab; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane; import org.jcnc.jnotepad.tool.EncodingDetector; import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.tool.UiUtil; @@ -83,9 +83,9 @@ public class OpenFile implements EventHandler { */ public void openFile(File file) { // 获取标签页集合 - MainTabPane jnotepadMainTabPane = MainTabPane.getInstance(); + JNotepadTabPane jnotepadTabPane = JNotepadTabPane.getInstance(); // 遍历标签页,查找匹配的标签页 - for (Tab tab : jnotepadMainTabPane.getTabs()) { + for (Tab tab : jnotepadTabPane.getTabs()) { // 获取绑定的文件 File tabFile = (File) tab.getUserData(); if (tabFile == null) { @@ -93,7 +93,7 @@ public class OpenFile implements EventHandler { } if (file.getPath().equals((tabFile).getPath())) { // 找到匹配的标签页,设置为选中状态并跳转 - jnotepadMainTabPane.getSelectionModel().select(tab); + jnotepadTabPane.getSelectionModel().select(tab); return; } } @@ -119,11 +119,11 @@ public class OpenFile implements EventHandler { LogUtil.getLogger(this.getClass()).info("已调用读取文件功能"); Platform.runLater(() -> { textArea.getMainTextArea().setText(text); - MainTab tab = createNewTab(file.getName(), textArea, encoding); + JNotepadTab tab = createNewTab(file.getName(), textArea, encoding); // 设置当前标签页关联本地文件 tab.setRelevance(true); tab.setUserData(file); - MainTabPane.getInstance().addNewTab(tab); + JNotepadTabPane.getInstance().addNewTab(tab); }); } catch (IOException ignored) { LogUtil.getLogger(this.getClass()).info("已忽视IO异常!"); @@ -146,7 +146,7 @@ public class OpenFile implements EventHandler { * @param textArea 文本区域 * @return 新的标签页 */ - private MainTab createNewTab(String tabName, LineNumberTextArea textArea, Charset charset) { - return new MainTab(tabName, textArea, charset); + private JNotepadTab createNewTab(String tabName, LineNumberTextArea textArea, Charset charset) { + return new JNotepadTab(tabName, textArea, charset); } } diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/RenameFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/RenameFile.java index 860dfa6c04ff92a8eea10710143f65804820b4c9..883b2052ca86b80fad609f981aff0afbbe6cd5dc 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/RenameFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/RenameFile.java @@ -7,8 +7,8 @@ import javafx.scene.input.KeyCode; import javafx.stage.FileChooser; import org.jcnc.jnotepad.app.i18n.UiResourceBundle; import org.jcnc.jnotepad.constants.TextConstants; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTab; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTabPane; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTab; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane; import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.tool.UiUtil; import org.jcnc.jnotepad.ui.dialog.factory.impl.TextFileChooserFactory; @@ -30,7 +30,7 @@ public class RenameFile implements EventHandler { @Override public void handle(ActionEvent actionEvent) { // 获取当前标签页 - MainTab jnotepadtab = MainTabPane.getInstance().getSelected(); + JNotepadTab jnotepadtab = JNotepadTabPane.getInstance().getSelected(); if (jnotepadtab == null || jnotepadtab.getText().isEmpty()) { return; } @@ -50,7 +50,7 @@ public class RenameFile implements EventHandler { * * @param jnotepadtab 标签页组件 */ - private void handleRenameTab(MainTab jnotepadtab) { + private void handleRenameTab(JNotepadTab jnotepadtab) { TextField textField = new TextField(jnotepadtab.getText()); textField.getStyleClass().add("tab-title-editable"); // 清空标签页名称 @@ -88,7 +88,7 @@ public class RenameFile implements EventHandler { * * @param jnotepadtab 标签页组件 */ - private void handleRenameRelevanceFile(MainTab jnotepadtab) { + private void handleRenameRelevanceFile(JNotepadTab jnotepadtab) { // 获取原始文件对象 File file = (File) jnotepadtab.getUserData(); // 获取应用窗口并绑定 diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/SaveFile.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/SaveFile.java index d74a9b1df3275f80f318f0eace20ce6c9ec24a44..1b0d4cac700bcf36802b1b42e667144c0e82b257 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/SaveFile.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/menubar/SaveFile.java @@ -6,8 +6,8 @@ import javafx.stage.FileChooser; import org.jcnc.jnotepad.app.i18n.UiResourceBundle; import org.jcnc.jnotepad.constants.TextConstants; import org.jcnc.jnotepad.controller.i18n.LocalizationController; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTab; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTabPane; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTab; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane; import org.jcnc.jnotepad.root.top.menu.TopMenuBar; import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.tool.SingletonUtil; @@ -40,7 +40,7 @@ public class SaveFile implements EventHandler { @Override public void handle(ActionEvent actionEvent) { // 获取当前tab页 - MainTab selectedTab = MainTabPane.getInstance().getSelected(); + JNotepadTab selectedTab = JNotepadTabPane.getInstance().getSelected(); if (selectedTab == null) { return; } @@ -72,7 +72,7 @@ public class SaveFile implements EventHandler { * @see LogUtil */ protected void saveTab(Class currentClass) { - MainTab selectedTab = MainTabPane.getInstance().getSelected(); + JNotepadTab selectedTab = JNotepadTabPane.getInstance().getSelected(); if (selectedTab == null) { return; } diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/tool/SetBtn.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/tool/SetBtn.java index a2881cbc5b3f6d8e86891f7a7a8436e7c028da61..d426114a0832dbab086b3130ef4ab6654831cfc5 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/tool/SetBtn.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/tool/SetBtn.java @@ -4,7 +4,6 @@ import javafx.event.ActionEvent; import javafx.event.EventHandler; import org.jcnc.jnotepad.ui.setstage.SetStage; - /** * 设置按钮事件的事件处理程序。 * diff --git a/src/main/java/org/jcnc/jnotepad/root/RootBorderPane.java b/src/main/java/org/jcnc/jnotepad/root/RootBorderPane.java index 769c851bd56ab79d636c2181b49b54d408867cfc..cb6491301bc6547e039481a6168df995dc59675b 100644 --- a/src/main/java/org/jcnc/jnotepad/root/RootBorderPane.java +++ b/src/main/java/org/jcnc/jnotepad/root/RootBorderPane.java @@ -24,6 +24,15 @@ public class RootBorderPane extends AbstractBorderPane { initRootBorderPane(); } + /** + * 获取 RootBorderPane 的单例实例。 + * + * @return RootBorderPane 的单例实例 + */ + public static RootBorderPane getInstance() { + return INSTANCE; + } + /** * 初始化 RootBorderPane。 * @@ -43,12 +52,5 @@ public class RootBorderPane extends AbstractBorderPane { setBottomComponent(RootBottomSideBarVerticalBox.getInstance()); } - /** - * 获取 RootBorderPane 的单例实例。 - * - * @return RootBorderPane 的单例实例 - */ - public static RootBorderPane getInstance() { - return INSTANCE; - } + } diff --git a/src/main/java/org/jcnc/jnotepad/root/bottom/RootBottomSideBarVerticalBox.java b/src/main/java/org/jcnc/jnotepad/root/bottom/RootBottomSideBarVerticalBox.java index 007618593880318998bb11c2fec48e09adf97736..8a50557839f20da1fac2b569ed5ce43010db623d 100644 --- a/src/main/java/org/jcnc/jnotepad/root/bottom/RootBottomSideBarVerticalBox.java +++ b/src/main/java/org/jcnc/jnotepad/root/bottom/RootBottomSideBarVerticalBox.java @@ -1,6 +1,6 @@ package org.jcnc.jnotepad.root.bottom; -import org.jcnc.jnotepad.root.center.main.bottom.status.StatusHorizontalBox; +import org.jcnc.jnotepad.root.center.main.bottom.status.JNotepadStatusBox; import org.jcnc.jnotepad.ui.module.AbstractVerticalBox; /** @@ -18,10 +18,6 @@ public class RootBottomSideBarVerticalBox extends AbstractVerticalBox { initSidebarVerticalBox(); } - private void initSidebarVerticalBox() { - getChildren().addAll(StatusHorizontalBox.getInstance()); - } - /** * 获取 RootBottomSideBarVerticalBox 的唯一实例。 * @@ -30,4 +26,8 @@ public class RootBottomSideBarVerticalBox extends AbstractVerticalBox { public static RootBottomSideBarVerticalBox getInstance() { return INSTANCE; } + + private void initSidebarVerticalBox() { + getChildren().addAll(JNotepadStatusBox.getInstance()); + } } diff --git a/src/main/java/org/jcnc/jnotepad/root/center/main/MainBorderPane.java b/src/main/java/org/jcnc/jnotepad/root/center/main/MainBorderPane.java index f5b13bce72f7506c0b97c07a09a81df5a81d4799..115eefb9251d4aab3f96f20b82b17deefa350d68 100644 --- a/src/main/java/org/jcnc/jnotepad/root/center/main/MainBorderPane.java +++ b/src/main/java/org/jcnc/jnotepad/root/center/main/MainBorderPane.java @@ -1,6 +1,6 @@ package org.jcnc.jnotepad.root.center.main; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTabPane; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane; import org.jcnc.jnotepad.ui.module.AbstractBorderPane; /** @@ -18,11 +18,6 @@ public class MainBorderPane extends AbstractBorderPane { initRootBorderPane(); } - private void initRootBorderPane() { - // 文本框 - setCenterComponent(MainTabPane.getInstance()); - } - /** * 获取 MainBorderPane 的唯一实例。 * @@ -31,4 +26,10 @@ public class MainBorderPane extends AbstractBorderPane { public static MainBorderPane getInstance() { return INSTANCE; } + + private void initRootBorderPane() { + // 文本框 + setCenterComponent(JNotepadTabPane.getInstance()); + } + } diff --git a/src/main/java/org/jcnc/jnotepad/root/center/main/bottom/status/StatusHorizontalBox.java b/src/main/java/org/jcnc/jnotepad/root/center/main/bottom/status/JNotepadStatusBox.java similarity index 87% rename from src/main/java/org/jcnc/jnotepad/root/center/main/bottom/status/StatusHorizontalBox.java rename to src/main/java/org/jcnc/jnotepad/root/center/main/bottom/status/JNotepadStatusBox.java index c6f1134098259d24c4d49c3e8b28ab16cc2eedf2..0626a247d300f4841bf98c5f0f8e9fe86e6f3760 100644 --- a/src/main/java/org/jcnc/jnotepad/root/center/main/bottom/status/StatusHorizontalBox.java +++ b/src/main/java/org/jcnc/jnotepad/root/center/main/bottom/status/JNotepadStatusBox.java @@ -6,8 +6,8 @@ import javafx.scene.control.Label; import javafx.scene.control.TextArea; import org.jcnc.jnotepad.app.i18n.UiResourceBundle; import org.jcnc.jnotepad.constants.TextConstants; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTab; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTabPane; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTab; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane; import org.jcnc.jnotepad.ui.module.AbstractHorizontalBox; import java.nio.charset.Charset; @@ -19,9 +19,9 @@ import java.nio.charset.Charset; * * @author songdragon */ -public class StatusHorizontalBox extends AbstractHorizontalBox { +public class JNotepadStatusBox extends AbstractHorizontalBox { - private static final StatusHorizontalBox STATUS_BOX = new StatusHorizontalBox(); + private static final JNotepadStatusBox STATUS_BOX = new JNotepadStatusBox(); private static final String STATUS_LABEL_FORMAT = "%s : %d \t%s: %d \t%s: %d \t"; /** * 字数统计及光标 @@ -33,11 +33,11 @@ public class StatusHorizontalBox extends AbstractHorizontalBox { private Label encodingLabel; - private StatusHorizontalBox() { + private JNotepadStatusBox() { initStatusBox(); } - public static StatusHorizontalBox getInstance() { + public static JNotepadStatusBox getInstance() { return STATUS_BOX; } @@ -89,7 +89,7 @@ public class StatusHorizontalBox extends AbstractHorizontalBox { * 更新字数统计 */ public void updateWordCountStatusLabel() { - MainTabPane instance = MainTabPane.getInstance(); + JNotepadTabPane instance = JNotepadTabPane.getInstance(); if (instance.getSelected() == null) { return; } @@ -107,12 +107,12 @@ public class StatusHorizontalBox extends AbstractHorizontalBox { *
2. 状态栏更新当前选中tab的字符编码 */ public void updateWhenTabSelected() { - MainTabPane instance = MainTabPane.getInstance(); + JNotepadTabPane instance = JNotepadTabPane.getInstance(); if (instance.getSelected() != null) { updateWordCountStatusLabel(); - MainTab mainTab = instance.getSelected(); - if (mainTab != null) { - updateEncodingLabel(mainTab.getCharset().name()); + JNotepadTab JNotepadTab = instance.getSelected(); + if (JNotepadTab != null) { + updateEncodingLabel(JNotepadTab.getCharset().name()); } } } diff --git a/src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/MainTab.java b/src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/JNotepadTab.java similarity index 89% rename from src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/MainTab.java rename to src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/JNotepadTab.java index 90ada80801f124ac961a8ba2801216eac4743427..2d3007eb8642a46b85bf51ccde56018509dae62b 100644 --- a/src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/MainTab.java +++ b/src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/JNotepadTab.java @@ -13,7 +13,7 @@ import java.nio.charset.Charset; * * @author songdragon */ -public class MainTab extends Tab { +public class JNotepadTab extends Tab { private final LineNumberTextArea lineNumberTextArea; /** @@ -26,15 +26,15 @@ public class MainTab extends Tab { private boolean isRelevance = false; private Charset charset = Charset.defaultCharset(); - public MainTab(String tabTitle) { + public JNotepadTab(String tabTitle) { this(tabTitle, new LineNumberTextArea()); } - public MainTab(String tabTitle, LineNumberTextArea textArea) { + public JNotepadTab(String tabTitle, LineNumberTextArea textArea) { this(tabTitle, textArea, Charset.defaultCharset()); } - public MainTab(String tabTitle, LineNumberTextArea textArea, Charset charset) { + public JNotepadTab(String tabTitle, LineNumberTextArea textArea, Charset charset) { super(tabTitle); lineNumberTextArea = textArea; this.setContent(lineNumberTextArea); diff --git a/src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/MainTabPane.java b/src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/JNotepadTabPane.java similarity index 71% rename from src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/MainTabPane.java rename to src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/JNotepadTabPane.java index a4d549bcc3fc1b36a64f2e476904c9b8eec9cfbc..d0a640696204005476282d082c596b0702ad9566 100644 --- a/src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/MainTabPane.java +++ b/src/main/java/org/jcnc/jnotepad/root/center/main/center/tab/JNotepadTabPane.java @@ -1,7 +1,7 @@ package org.jcnc.jnotepad.root.center.main.center.tab; import javafx.scene.control.TabPane; -import org.jcnc.jnotepad.root.center.main.bottom.status.StatusHorizontalBox; +import org.jcnc.jnotepad.root.center.main.bottom.status.JNotepadStatusBox; import org.jcnc.jnotepad.root.top.menu.TopMenuBar; import org.jcnc.jnotepad.tool.SingletonUtil; @@ -10,15 +10,15 @@ import org.jcnc.jnotepad.tool.SingletonUtil; * * @author songdragon */ -public class MainTabPane extends TabPane { +public class JNotepadTabPane extends TabPane { - private static final MainTabPane TAB_PANE = new MainTabPane(); + private static final JNotepadTabPane TAB_PANE = new JNotepadTabPane(); - private MainTabPane() { + private JNotepadTabPane() { initListeners(); } - public static MainTabPane getInstance() { + public static JNotepadTabPane getInstance() { return TAB_PANE; } @@ -34,7 +34,7 @@ public class MainTabPane extends TabPane { TopMenuBar.getInstance().updateMenuStatusBySelectedTab(); } // 更新状态标签 - StatusHorizontalBox.getInstance().updateWhenTabSelected(); + JNotepadStatusBox.getInstance().updateWhenTabSelected(); } ); } @@ -44,7 +44,7 @@ public class MainTabPane extends TabPane { * * @param tab 新标签页 */ - public void addNewTab(MainTab tab) { + public void addNewTab(JNotepadTab tab) { if (tab == null) { return; } @@ -61,8 +61,8 @@ public class MainTabPane extends TabPane { * * @return 当前选中的标签页 */ - public MainTab getSelected() { - return (MainTab) this.getSelectionModel().getSelectedItem(); + public JNotepadTab getSelected() { + return (JNotepadTab) this.getSelectionModel().getSelectedItem(); } /** @@ -70,8 +70,8 @@ public class MainTabPane extends TabPane { * 应用当前菜单上选中的自动换行设置。 */ public void fireTabSelected() { - MainTab selectedTab = getSelected(); + JNotepadTab selectedTab = getSelected(); selectedTab.setAutoLine(SingletonUtil.getAppConfigController().getAutoLineConfig()); - StatusHorizontalBox.getInstance().updateWhenTabSelected(); + JNotepadStatusBox.getInstance().updateWhenTabSelected(); } } diff --git a/src/main/java/org/jcnc/jnotepad/root/right/RootRightSideBarVerticalBox.java b/src/main/java/org/jcnc/jnotepad/root/right/RootRightSideBarVerticalBox.java index 5ba00ce60449e6bea2e997308226866fc84d0246..377a2cdd79858977b501acf268cf72a196468c5e 100644 --- a/src/main/java/org/jcnc/jnotepad/root/right/RootRightSideBarVerticalBox.java +++ b/src/main/java/org/jcnc/jnotepad/root/right/RootRightSideBarVerticalBox.java @@ -3,21 +3,36 @@ package org.jcnc.jnotepad.root.right; import org.jcnc.jnotepad.ui.module.AbstractVerticalBox; /** - * @author 许轲 + * 右侧边栏的垂直布局容器类。 + * + *

该类用于管理右侧边栏的布局和内容。

+ * + * @Author 许轲 */ public class RootRightSideBarVerticalBox extends AbstractVerticalBox { + /** + * 唯一的 RootRightSideBarVerticalBox 实例,使用单例模式 + */ private static final RootRightSideBarVerticalBox INSTANCE = new RootRightSideBarVerticalBox(); private RootRightSideBarVerticalBox() { initSidebarVerticalBox(); } - private void initSidebarVerticalBox() { - - } - + /** + * 获取 RootRightSideBarVerticalBox 的唯一实例。 + * + * @return RootRightSideBarVerticalBox 的实例 + */ public static RootRightSideBarVerticalBox getInstance() { return INSTANCE; } + + /** + * 初始化右侧边栏的垂直布局。 + */ + private void initSidebarVerticalBox() { + // 在此添加右侧边栏布局和内容的初始化代码 + } } diff --git a/src/main/java/org/jcnc/jnotepad/root/top/RootTopBorderPane.java b/src/main/java/org/jcnc/jnotepad/root/top/RootTopBorderPane.java index e2a37bb9a6ffa420054e0150dcebe12591a5cd94..43390716cf141c73b667fab66d3b5663212c29fa 100644 --- a/src/main/java/org/jcnc/jnotepad/root/top/RootTopBorderPane.java +++ b/src/main/java/org/jcnc/jnotepad/root/top/RootTopBorderPane.java @@ -21,21 +21,21 @@ public class RootTopBorderPane extends AbstractBorderPane { } /** - * 初始化 RootTopBorderPane。 + * 获取 RootTopBorderPane 的单例实例。 * - *

在顶部区域添加了 TopMenuBar 的单例实例。

+ * @return RootTopBorderPane 的单例实例 */ - private void initRootBorderPane() { - // 在顶部区域添加菜单栏 - setTopComponent(TopMenuBar.getInstance()); + public static RootTopBorderPane getInstance() { + return INSTANCE; } /** - * 获取 RootTopBorderPane 的单例实例。 + * 初始化 RootTopBorderPane。 * - * @return RootTopBorderPane 的单例实例 + *

在顶部区域添加了 TopMenuBar 的单例实例。

*/ - public static RootTopBorderPane getInstance() { - return INSTANCE; + private void initRootBorderPane() { + // 在顶部区域添加菜单栏 + setTopComponent(TopMenuBar.getInstance()); } } diff --git a/src/main/java/org/jcnc/jnotepad/root/top/menu/TopMenuBar.java b/src/main/java/org/jcnc/jnotepad/root/top/menu/TopMenuBar.java index daf5b0adff5102d98fbe8e11ff58edfbe652acd3..4f20f5a0b2c0b123c77a0a012d0ac56ce5767cd9 100644 --- a/src/main/java/org/jcnc/jnotepad/root/top/menu/TopMenuBar.java +++ b/src/main/java/org/jcnc/jnotepad/root/top/menu/TopMenuBar.java @@ -10,8 +10,8 @@ import org.jcnc.jnotepad.controller.config.AppConfigController; import org.jcnc.jnotepad.controller.event.handler.menubar.*; import org.jcnc.jnotepad.controller.event.handler.tool.SetBtn; import org.jcnc.jnotepad.controller.i18n.LocalizationController; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTab; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTabPane; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTab; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane; import org.jcnc.jnotepad.root.left.sidebar.tools.ToolBar; import org.jcnc.jnotepad.tool.LogUtil; import org.slf4j.Logger; @@ -35,7 +35,7 @@ public class TopMenuBar extends MenuBar { /** * 标签页布局组件封装。 */ - MainTabPane mainTabPane = MainTabPane.getInstance(); + JNotepadTabPane JNotepadTabPane = org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane.getInstance(); AppConfigController appConfigController = AppConfigController.getInstance(); Logger logger = LogUtil.getLogger(this.getClass()); /** @@ -289,7 +289,7 @@ public class TopMenuBar extends MenuBar { // 1. 更新全局配置 AppConfigController.getInstance().setAutoLineConfig(after); // 2. 对当前tab生效配置 - mainTabPane.fireTabSelected(); + JNotepadTabPane.fireTabSelected(); }); topItem.selectedProperty().addListener((observableValue, before, after) -> { // 获取窗口容器 @@ -322,7 +322,7 @@ public class TopMenuBar extends MenuBar { * 根据当前选中tab,更新菜单选项 */ public void updateMenuStatusBySelectedTab() { - MainTab selectedTab = mainTabPane.getSelected(); + JNotepadTab selectedTab = JNotepadTabPane.getSelected(); lineFeedItem.selectedProperty().setValue(selectedTab.isAutoLine()); } } diff --git a/src/main/java/org/jcnc/jnotepad/tool/UiUtil.java b/src/main/java/org/jcnc/jnotepad/tool/UiUtil.java index 0547b9d332b963b4439f704fca6d5bbc59e0912d..fe8ad8b2874704310253e4144ea2759923b7eb26 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/UiUtil.java +++ b/src/main/java/org/jcnc/jnotepad/tool/UiUtil.java @@ -23,6 +23,7 @@ public class UiUtil { private UiUtil() { } + /** * 获取应用程序图标。 * diff --git a/src/main/java/org/jcnc/jnotepad/ui/module/LineNumberTextArea.java b/src/main/java/org/jcnc/jnotepad/ui/module/LineNumberTextArea.java index c0a38c22a56d450831e2db805875946527153cfc..a7c9e972e43cb50d4ccec0f149be8c19347e88ae 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/module/LineNumberTextArea.java +++ b/src/main/java/org/jcnc/jnotepad/ui/module/LineNumberTextArea.java @@ -3,9 +3,9 @@ package org.jcnc.jnotepad.ui.module; import javafx.beans.property.StringProperty; import javafx.scene.control.TextArea; import javafx.scene.layout.BorderPane; -import org.jcnc.jnotepad.root.center.main.bottom.status.StatusHorizontalBox; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTab; -import org.jcnc.jnotepad.root.center.main.center.tab.MainTabPane; +import org.jcnc.jnotepad.root.center.main.bottom.status.JNotepadStatusBox; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTab; +import org.jcnc.jnotepad.root.center.main.center.tab.JNotepadTabPane; import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.tool.SingletonUtil; import org.slf4j.Logger; @@ -24,9 +24,9 @@ import java.io.IOException; */ public class LineNumberTextArea extends BorderPane { - private static final Logger logger = LogUtil.getLogger(LineNumberTextArea.class); static final int[] SIZE_TABLE = {9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE}; + private static final Logger logger = LogUtil.getLogger(LineNumberTextArea.class); private static final int MIN_LINE_NUMBER_WIDTH = 30; private final TextArea mainTextArea; private final TextArea lineNumberArea; @@ -62,12 +62,12 @@ public class LineNumberTextArea extends BorderPane { lineNumberArea.textProperty().addListener((observable, oldValue, newValue) -> updateLineNumberWidth()); - this.mainTextArea.caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> StatusHorizontalBox.getInstance().updateWordCountStatusLabel()); + this.mainTextArea.caretPositionProperty().addListener((caretObservable, oldPosition, newPosition) -> JNotepadStatusBox.getInstance().updateWordCountStatusLabel()); this.textProperty().addListener((observable, oldValue, newValue) -> { // 更新行号 updateLineNumberArea(); // 更新状态栏 - StatusHorizontalBox.getInstance().updateWordCountStatusLabel(); + JNotepadStatusBox.getInstance().updateWordCountStatusLabel(); // 自动保存 save(); }); @@ -77,7 +77,7 @@ public class LineNumberTextArea extends BorderPane { * 以原文件编码格式写回文件 */ public void save() { - MainTab tab = MainTabPane.getInstance().getSelected(); + JNotepadTab tab = JNotepadTabPane.getInstance().getSelected(); if (tab == null) { return; }