diff --git a/README.md b/README.md index ddd6996..66fa536 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ JNotepad使用Java语言编写,并基于JavaFX框架开发,具有良好的 - `设置 > 语言`:切换语言。 -- `插件 > 增加插件`:(管理插件系统,待完善)。 +- `插件 > 增加插件`:管理插件系统。 ## 依赖项 @@ -128,7 +128,7 @@ POM文件中的全部依赖项: - MacOS 平台  -### 参与贡献 +# 参与贡献 1. 加入JCNC社区 1. [阅读JCNC开发者文档][docs-url] diff --git a/src/main/java/org/jcnc/jnotepad/app/config/AppConfig.java b/src/main/java/org/jcnc/jnotepad/app/config/AppConfig.java index 60a4610..c6ef7b7 100644 --- a/src/main/java/org/jcnc/jnotepad/app/config/AppConfig.java +++ b/src/main/java/org/jcnc/jnotepad/app/config/AppConfig.java @@ -41,7 +41,7 @@ public class AppConfig { shortcutKeys.add(createShortcutKey("saveAsItem", CTRL_ALT_S)); shortcutKeys.add(createShortcutKey("lineFeedItem", "")); shortcutKeys.add(createShortcutKey("openConfigItem", ALT_S)); - shortcutKeys.add(createShortcutKey("addItem", "")); + shortcutKeys.add(createShortcutKey("pluginManager", "")); shortcutKeys.add(createShortcutKey("countItem", "")); myData.setShortcutKey(shortcutKeys); return myData; 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 535b59b..0c8c514 100644 --- a/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java +++ b/src/main/java/org/jcnc/jnotepad/common/constants/TextConstants.java @@ -18,7 +18,7 @@ public class TextConstants { public static final String SET = "SET"; public static final String WORD_WRAP = "WORD_WRAP"; public static final String PLUGIN = "PLUGIN"; - public static final String ADD_PLUGIN = "ADD_PLUGIN"; + public static final String MANAGER_PLUGIN = "MANAGER_PLUGIN"; public static final String STATISTICS = "STATISTICS"; public static final String OPEN_CONFIGURATION_FILE = "OPEN_CONFIGURATION_FILE"; public static final String TOP = "TOP"; diff --git a/src/main/java/org/jcnc/jnotepad/ui/pluginstage/CustomSplitPane.java b/src/main/java/org/jcnc/jnotepad/ui/pluginstage/CustomSplitPane.java new file mode 100644 index 0000000..73fd2cd --- /dev/null +++ b/src/main/java/org/jcnc/jnotepad/ui/pluginstage/CustomSplitPane.java @@ -0,0 +1,63 @@ +package org.jcnc.jnotepad.ui.pluginstage; + +import javafx.geometry.Orientation; +import javafx.scene.control.SplitPane; +import javafx.scene.layout.HBox; + +/** + * 自定义分割面板,用于将两个组件以水平方向分割显示。 + * + *
该分割面板包含左侧和右侧两个区域,可分别设置内容。
+ * + * @author luke + */ +public class CustomSplitPane extends SplitPane { + + private final HBox leftBox; + private final HBox rightBox; + + /** + * 创建一个自定义分割面板,指定左侧和右侧的文本标签。 + * + * @param leftText 左侧区域的文本标签 + * @param rightText 右侧区域的文本标签 + */ + public CustomSplitPane(String leftText, String rightText) { + // 创建左侧和右侧的框 + leftBox = createBox(leftText); + rightBox = createBox(rightText); + + // 设置水平分割面板的属性 + this.setOrientation(Orientation.HORIZONTAL); + this.setDividerPositions(0.5); + + // 添加左侧和右侧的框到分割面板 + this.getItems().addAll(leftBox, rightBox); + } + + private HBox createBox(String text) { + HBox box = new HBox(); + box.getChildren().add(new javafx.scene.control.Label(text)); + return box; + } + + /** + * 设置左侧区域的内容。 + * + * @param content 左侧区域的内容节点 + */ + public void setLeftContent(javafx.scene.Node content) { + leftBox.getChildren().clear(); + leftBox.getChildren().add(content); + } + + /** + * 设置右侧区域的内容。 + * + * @param content 右侧区域的内容节点 + */ + public void setRightContent(javafx.scene.Node content) { + rightBox.getChildren().clear(); + rightBox.getChildren().add(content); + } +} diff --git a/src/main/java/org/jcnc/jnotepad/ui/pluginstage/PluginManagementPane.java b/src/main/java/org/jcnc/jnotepad/ui/pluginstage/PluginManagementPane.java new file mode 100644 index 0000000..2c5b3e9 --- /dev/null +++ b/src/main/java/org/jcnc/jnotepad/ui/pluginstage/PluginManagementPane.java @@ -0,0 +1,145 @@ +package org.jcnc.jnotepad.ui.pluginstage; + +import atlantafx.base.controls.Tile; +import atlantafx.base.controls.ToggleSwitch; +import atlantafx.base.theme.PrimerLight; +import javafx.application.Application; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.Tab; +import javafx.scene.control.TabPane; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.VBox; +import org.jcnc.jnotepad.util.LogUtil; +import org.slf4j.Logger; + +import java.util.HashMap; +import java.util.Map; + +/** + * 插件管理面板,用于管理插件的市场、已安装和设置功能。 + * + *此面板包含一个自定义分割面板,用于显示不同的插件管理选项卡内容。
+ * + * @author luke + */ +public class PluginManagementPane extends BorderPane { + + Logger logger = LogUtil.getLogger(this.getClass()); + + + private CustomSplitPane customSplitPane; + private final Map