package org.jcnc.jnotepad.plugin; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage; import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicFileChooserFactory; import org.jcnc.jnotepad.util.LogUtil; import org.jcnc.jnotepad.util.PopUpUtil; import org.jcnc.jnotepad.util.UiUtil; import org.slf4j.Logger; import java.io.File; import java.util.List; import java.util.Map; /** * 插件管理界面 *
* 用于演示插件加载和执行的界面。
*
* @author luke gewuyou
*/
public class PluginManagerInterface {
private static final PluginManagerInterface INSTANCE = new PluginManagerInterface();
Logger logger = LogUtil.getLogger(this.getClass());
public static PluginManagerInterface getInstance() {
return INSTANCE;
}
/**
* 启动插件演示界面
*
* @param primaryStage JavaFX的主舞台
*/
public void start(Stage primaryStage) {
PluginManager pluginManager = PluginManager.getInstance();
FileChooser fileChooser = BasicFileChooserFactory.getInstance().createFileChooser(
"选择插件",
null,
null,
new FileChooser.ExtensionFilter("JAR Files", "*.jar")
);
Button loadButton = createLoadButton(primaryStage, fileChooser, pluginManager);
Button executeButton = new Button("执行插件");
executeButton.setOnAction(event -> pluginManager.executePlugins());
VBox root = new VBox(10, loadButton, executeButton);
Scene scene = new Scene(root, 300, 200);
primaryStage.getIcons().add(UiUtil.getAppIcon());
primaryStage.setScene(scene);
primaryStage.setTitle("插件演示");
primaryStage.show();
}
/**
* 显示已加载插件的信息
*
* @param primaryStage JavaFX的主舞台
* @param pluginManager 插件管理器
*/
private void displayPluginInfo(Stage primaryStage, PluginManager pluginManager) {
Map