commit
5659fc8591
@ -26,12 +26,16 @@ public class JnotepadApp extends Application {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(Stage primaryStage) {
|
||||
public void init() {
|
||||
// 获取当前启动位置a
|
||||
String currentWorkingDirectory = System.getProperty("user.dir");
|
||||
LogUtil.getLogger(this.getClass()).info("当前启动位置:{}", currentWorkingDirectory);
|
||||
// 设置参数
|
||||
APPLICATION_MANAGER.setApplication(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(Stage primaryStage) {
|
||||
APPLICATION_MANAGER.setPrimaryStage(primaryStage);
|
||||
// 加载应用程序资源
|
||||
APPLICATION_MANAGER.loadAppResources();
|
||||
|
||||
@ -0,0 +1,65 @@
|
||||
package org.jcnc.jnotepad.api.core.views.menu;
|
||||
|
||||
import javafx.scene.control.Menu;
|
||||
import javafx.scene.control.MenuItem;
|
||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||
import org.jcnc.jnotepad.ui.views.root.top.menubar.TopMenuBar;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 抽象基础菜单类
|
||||
*
|
||||
* <p>
|
||||
* 此抽象类用于创建基础菜单,包括菜单项的注册和初始化。
|
||||
* </p>
|
||||
*
|
||||
* @author gewuyou
|
||||
*/
|
||||
public abstract class AbstractBaseMenu extends AbstractMenu<Menu> {
|
||||
protected final TopMenuBar topMenuBar = TopMenuBar.getInstance();
|
||||
protected final UserConfigController userConfigController = UserConfigController.getInstance();
|
||||
|
||||
/**
|
||||
* 获取菜单名称
|
||||
*
|
||||
* @return 菜单名称
|
||||
*/
|
||||
public abstract String getMenuName();
|
||||
|
||||
/**
|
||||
* 初始化菜单项
|
||||
*
|
||||
* @param menuItems 菜单项集合
|
||||
* @param menu 菜单
|
||||
*/
|
||||
@Override
|
||||
protected void initMenuItems(Map<String, MenuItem> menuItems, Menu menu) {
|
||||
logger.info("初始化菜单项!");
|
||||
Map<String, MenuItem> menuItemMap = new HashMap<>(16);
|
||||
// 本地化
|
||||
menuItems.forEach((key, value) -> {
|
||||
UiResourceBundle.bindStringProperty(value.textProperty(), key);
|
||||
menuItemMap.put((String) value.getUserData(), value);
|
||||
menu.getItems().add(value);
|
||||
});
|
||||
userConfigController.getMenuItems().add(menuItemMap);
|
||||
userConfigController.initShortcutKeys(menuItemMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化菜单栏
|
||||
*/
|
||||
@Override
|
||||
public void initMenu() {
|
||||
registerMenu();
|
||||
logger.info("初始化菜单!");
|
||||
Menu menu = getMenu();
|
||||
// 菜单名称国际化
|
||||
UiResourceBundle.bindStringProperty(menu.textProperty(), getMenuName());
|
||||
// 初始化菜单项
|
||||
initMenuItems(getMenuItems(), menu);
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package org.jcnc.jnotepad.api.core.views.top.menu;
|
||||
package org.jcnc.jnotepad.api.core.views.menu;
|
||||
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.event.ActionEvent;
|
||||
@ -7,40 +7,25 @@ import javafx.scene.control.CheckMenuItem;
|
||||
import javafx.scene.control.Menu;
|
||||
import javafx.scene.control.MenuItem;
|
||||
import javafx.scene.control.RadioMenuItem;
|
||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||
import org.jcnc.jnotepad.app.utils.LogUtil;
|
||||
import org.jcnc.jnotepad.ui.views.root.top.menubar.TopMenuBar;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 抽象顶部菜单类
|
||||
*
|
||||
* <p>
|
||||
* 此抽象类用于创建顶部菜单,包括菜单项的注册和初始化。
|
||||
* </p>
|
||||
* 抽象菜单类
|
||||
*
|
||||
* @author gewuyou
|
||||
*/
|
||||
public abstract class AbstractTopMenu {
|
||||
protected final TopMenuBar topMenuBar = TopMenuBar.getInstance();
|
||||
|
||||
public abstract class AbstractMenu<T> {
|
||||
protected Logger logger = LogUtil.getLogger(this.getClass());
|
||||
|
||||
/**
|
||||
* 获取菜单名称
|
||||
*
|
||||
* @return 菜单名称
|
||||
*/
|
||||
public abstract String getMenuName();
|
||||
|
||||
/**
|
||||
* 获取菜单
|
||||
*
|
||||
* @return 菜单
|
||||
*/
|
||||
public abstract Menu getMenu();
|
||||
public abstract T getMenu();
|
||||
|
||||
/**
|
||||
* 获取菜单项集合
|
||||
@ -50,9 +35,15 @@ public abstract class AbstractTopMenu {
|
||||
public abstract Map<String, MenuItem> getMenuItems();
|
||||
|
||||
/**
|
||||
* 注册顶部菜单
|
||||
* 注册菜单
|
||||
*/
|
||||
protected abstract void registerTopMenu();
|
||||
protected abstract void registerMenu();
|
||||
|
||||
/**
|
||||
* 初始化菜单
|
||||
*/
|
||||
protected abstract void initMenu();
|
||||
|
||||
|
||||
/**
|
||||
* 注册菜单项
|
||||
@ -68,6 +59,20 @@ public abstract class AbstractTopMenu {
|
||||
menuItem.setOnAction(eventHandler);
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册菜单项
|
||||
*
|
||||
* @param menuItem 菜单项
|
||||
* @param menuItemName 菜单项名称
|
||||
* @param userData 用户数据,用来存放必要的数据,比如按钮菜单项名称
|
||||
* @param eventHandler 事件处理器
|
||||
*/
|
||||
public void registerMenuItem(MenuItem menuItem, String menuItemName, Object userData, EventHandler<ActionEvent> eventHandler, boolean isDisable) {
|
||||
if (!isDisable) {
|
||||
registerMenuItem(menuItem, menuItemName, userData, eventHandler);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册检查菜单项
|
||||
*
|
||||
@ -82,6 +87,32 @@ public abstract class AbstractTopMenu {
|
||||
checkMenuItem.selectedProperty().addListener(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在给定菜单映射中注册具有指定名称、用户数据和事件处理程序的菜单项。
|
||||
*
|
||||
* @param menu 菜单项映射
|
||||
* @param menuItemName 要注册的菜单项的名称
|
||||
* @param userData 与菜单项关联的用户数据
|
||||
*/
|
||||
public void registerMenu(Menu menu, String menuItemName, Object userData) {
|
||||
getMenuItems().put(menuItemName, menu);
|
||||
menu.setUserData(userData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a menu item in the specified menu with the given name and user data.
|
||||
*
|
||||
* @param menu the menu to register the item in
|
||||
* @param menuItemName the name of the menu item
|
||||
* @param userData the user data associated with the menu item
|
||||
* @param isDisable whether the menu item is disabled
|
||||
*/
|
||||
public void registerMenu(Menu menu, String menuItemName, Object userData, boolean isDisable) {
|
||||
if (!isDisable) {
|
||||
registerMenu(menu, menuItemName, userData);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册单选菜单项
|
||||
*
|
||||
@ -96,32 +127,12 @@ public abstract class AbstractTopMenu {
|
||||
radioMenuItem.setOnAction(eventHandler);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化菜单栏
|
||||
*/
|
||||
public void initMenu() {
|
||||
registerTopMenu();
|
||||
logger.info("初始化菜单!");
|
||||
Menu menu = getMenu();
|
||||
// 菜单名称国际化
|
||||
UiResourceBundle.bindStringProperty(menu.textProperty(), getMenuName());
|
||||
// 初始化菜单项
|
||||
initMenuItems(getMenuItems(), menu);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化菜单项
|
||||
*
|
||||
* @param menuItems 菜单项集合
|
||||
* @param menu 菜单
|
||||
*/
|
||||
private void initMenuItems(Map<String, MenuItem> menuItems, Menu menu) {
|
||||
logger.info("初始化菜单项!");
|
||||
var itemMap = topMenuBar.getAllItemMap();
|
||||
menuItems.forEach((key, value) -> {
|
||||
UiResourceBundle.bindStringProperty(value.textProperty(), key);
|
||||
itemMap.put((String) value.getUserData(), value);
|
||||
menu.getItems().add(value);
|
||||
});
|
||||
}
|
||||
protected abstract void initMenuItems(Map<String, MenuItem> menuItems, T menu);
|
||||
|
||||
}
|
||||
@ -19,7 +19,6 @@ import org.jcnc.jnotepad.ui.component.module.TextCodeArea;
|
||||
import org.jcnc.jnotepad.ui.component.stage.dialog.factory.impl.BasicFileChooserFactory;
|
||||
import org.jcnc.jnotepad.ui.views.manager.BottomStatusBoxManager;
|
||||
import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
|
||||
import org.jcnc.jnotepad.ui.views.manager.TopMenuBarManager;
|
||||
import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTab;
|
||||
import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTabPane;
|
||||
import org.slf4j.Logger;
|
||||
@ -63,7 +62,7 @@ public class TabUtil {
|
||||
if (CONFIG_NAME.equals(tab.getText())) {
|
||||
// 重新加载语言包和快捷键
|
||||
UserConfigController.getInstance().loadConfig();
|
||||
TopMenuBarManager.getInstance().initShortcutKeys();
|
||||
UserConfigController.getInstance().initAllShortcutKeys();
|
||||
LocalizationController.initLocal();
|
||||
logger.info("已刷新语言包!");
|
||||
logger.info("已刷新快捷键!");
|
||||
@ -365,13 +364,9 @@ public class TabUtil {
|
||||
.addMenu(
|
||||
new MenuBuilder("复制")
|
||||
.addMenuItem("文件名", e -> {
|
||||
ClipboardUtil.writeTextToClipboard(tab.getText());
|
||||
ClipboardUtil.writeTextToClipboard(file.getName());
|
||||
NotificationUtil.infoNotification("已复制文件名!");
|
||||
}, tab.isRelevance())
|
||||
.addMenuItem("标签页名", e -> {
|
||||
ClipboardUtil.writeTextToClipboard(tab.getText());
|
||||
NotificationUtil.infoNotification("已复制标签页名!");
|
||||
}, !tab.isRelevance())
|
||||
.addMenuItem("文件路径", e -> {
|
||||
ClipboardUtil.writeTextToClipboard(file.getAbsolutePath());
|
||||
NotificationUtil.infoNotification("已复制文件路径!");
|
||||
|
||||
@ -1,12 +1,17 @@
|
||||
package org.jcnc.jnotepad.controller.config;
|
||||
|
||||
import javafx.scene.control.MenuItem;
|
||||
import javafx.scene.input.KeyCombination;
|
||||
import org.jcnc.jnotepad.api.core.controller.config.BaseConfigController;
|
||||
import org.jcnc.jnotepad.app.config.UserConfig;
|
||||
import org.jcnc.jnotepad.app.utils.LogUtil;
|
||||
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jcnc.jnotepad.app.common.constants.AppConstants.PROGRAM_FILE_DIRECTORY;
|
||||
import static org.jcnc.jnotepad.app.common.constants.TextConstants.CHINESE;
|
||||
@ -31,11 +36,16 @@ public class UserConfigController extends BaseConfigController<UserConfig> {
|
||||
private static final UserConfigController INSTANCE = new UserConfigController();
|
||||
private String configDir;
|
||||
|
||||
private final List<Map<String, MenuItem>> menuItems = new ArrayList<>();
|
||||
|
||||
Logger logger = LogUtil.getLogger(this.getClass());
|
||||
|
||||
private UserConfigController() {
|
||||
configDir = Paths.get(AppConfigController.getInstance().getConfig().getRootPath(), PROGRAM_FILE_DIRECTORY, ROOT_CONFIG_DIR).toString();
|
||||
loadConfig();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取 UserConfigController 的实例。
|
||||
*
|
||||
@ -164,4 +174,35 @@ public class UserConfigController extends BaseConfigController<UserConfig> {
|
||||
return getConfig().getShortcutKey();
|
||||
}
|
||||
|
||||
public void initAllShortcutKeys() {
|
||||
menuItems.forEach(this::initShortcutKeys);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化快捷键
|
||||
*/
|
||||
public void initShortcutKeys(Map<String, MenuItem> menuItemMap) {
|
||||
List<MenuItem> itemsToUnbind = new ArrayList<>();
|
||||
List<ShortcutKey> shortcutKeyConfigs = getShortcutKey();
|
||||
for (ShortcutKey shortcutKey : shortcutKeyConfigs) {
|
||||
// 保证json的key必须和变量名一致
|
||||
MenuItem menuItem = menuItemMap.get(shortcutKey.getButtonName());
|
||||
String shortKeyValue = shortcutKey.getShortcutKeyValue();
|
||||
if ("".equals(shortKeyValue) && menuItem != null) {
|
||||
itemsToUnbind.add(menuItem);
|
||||
continue;
|
||||
}
|
||||
if (menuItem != null) {
|
||||
logger.info("功能名称:{}->快捷键:{}", menuItem.getText(), shortKeyValue);
|
||||
// 动态添加快捷键
|
||||
menuItem.setAccelerator(KeyCombination.keyCombination(shortKeyValue));
|
||||
}
|
||||
}
|
||||
// 解绑需要解绑的快捷键
|
||||
itemsToUnbind.forEach(menuItem -> menuItem.setAccelerator(null));
|
||||
}
|
||||
|
||||
public List<Map<String, MenuItem>> getMenuItems() {
|
||||
return menuItems;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,12 +3,9 @@ package org.jcnc.jnotepad.ui.views.manager;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Menu;
|
||||
import javafx.scene.control.MenuItem;
|
||||
import javafx.scene.input.KeyCombination;
|
||||
import org.jcnc.jnotepad.api.core.views.manager.AbstractManager;
|
||||
import org.jcnc.jnotepad.app.utils.LogUtil;
|
||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
||||
import org.jcnc.jnotepad.ui.views.root.top.menubar.TopMenuBar;
|
||||
import org.jcnc.jnotepad.ui.views.root.top.menubar.menu.*;
|
||||
import org.slf4j.Logger;
|
||||
@ -28,6 +25,7 @@ public class TopMenuBarManager extends AbstractManager<Menu> {
|
||||
Logger logger = LogUtil.getLogger(this.getClass());
|
||||
UserConfigController userConfigController = UserConfigController.getInstance();
|
||||
|
||||
|
||||
FileTopMenu fileTopMenu = FileTopMenu.getInstance();
|
||||
LanguageTopMenu languageTopMenu = LanguageTopMenu.getInstance();
|
||||
|
||||
@ -63,13 +61,12 @@ public class TopMenuBarManager extends AbstractManager<Menu> {
|
||||
helpTopMenu.initMenu();
|
||||
// 初始化插件菜单
|
||||
pluginTopMenu.initMenu();
|
||||
|
||||
// 初始化运行菜单
|
||||
runTopMenu.initMenu();
|
||||
|
||||
// 刷新顶部菜单栏
|
||||
refreshTopMenuBar();
|
||||
// 初始化快捷键
|
||||
initShortcutKeys();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -93,30 +90,6 @@ public class TopMenuBarManager extends AbstractManager<Menu> {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 初始化快捷键
|
||||
*/
|
||||
public void initShortcutKeys() {
|
||||
List<MenuItem> itemsToUnbind = new ArrayList<>();
|
||||
List<ShortcutKey> shortcutKeyConfigs = userConfigController.getShortcutKey();
|
||||
for (ShortcutKey shortcutKey : shortcutKeyConfigs) {
|
||||
// 保证json的key必须和变量名一致
|
||||
MenuItem menuItem = topMenuBar.getAllItemMap().get(shortcutKey.getButtonName());
|
||||
String shortKeyValue = shortcutKey.getShortcutKeyValue();
|
||||
if ("".equals(shortKeyValue) && menuItem != null) {
|
||||
itemsToUnbind.add(menuItem);
|
||||
continue;
|
||||
}
|
||||
if (menuItem != null) {
|
||||
logger.info("功能名称:{}->快捷键:{}", menuItem.getText(), shortKeyValue);
|
||||
// 动态添加快捷键
|
||||
menuItem.setAccelerator(KeyCombination.keyCombination(shortKeyValue));
|
||||
}
|
||||
}
|
||||
// 解绑需要解绑的快捷键
|
||||
itemsToUnbind.forEach(menuItem -> menuItem.setAccelerator(null));
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新顶部菜单
|
||||
*/
|
||||
|
||||
@ -4,9 +4,6 @@ import javafx.scene.control.*;
|
||||
import org.jcnc.jnotepad.ui.views.manager.CenterTabPaneManager;
|
||||
import org.jcnc.jnotepad.ui.views.root.center.main.center.tab.CenterTab;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 封装菜单栏组件。
|
||||
*
|
||||
@ -15,10 +12,6 @@ import java.util.Map;
|
||||
public class TopMenuBar extends MenuBar {
|
||||
|
||||
private static final TopMenuBar MENU_BAR = new TopMenuBar();
|
||||
/**
|
||||
* 按钮集合
|
||||
*/
|
||||
private final Map<String, MenuItem> allItemMap = new HashMap<>();
|
||||
/**
|
||||
* 标签页布局组件封装。
|
||||
*/
|
||||
@ -153,8 +146,6 @@ public class TopMenuBar extends MenuBar {
|
||||
return helpMenu;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Menu getPluginMenu() {
|
||||
return pluginMenu;
|
||||
}
|
||||
@ -164,9 +155,6 @@ public class TopMenuBar extends MenuBar {
|
||||
return languageMenu;
|
||||
}
|
||||
|
||||
public Map<String, MenuItem> getAllItemMap() {
|
||||
return allItemMap;
|
||||
}
|
||||
|
||||
public MenuItem getNewItem() {
|
||||
return newItem;
|
||||
|
||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.ui.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 org.jcnc.jnotepad.api.core.views.menu.AbstractBaseMenu;
|
||||
import org.jcnc.jnotepad.controller.event.handler.menuitem.*;
|
||||
import org.jcnc.jnotepad.controller.event.handler.toolbar.OpenDirectory;
|
||||
|
||||
@ -16,7 +16,7 @@ import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
|
||||
*
|
||||
* @author gewuyou
|
||||
*/
|
||||
public class FileTopMenu extends AbstractTopMenu {
|
||||
public class FileTopMenu extends AbstractBaseMenu {
|
||||
private static final FileTopMenu INSTANCE = new FileTopMenu();
|
||||
private final Map<String, MenuItem> fileMenuItems = new HashMap<>();
|
||||
|
||||
@ -59,7 +59,7 @@ public class FileTopMenu extends AbstractTopMenu {
|
||||
* 注册顶部菜单
|
||||
*/
|
||||
@Override
|
||||
protected void registerTopMenu() {
|
||||
protected void registerMenu() {
|
||||
// 文件菜单
|
||||
registerMenuItem(topMenuBar.getNewItem(), NEW, "newItem", new NewFile());
|
||||
registerMenuItem(topMenuBar.getOpenItem(), OPEN, "openItem", new OpenFile());
|
||||
|
||||
@ -3,7 +3,7 @@ package org.jcnc.jnotepad.ui.views.root.top.menubar.menu;
|
||||
import javafx.scene.control.Menu;
|
||||
import javafx.scene.control.MenuItem;
|
||||
import javafx.stage.Stage;
|
||||
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
||||
import org.jcnc.jnotepad.api.core.views.menu.AbstractBaseMenu;
|
||||
import org.jcnc.jnotepad.ui.component.stage.topmenu.help.DeveloperDebugPaneStage;
|
||||
import org.jcnc.jnotepad.ui.component.stage.topmenu.help.HelpPaneStage;
|
||||
|
||||
@ -17,7 +17,7 @@ import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
|
||||
*
|
||||
* @author gewuyou
|
||||
*/
|
||||
public class HelpTopMenu extends AbstractTopMenu {
|
||||
public class HelpTopMenu extends AbstractBaseMenu {
|
||||
|
||||
private static final HelpTopMenu INSTANCE = new HelpTopMenu();
|
||||
|
||||
@ -62,7 +62,7 @@ public class HelpTopMenu extends AbstractTopMenu {
|
||||
* 注册顶部菜单
|
||||
*/
|
||||
@Override
|
||||
protected void registerTopMenu() {
|
||||
protected void registerMenu() {
|
||||
registerMenuItem(topMenuBar.getAboutItem(), ABOUT, "aboutItem", event -> new HelpPaneStage().run(new Stage()));
|
||||
registerMenuItem(topMenuBar.getDeveloperItem(), DEVELOPER, "developerItem", event -> new DeveloperDebugPaneStage().run());
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@ import javafx.scene.control.Menu;
|
||||
import javafx.scene.control.MenuItem;
|
||||
import javafx.scene.control.RadioMenuItem;
|
||||
import javafx.scene.control.ToggleGroup;
|
||||
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
||||
import org.jcnc.jnotepad.api.core.views.menu.AbstractBaseMenu;
|
||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
|
||||
@ -22,7 +22,7 @@ import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
|
||||
*
|
||||
* @author gewuyou
|
||||
*/
|
||||
public class LanguageTopMenu extends AbstractTopMenu {
|
||||
public class LanguageTopMenu extends AbstractBaseMenu {
|
||||
|
||||
private static final LanguageTopMenu INSTANCE = new LanguageTopMenu();
|
||||
|
||||
@ -69,14 +69,12 @@ public class LanguageTopMenu extends AbstractTopMenu {
|
||||
*/
|
||||
@Override
|
||||
public void initMenu() {
|
||||
registerTopMenu();
|
||||
registerMenu();
|
||||
logger.info("初始化语言菜单!");
|
||||
// 语言菜单
|
||||
ToggleGroup languageToggleGroup = new ToggleGroup();
|
||||
var itemMap = topMenuBar.getAllItemMap();
|
||||
languageMenuItems.forEach((key, value) -> {
|
||||
UiResourceBundle.bindStringProperty(value.textProperty(), key);
|
||||
itemMap.put(key, value);
|
||||
languageToggleGroup.getToggles().add(value);
|
||||
topMenuBar.getLanguageMenu().getItems().add(value);
|
||||
});
|
||||
@ -91,7 +89,7 @@ public class LanguageTopMenu extends AbstractTopMenu {
|
||||
* @apiNote 此方法
|
||||
*/
|
||||
@Override
|
||||
protected void registerTopMenu() {
|
||||
protected void registerMenu() {
|
||||
registerRadioMenuItem(languageMenuItems, topMenuBar.getChineseItem(), UPPER_CHINESE, Locale.CHINESE, this::toggleLanguage);
|
||||
registerRadioMenuItem(languageMenuItems, topMenuBar.getEnglishItem(), UPPER_ENGLISH, Locale.ENGLISH, this::toggleLanguage);
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.ui.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 org.jcnc.jnotepad.api.core.views.menu.AbstractBaseMenu;
|
||||
import org.jcnc.jnotepad.ui.component.stage.topmenu.plugin.PluginManagementPane;
|
||||
|
||||
import java.util.HashMap;
|
||||
@ -15,7 +15,7 @@ import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
|
||||
*
|
||||
* @author gewuyou
|
||||
*/
|
||||
public class PluginTopMenu extends AbstractTopMenu {
|
||||
public class PluginTopMenu extends AbstractBaseMenu {
|
||||
|
||||
private static final PluginTopMenu INSTANCE = new PluginTopMenu();
|
||||
|
||||
@ -60,7 +60,7 @@ public class PluginTopMenu extends AbstractTopMenu {
|
||||
* 注册顶部菜单
|
||||
*/
|
||||
@Override
|
||||
protected void registerTopMenu() {
|
||||
protected void registerMenu() {
|
||||
registerMenuItem(topMenuBar.getPluginManagerItem(), MANAGER_PLUGIN, "pluginManagerItem", event -> new PluginManagementPane().run());
|
||||
registerMenuItem(topMenuBar.getCountItem(), STATISTICS, "countItem", event -> {
|
||||
});
|
||||
|
||||
@ -4,7 +4,7 @@ import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.scene.control.Menu;
|
||||
import javafx.scene.control.MenuItem;
|
||||
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
||||
import org.jcnc.jnotepad.api.core.views.menu.AbstractBaseMenu;
|
||||
import org.jcnc.jnotepad.app.utils.LogUtil;
|
||||
import org.jcnc.jnotepad.ui.component.module.vbox.BuildPanel;
|
||||
import org.jcnc.jnotepad.ui.views.manager.BuildPanelManager;
|
||||
@ -23,7 +23,7 @@ import static org.jcnc.jnotepad.app.common.constants.TextConstants.RUN;
|
||||
*
|
||||
* @author gewuyou
|
||||
*/
|
||||
public class RunTopMenu extends AbstractTopMenu {
|
||||
public class RunTopMenu extends AbstractBaseMenu {
|
||||
private static final BuildPanelManager BUILD_PANEL_MANAGER = BuildPanelManager.getInstance();
|
||||
private static final BuildPanel BUILD_PANEL = BuildPanel.getInstance();
|
||||
private static final RunTopMenu INSTANCE = new RunTopMenu();
|
||||
@ -134,7 +134,7 @@ public class RunTopMenu extends AbstractTopMenu {
|
||||
* 注册顶部菜单
|
||||
*/
|
||||
@Override
|
||||
protected void registerTopMenu() {
|
||||
protected void registerMenu() {
|
||||
|
||||
// 运行
|
||||
registerMenuItem(topMenuBar.getRunItem(), RUN, "runItem", codeRun);
|
||||
|
||||
@ -3,7 +3,7 @@ package org.jcnc.jnotepad.ui.views.root.top.menubar.menu;
|
||||
import javafx.scene.control.Menu;
|
||||
import javafx.scene.control.MenuItem;
|
||||
import javafx.stage.Stage;
|
||||
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
||||
import org.jcnc.jnotepad.api.core.views.menu.AbstractBaseMenu;
|
||||
import org.jcnc.jnotepad.app.utils.UiUtil;
|
||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenConfig;
|
||||
@ -19,7 +19,7 @@ import static org.jcnc.jnotepad.app.common.constants.TextConstants.*;
|
||||
*
|
||||
* @author gewuyou
|
||||
*/
|
||||
public class SettingTopMenu extends AbstractTopMenu {
|
||||
public class SettingTopMenu extends AbstractBaseMenu {
|
||||
|
||||
private static final SettingTopMenu INSTANCE = new SettingTopMenu();
|
||||
private final Map<String, MenuItem> setMenuItems = new HashMap<>();
|
||||
@ -64,7 +64,7 @@ public class SettingTopMenu extends AbstractTopMenu {
|
||||
* @apiNote 此方法
|
||||
*/
|
||||
@Override
|
||||
protected void registerTopMenu() {
|
||||
protected void registerMenu() {
|
||||
registerMenuItem(topMenuBar.getLineFeedItem(), WORD_WRAP, "lineFeedItem", (observableValue, before, after) -> {
|
||||
// 1. 更新全局配置
|
||||
UserConfigController.getInstance().setAutoLineConfig(after);
|
||||
|
||||
@ -28,3 +28,20 @@ MANAGER_PLUGIN=管理插件
|
||||
ENCODE=编码
|
||||
DE_BUG=调试
|
||||
RUN=运行
|
||||
COPY=复制
|
||||
FILE_NAME=文件名
|
||||
FILE_PATH=文件路径
|
||||
FOLDER_PATH=所在文件夹
|
||||
EXPLORER=资源管理器
|
||||
CLOSE=关闭
|
||||
CLOSE_ALL_TABS=关闭所有标签页
|
||||
CLOSE_LEFT_TABS=关闭左侧标签页
|
||||
CLOSE_RIGHT_TABS=关闭右侧标签页
|
||||
CLOSE_OTHER_TABS=关闭其他标签页
|
||||
FIXED_TAB=固定标签页
|
||||
UNFIXED_TAB=取消固定
|
||||
READ_ONLY=只读
|
||||
UNREAD_ONLY=取消只读
|
||||
OPEN_ON=打开于
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user