diff --git a/config/zxnoterUI/TitleBarConfig.json b/config/zxnoterUI/TitleBarConfig.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/config/zxnoterUI/TitleBarConfig.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/behavior/MenuBehavior.java b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/behavior/MenuBehavior.java new file mode 100644 index 00000000..bfb93e36 --- /dev/null +++ b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/behavior/MenuBehavior.java @@ -0,0 +1,10 @@ +package team.zxorg.zxnoter.ui.behavior; + +import team.zxorg.zxnoter.ui.ProjectView; + +/** + * 菜单行为 + */ +public interface MenuBehavior { + void action(ProjectView projectView); +} diff --git a/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/menu/FileMenu.java b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/menu/FileMenu.java new file mode 100644 index 00000000..b9ab0b9e --- /dev/null +++ b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/menu/FileMenu.java @@ -0,0 +1,10 @@ +package team.zxorg.zxnoter.ui.component.menu; + +import team.zxorg.fxcl.component.menu.LangMenuItem; +import team.zxorg.zxnoter.ui.ProjectView; +import team.zxorg.zxnoter.ui.behavior.MenuBehavior; + +public class FileMenu extends LangMenuItem { + private ProjectView projectView; + +} diff --git a/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/titlebar/TitleBar.java b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/titlebar/TitleBar.java index 116e2252..ca82669f 100644 --- a/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/titlebar/TitleBar.java +++ b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/titlebar/TitleBar.java @@ -1,26 +1,74 @@ package team.zxorg.zxnoter.ui.component.titlebar; import javafx.geometry.Pos; +import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; +import javafx.scene.control.MenuItem; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import team.zxorg.extensionloader.core.Language; +import team.zxorg.extensionloader.core.Logger; import team.zxorg.fxcl.component.Icon; import team.zxorg.fxcl.component.LangLabel; +import team.zxorg.fxcl.component.menu.LangCheckMenuItem; import team.zxorg.fxcl.component.menu.LangMenuItem; import team.zxorg.zxnoter.ui.ProjectView; +import team.zxorg.zxnoter.ui.ZXNoter; +import team.zxorg.zxnoter.ui.component.activitypane.ActivityBarConfig; +import team.zxorg.zxnoter.ui.component.activitypane.ActivityPaneSkin; import team.zxorg.zxnoter.ui.factory.MenuFactory; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.nio.file.*; +import java.nio.file.attribute.UserPrincipalLookupService; +import java.nio.file.spi.FileSystemProvider; import java.util.LinkedHashMap; +import java.util.Set; /** * 标题栏定义 */ public final class TitleBar extends HBox { - private static final LinkedHashMap>> register = new LinkedHashMap<>(); + private static final LinkedHashMap> activityMenuClassMap = new LinkedHashMap<>(); + private static final TitleBarConfig config = ZXNoter.config.get(TitleBarConfig.class); + public static void register(Class activityMenuClass) { + LangMenuItem activityPaneSkin; + try { + activityPaneSkin = activityMenuClass.getDeclaredConstructor().newInstance(); + } catch (InstantiationException | IllegalAccessException | InvocationTargetException | + NoSuchMethodException e) { + Logger.warning("注册失败: " + activityMenuClass.getSimpleName()); + return; + } + + activityMenuClassMap.put(activityPaneSkin.getId(), activityMenuClass); + config.save(); + } + /** + * 注册一个菜单 + * + * @param menuId 菜单id + * @param sort 菜单排序 越小越靠前 + */ + public static void registerMenu(String path, int sort, String group) { + + } + + /** + * 注册一个菜单项目 + * + * @param parentId 菜单id + * @param itemId 菜单id + * @param sort 菜单排序 越小越靠前 + * @param group 菜单组名 + */ + public static void registerMenuItem(String path, int sort, String group) { + + } private final ProjectView projectView; @@ -34,7 +82,7 @@ public TitleBar(ProjectView projectView) { getStyleClass().add("title-icon"); } }; - private final MenuBar menuBar = new MenuBar(MenuFactory.getMenu(LANG + "menuBar.file",MenuFactory.getMenu(LANG + "menuBar.file")), MenuFactory.getMenu(LANG + "menuBar.edit"), MenuFactory.getMenu(LANG + "menuBar.help")); + private final MenuBar menuBar = new MenuBar(); private final LangLabel titleLabel = new LangLabel(LANG + "title") { { HBox.setHgrow(this, Priority.ALWAYS); @@ -44,6 +92,9 @@ public TitleBar(ProjectView projectView) { }; { + Menu menu = new Menu(); + menu.getItems().addAll(new Menu()); + getChildren().addAll(titleIcon, menuBar, titleLabel); getStyleClass().addAll("title-bar"); } diff --git a/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/titlebar/TitleMenuBarConfig.java b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/titlebar/TitleMenuBarConfig.java deleted file mode 100644 index 20a9d3b3..00000000 --- a/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/titlebar/TitleMenuBarConfig.java +++ /dev/null @@ -1,7 +0,0 @@ -package team.zxorg.zxnoter.ui.component.titlebar; - -import team.zxorg.extensionloader.core.ConfigData; - -public class TitleMenuBarConfig extends ConfigData { - -} diff --git a/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/zxnoter/BaseMenu.java b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/zxnoter/BaseMenu.java new file mode 100644 index 00000000..bd57b4c7 --- /dev/null +++ b/module/extensions/ZXNoterUI/src/team/zxorg/zxnoter/ui/component/zxnoter/BaseMenu.java @@ -0,0 +1,14 @@ +package team.zxorg.zxnoter.ui.component.zxnoter; + +import javafx.scene.input.KeyCode; +import team.zxorg.zxnoter.ui.ProjectView; + +import java.util.List; + +public class BaseMenu { + private ProjectView projectView; + private int sort; + private String id; + private String group; + private List hotKey; +}