From da92b918e4aac91183efdfdf9430194a9a7eeeb1 Mon Sep 17 00:00:00 2001 From: gewuyou <1063891901@qq.com> Date: Sat, 9 Sep 2023 00:10:08 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=20BUG=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4=E5=B7=B2=E6=9C=89=E7=9A=84?= =?UTF-8?q?=E6=96=87=E6=9C=AC=E5=90=8E=E6=96=B0=E5=BB=BA=E5=90=8D=E5=AD=97?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E9=87=8D=E6=96=B0=E9=87=8D=E7=BD=AE=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jcnc/jnotepad/LunchApp.java | 1 - .../jcnc/jnotepad/constants/AppConstants.java | 9 +++++ .../event/handler/menubar/NewFile.java | 33 ++++++++++++++++--- .../jnotepad/view/manager/ViewManager.java | 10 ------ 4 files changed, 38 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/LunchApp.java b/src/main/java/org/jcnc/jnotepad/LunchApp.java index aaba292..cbbe1eb 100644 --- a/src/main/java/org/jcnc/jnotepad/LunchApp.java +++ b/src/main/java/org/jcnc/jnotepad/LunchApp.java @@ -63,7 +63,6 @@ public class LunchApp extends Application { @Override public void start(Stage primaryStage) { - SCENE.getStylesheets().add(Objects.requireNonNull(getClass().getResource("/css/styles.css")).toExternalForm()); initUiComponents(); UiResourceBundle.bindStringProperty(primaryStage.titleProperty(), TextConstants.TITLE); diff --git a/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java b/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java index 4e94de6..b1fbeea 100644 --- a/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java +++ b/src/main/java/org/jcnc/jnotepad/constants/AppConstants.java @@ -1,5 +1,9 @@ package org.jcnc.jnotepad.constants; +import org.jcnc.jnotepad.app.i18n.UiResourceBundle; + +import java.util.regex.Pattern; + /** * 应用常量类,用于存放应用程序中的常量值。 * @@ -19,6 +23,11 @@ public class AppConstants { */ public static final String APP_ICON = "/img/icon.png"; + /** + * 默认标签页的正则 + */ + public static final Pattern TABNAME_PATTERN = Pattern.compile("^" + Pattern.quote(UiResourceBundle.getContent(TextConstants.NEW_FILE)) + "\\d+$"); + /** * 私有构造函数,防止该类被实例化。 */ 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 705af3f..6322bde 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 @@ -2,13 +2,17 @@ package org.jcnc.jnotepad.controller.event.handler.menubar; import javafx.event.ActionEvent; import javafx.event.EventHandler; +import javafx.scene.control.Tab; import org.jcnc.jnotepad.app.i18n.UiResourceBundle; +import org.jcnc.jnotepad.constants.AppConstants; import org.jcnc.jnotepad.constants.TextConstants; import org.jcnc.jnotepad.root.center.main.bottom.status.BottomStatusBox; import org.jcnc.jnotepad.root.center.main.center.tab.CenterTab; import org.jcnc.jnotepad.root.center.main.center.tab.CenterTabPane; import org.jcnc.jnotepad.ui.module.LineNumberTextArea; -import org.jcnc.jnotepad.view.manager.ViewManager; + +import java.util.Comparator; +import java.util.List; /** * 新建文件事件的事件处理程序。 @@ -36,11 +40,32 @@ public class NewFile implements EventHandler { // 创建一个新的文本编辑区 LineNumberTextArea textArea = new LineNumberTextArea(); // TODO: refactor:统一TextArea新建、绑定监听器入口 - ViewManager viewManager = ViewManager.getInstance(); + // 设定初始索引 + int index = 1; + StringBuilder tabTitle = new StringBuilder(); + // 获取当前默认创建标签页集合 + List tabs = CenterTabPane.getInstance() + .getTabs() + .stream() + // 排除不属于默认创建的标签页 + .filter(tab -> AppConstants.TABNAME_PATTERN.matcher(tab.getText()).matches()) + // 对默认创建的标签页进行排序 + .sorted(Comparator.comparing(Tab::getText)) + // 转为List集合 + .toList(); + // 构建初始标签页名称 + tabTitle.append(UiResourceBundle.getContent(TextConstants.NEW_FILE)).append(index); + for (Tab tab : tabs) { + if (tab.getText().contentEquals(tabTitle)) { + tabTitle.setLength(0); + tabTitle.append(UiResourceBundle.getContent(TextConstants.NEW_FILE)).append(++index); + } else { + break; + } + } // 创建标签页 CenterTab centerTab = new CenterTab( - UiResourceBundle.getContent(TextConstants.NEW_FILE) - + viewManager.selfIncreaseAndGetTabIndex(), + tabTitle.toString(), textArea); // 设置当前标签页与本地文件无关联 centerTab.setRelevance(false); diff --git a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java index 9008291..d4cb939 100644 --- a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java +++ b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java @@ -16,7 +16,6 @@ public class ViewManager { private static ViewManager instance = null; - private int tabIndex = 0; /** * 主布局 */ @@ -59,15 +58,6 @@ public class ViewManager { } } - /** - * 自增并获取标签页索引。 - * - * @return 自增后的标签页索引。 - * @apiNote ++tabIndex - */ - public int selfIncreaseAndGetTabIndex() { - return ++tabIndex; - } /** * 初始化屏幕组件。 -- Gitee