From c87c0db667b403634b7da333777b015c39f1a0bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E8=BD=B2?= Date: Thu, 5 Oct 2023 17:24:38 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constants/TextConstants.java | 2 + .../views/manager/TopMenuBarManager.java | 5 ++ .../views/root/top/menubar/TopMenuBar.java | 5 ++ .../root/top/menubar/menu/RunTopMenu.java | 64 +++++++++++++++++++ src/main/resources/i18n/i18n.properties | 1 + src/main/resources/i18n/i18n_en.properties | 1 + src/main/resources/i18n/i18n_zh_CN.properties | 1 + 7 files changed, 79 insertions(+) create mode 100644 src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java diff --git a/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java b/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java index 754f0ef..86fd04e 100644 --- a/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java +++ b/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java @@ -11,6 +11,8 @@ public class TextConstants { public static final String TITLE = "title"; public static final String SAVE = "SAVE"; public static final String FILE = "FILE"; + + public static final String RUN = "RUN"; public static final String NEW = "NEW"; public static final String OPEN = "OPEN"; public static final String OPEN_DIRECTORY = "OPEN_DIRECTORY"; diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java b/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java index ffe169c..447742a 100644 --- a/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java +++ b/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java @@ -34,6 +34,7 @@ public class TopMenuBarManager extends AbstractManager { SettingTopMenu settingTopMenu = SettingTopMenu.getInstance(); HelpTopMenu helpTopMenu = HelpTopMenu.getInstance(); + RunTopMenu runTopMenu=RunTopMenu.getInstance(); PluginTopMenu pluginTopMenu = PluginTopMenu.getInstance(); private TopMenuBarManager() { @@ -61,6 +62,8 @@ public class TopMenuBarManager extends AbstractManager { // 初始化插件菜单 pluginTopMenu.initMenu(); + runTopMenu.initMenu(); + // 刷新顶部菜单栏 refreshTopMenuBar(); // 初始化快捷键 @@ -79,6 +82,8 @@ public class TopMenuBarManager extends AbstractManager { registerNode(helpTopMenu.getMenu()); // 插件菜单 registerNode(topMenuBar.getPluginMenu()); + + registerNode(runTopMenu.getMenu()); } diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java index d3b1723..bc714f6 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java @@ -41,6 +41,7 @@ public class TopMenuBar extends MenuBar { * 插件菜单 */ private final Menu pluginMenu = new Menu(); + private final Menu runMenu = new Menu(); /** * 语言菜单 @@ -139,6 +140,10 @@ public class TopMenuBar extends MenuBar { public Menu getPluginMenu() { return pluginMenu; } + public Menu getRunMenu() { + return runMenu; + } + public Menu getLanguageMenu() { diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java new file mode 100644 index 0000000..a6d2893 --- /dev/null +++ b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java @@ -0,0 +1,64 @@ +package org.jcnc.jnotepad.views.root.top.menubar.menu; + +import javafx.scene.control.Menu; +import javafx.scene.control.MenuItem; +import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu; + +import java.util.HashMap; +import java.util.Map; + +import static org.jcnc.jnotepad.common.constants.TextConstants.RUN; + +/** + * 文件菜单 + * + * @author gewuyou + */ +public class RunTopMenu extends AbstractTopMenu { + private static final RunTopMenu INSTANCE = new RunTopMenu(); + private final Map runMenuItems = new HashMap<>(); + + public static RunTopMenu getInstance() { + return INSTANCE; + } + + /** + * 获取菜单名称 + * + * @return 菜单名称 + */ + @Override + public String getMenuName() { + return RUN; + } + + /** + * 获取菜单 + * + * @return 菜单 + */ + @Override + public Menu getMenu() { + return topMenuBar.getRunMenu(); + } + + /** + * 获取菜单项集合 + * + * @return 菜单项集合 + */ + @Override + public Map getMenuItems() { + return runMenuItems; + } + + + /** + * 注册顶部菜单 + */ + @Override + protected void registerTopMenu() { + // 文件菜单 + + } +} diff --git a/src/main/resources/i18n/i18n.properties b/src/main/resources/i18n/i18n.properties index 05d1515..b39e0a6 100644 --- a/src/main/resources/i18n/i18n.properties +++ b/src/main/resources/i18n/i18n.properties @@ -11,6 +11,7 @@ title=JNotepad OPEN=打开 OPEN_DIRECTORY=打开文件夹 ABOUT=关于 +RUN=运行 HELP=帮助 OPEN_CONFIGURATION_FILE=打开配置文件 RENAME=重命名 diff --git a/src/main/resources/i18n/i18n_en.properties b/src/main/resources/i18n/i18n_en.properties index 2da0e7a..6729cb6 100644 --- a/src/main/resources/i18n/i18n_en.properties +++ b/src/main/resources/i18n/i18n_en.properties @@ -12,6 +12,7 @@ title=JNotepad OPEN=Open OPEN_DIRECTORY=Open Directory HELP=Help +RUN=Run OPEN_CONFIGURATION_FILE=Open Configuration File RENAME=Rename TOP=Window Top diff --git a/src/main/resources/i18n/i18n_zh_CN.properties b/src/main/resources/i18n/i18n_zh_CN.properties index 18f234a..70bb2e2 100644 --- a/src/main/resources/i18n/i18n_zh_CN.properties +++ b/src/main/resources/i18n/i18n_zh_CN.properties @@ -11,6 +11,7 @@ title=JNotepad OPEN=打开 OPEN_DIRECTORY=打开文件夹 HELP=帮助 +RUN=运行 ABOUT=关于 OPEN_CONFIGURATION_FILE=打开配置文件 RENAME=重命名 From b39e633efb0eed52caf627d31e6ea46dd5a21dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E8=BD=B2?= Date: Thu, 5 Oct 2023 18:57:53 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constants/TextConstants.java | 1 + .../views/manager/TopMenuBarManager.java | 12 ++++-- .../views/root/top/menubar/TopMenuBar.java | 41 ++++++++++++++----- .../root/top/menubar/menu/RunTopMenu.java | 8 +++- src/main/resources/i18n/i18n.properties | 1 + src/main/resources/i18n/i18n_en.properties | 1 + src/main/resources/i18n/i18n_zh_CN.properties | 1 + 7 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java b/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java index 86fd04e..b6ae53a 100644 --- a/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java +++ b/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java @@ -13,6 +13,7 @@ public class TextConstants { public static final String FILE = "FILE"; public static final String RUN = "RUN"; + public static final String DE_BUG = "DE_BUG"; public static final String NEW = "NEW"; public static final String OPEN = "OPEN"; public static final String OPEN_DIRECTORY = "OPEN_DIRECTORY"; diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java b/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java index 447742a..03edb9f 100644 --- a/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java +++ b/src/main/java/org/jcnc/jnotepad/views/manager/TopMenuBarManager.java @@ -32,10 +32,12 @@ public class TopMenuBarManager extends AbstractManager { LanguageTopMenu languageTopMenu = LanguageTopMenu.getInstance(); SettingTopMenu settingTopMenu = SettingTopMenu.getInstance(); - HelpTopMenu helpTopMenu = HelpTopMenu.getInstance(); RunTopMenu runTopMenu=RunTopMenu.getInstance(); PluginTopMenu pluginTopMenu = PluginTopMenu.getInstance(); + + HelpTopMenu helpTopMenu = HelpTopMenu.getInstance(); + private TopMenuBarManager() { } @@ -76,14 +78,18 @@ public class TopMenuBarManager extends AbstractManager { public void registerTopMenuBar() { // 文件菜单 registerNode(fileTopMenu.getMenu()); + // 设置菜单 registerNode(topMenuBar.getSetMenu()); - // 帮助菜单 - registerNode(helpTopMenu.getMenu()); + // 插件菜单 registerNode(topMenuBar.getPluginMenu()); + // 运行菜单 registerNode(runTopMenu.getMenu()); + + // 帮助菜单 + registerNode(helpTopMenu.getMenu()); } diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java index bc714f6..d7280ce 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/TopMenuBar.java @@ -32,17 +32,25 @@ public class TopMenuBar extends MenuBar { */ private final Menu setMenu = new Menu(); - /** - * 帮助菜单 - */ - private final Menu helpMenu = new Menu(); + /// 菜单按钮 /** * 插件菜单 */ private final Menu pluginMenu = new Menu(); - private final Menu runMenu = new Menu(); + /** + * 运行菜单 + */ + private final Menu runMenu = new Menu(); + /** + * 调试菜单 + */ + private final MenuItem deBugItem = new MenuItem(); + /** + * 新建 + */ + private final MenuItem newItem = new MenuItem(); /** * 语言菜单 */ @@ -50,12 +58,9 @@ public class TopMenuBar extends MenuBar { /** * 新建 */ - private final MenuItem newItem = new MenuItem(); + private final MenuItem runItem = new MenuItem(); + - /** - * 新建 - */ - private final MenuItem aboutItem = new MenuItem(); /** * 打开 */ @@ -107,6 +112,15 @@ public class TopMenuBar extends MenuBar { */ private final MenuItem pluginManagerItem = new MenuItem(); + /** + * 帮助菜单 + */ + private final Menu helpMenu = new Menu(); + + /** + * 关于 + */ + private final MenuItem aboutItem = new MenuItem(); private TopMenuBar() { } @@ -157,6 +171,13 @@ public class TopMenuBar extends MenuBar { public MenuItem getNewItem() { return newItem; } + public MenuItem getRunItem() { + return runItem; + } + + public MenuItem getDeBugItem() { + return deBugItem; + } public MenuItem getAboutItem() { diff --git a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java index a6d2893..f12f366 100644 --- a/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java +++ b/src/main/java/org/jcnc/jnotepad/views/root/top/menubar/menu/RunTopMenu.java @@ -7,6 +7,7 @@ import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu; import java.util.HashMap; import java.util.Map; +import static org.jcnc.jnotepad.common.constants.TextConstants.DE_BUG; import static org.jcnc.jnotepad.common.constants.TextConstants.RUN; /** @@ -58,7 +59,12 @@ public class RunTopMenu extends AbstractTopMenu { */ @Override protected void registerTopMenu() { - // 文件菜单 + // 运行 + registerMenuItem(topMenuBar.getRunItem(), RUN, "runItem", null); + + // 调试 + registerMenuItem(topMenuBar.getDeBugItem(), DE_BUG, "deBugItem", null); + } } diff --git a/src/main/resources/i18n/i18n.properties b/src/main/resources/i18n/i18n.properties index b39e0a6..6cd910c 100644 --- a/src/main/resources/i18n/i18n.properties +++ b/src/main/resources/i18n/i18n.properties @@ -9,6 +9,7 @@ PLUGIN=插件 CHINESE=中文 title=JNotepad OPEN=打开 +DE_BUG=调试 OPEN_DIRECTORY=打开文件夹 ABOUT=关于 RUN=运行 diff --git a/src/main/resources/i18n/i18n_en.properties b/src/main/resources/i18n/i18n_en.properties index 6729cb6..524adb0 100644 --- a/src/main/resources/i18n/i18n_en.properties +++ b/src/main/resources/i18n/i18n_en.properties @@ -13,6 +13,7 @@ OPEN=Open OPEN_DIRECTORY=Open Directory HELP=Help RUN=Run +DE_BUG=Debug OPEN_CONFIGURATION_FILE=Open Configuration File RENAME=Rename TOP=Window Top diff --git a/src/main/resources/i18n/i18n_zh_CN.properties b/src/main/resources/i18n/i18n_zh_CN.properties index 70bb2e2..61ebca0 100644 --- a/src/main/resources/i18n/i18n_zh_CN.properties +++ b/src/main/resources/i18n/i18n_zh_CN.properties @@ -12,6 +12,7 @@ OPEN=打开 OPEN_DIRECTORY=打开文件夹 HELP=帮助 RUN=运行 +DE_BUG=调试 ABOUT=关于 OPEN_CONFIGURATION_FILE=打开配置文件 RENAME=重命名 From 80712f59d74b22e94334bc99f6528f38a7faf7c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E8=BD=B2?= Date: Thu, 5 Oct 2023 19:23:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=88=A0=E9=99=A4setStage=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E6=80=81.=E6=8D=A2=E4=B8=80=E7=A7=8D=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/stage/setting/DeveloperDebugStage.java | 1 + .../jnotepad/component/stage/setting/SetStage.java | 4 ++-- .../controller/event/handler/setting/SetBtn.java | 11 ++++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/setting/DeveloperDebugStage.java b/src/main/java/org/jcnc/jnotepad/component/stage/setting/DeveloperDebugStage.java index cc89af0..8eab1ed 100644 --- a/src/main/java/org/jcnc/jnotepad/component/stage/setting/DeveloperDebugStage.java +++ b/src/main/java/org/jcnc/jnotepad/component/stage/setting/DeveloperDebugStage.java @@ -20,6 +20,7 @@ public class DeveloperDebugStage extends Stage { Logger logger = LogUtil.getLogger(this.getClass()); public void start(Stage primaryStage) { + this.setAlwaysOnTop(true); // 创建主舞台 primaryStage.setTitle("开发者调试页面"); primaryStage.getIcons().add(UiUtil.getAppIcon()); diff --git a/src/main/java/org/jcnc/jnotepad/component/stage/setting/SetStage.java b/src/main/java/org/jcnc/jnotepad/component/stage/setting/SetStage.java index 077290b..a2a4171 100644 --- a/src/main/java/org/jcnc/jnotepad/component/stage/setting/SetStage.java +++ b/src/main/java/org/jcnc/jnotepad/component/stage/setting/SetStage.java @@ -14,7 +14,6 @@ import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; -import javafx.stage.Modality; import javafx.stage.Stage; import org.jcnc.jnotepad.app.config.AppConfig; import org.jcnc.jnotepad.app.i18n.UiResourceBundle; @@ -83,7 +82,7 @@ public class SetStage extends Stage { primaryStage.getIcons().add(UiUtil.getAppIcon()); primaryStage.setTitle("设置窗口"); // 将窗口设置为模态 - primaryStage.initModality(Modality.APPLICATION_MODAL); + //primaryStage.initModality(Modality.APPLICATION_MODAL); contentDisplay = new StackPane(); @@ -215,6 +214,7 @@ public class SetStage extends Stage { devBox.setButtonAction(event -> { // 创建并启动DeveloperDebugPage DeveloperDebugStage debugPage = new DeveloperDebugStage(); + debugPage.setAlwaysOnTop (true); debugPage.start(new Stage()); }); generalLayout.getChildren().addAll(devBox); diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/setting/SetBtn.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/setting/SetBtn.java index 4426af2..e232e80 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/setting/SetBtn.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/setting/SetBtn.java @@ -12,6 +12,10 @@ import org.jcnc.jnotepad.component.stage.setting.SetStage; * @author 许轲 */ public class SetBtn implements EventHandler { + /** + * 标志变量,跟踪Stage是否已创建 + */ + private boolean isStageCreated = false; /** * 打开设置窗口处理事件。 @@ -20,6 +24,11 @@ public class SetBtn implements EventHandler { */ @Override public void handle(ActionEvent event) { - SetStage.getInstance().openSetStage(); + if (!isStageCreated) { + SetStage.getInstance().openSetStage(); + // 设置标志变量为true,表示Stage已创建 + isStageCreated = true; + } } } +