commit
685f9256e2
@ -13,7 +13,7 @@ import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
|
||||
import org.jcnc.jnotepad.controller.ResourceController;
|
||||
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
||||
import org.jcnc.jnotepad.controller.manager.Controller;
|
||||
import org.jcnc.jnotepad.plugin.PluginManager;
|
||||
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
||||
import org.jcnc.jnotepad.util.UiUtil;
|
||||
import org.jcnc.jnotepad.views.manager.RootManager;
|
||||
import org.jcnc.jnotepad.views.manager.SidebarToolBarManager;
|
||||
|
||||
@ -9,6 +9,10 @@ import org.jcnc.jnotepad.plugin.interfaces.Plugin;
|
||||
* @author gewuyou
|
||||
*/
|
||||
public class PluginDescriptor {
|
||||
/**
|
||||
* 插件id
|
||||
*/
|
||||
private String id;
|
||||
/**
|
||||
* 插件名称
|
||||
*/
|
||||
@ -79,6 +83,29 @@ public class PluginDescriptor {
|
||||
@JsonIgnore
|
||||
private Plugin plugin;
|
||||
|
||||
public PluginDescriptor() {
|
||||
}
|
||||
|
||||
public PluginDescriptor(PluginDescriptor pluginDescriptor) {
|
||||
this.id = pluginDescriptor.getId();
|
||||
this.name = pluginDescriptor.getName();
|
||||
this.version = pluginDescriptor.getVersion();
|
||||
this.enabled = pluginDescriptor.isEnabled();
|
||||
this.author = pluginDescriptor.getAuthor();
|
||||
this.category = pluginDescriptor.getCategory();
|
||||
this.icon = pluginDescriptor.getIcon();
|
||||
this.size = pluginDescriptor.getSize();
|
||||
this.description = pluginDescriptor.getDescription();
|
||||
this.detailedIntroduction = pluginDescriptor.getDetailedIntroduction();
|
||||
this.log = pluginDescriptor.getLog();
|
||||
this.pluginUrl = pluginDescriptor.getPluginUrl();
|
||||
this.mainClass = pluginDescriptor.getMainClass();
|
||||
this.assetFolder = pluginDescriptor.getAssetFolder();
|
||||
this.readMe = pluginDescriptor.getReadMe();
|
||||
this.score = pluginDescriptor.getScore();
|
||||
this.plugin = pluginDescriptor.getPlugin();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
@ -206,4 +233,12 @@ public class PluginDescriptor {
|
||||
public void setScore(Float score) {
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
||||
import org.jcnc.jnotepad.exception.AppException;
|
||||
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
|
||||
import org.jcnc.jnotepad.plugin.interfaces.Plugin;
|
||||
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
||||
import org.jcnc.jnotepad.util.JsonUtil;
|
||||
import org.jcnc.jnotepad.util.LogUtil;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
@ -6,6 +6,7 @@ import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.VBox;
|
||||
import javafx.stage.FileChooser;
|
||||
import javafx.stage.Stage;
|
||||
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
||||
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicFileChooserFactory;
|
||||
import org.jcnc.jnotepad.util.LogUtil;
|
||||
import org.jcnc.jnotepad.util.PopUpUtil;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package org.jcnc.jnotepad.plugin;
|
||||
package org.jcnc.jnotepad.plugin.manager;
|
||||
|
||||
import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
|
||||
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
||||
@ -35,7 +35,12 @@ public class PluginManager {
|
||||
/**
|
||||
* 插件信息
|
||||
*/
|
||||
private final List<PluginDescriptor> pluginDescriptors = new ArrayList<>();
|
||||
private List<PluginDescriptor> pluginDescriptors = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 插件信息临时集合
|
||||
*/
|
||||
private List<PluginDescriptor> temporaryPluginDescriptors;
|
||||
Logger logger = LogUtil.getLogger(this.getClass());
|
||||
|
||||
private PluginManager() {
|
||||
@ -46,6 +51,13 @@ public class PluginManager {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化插件临时集合
|
||||
*/
|
||||
public void initializeTemporaryPluginDescriptors() {
|
||||
temporaryPluginDescriptors = new ArrayList<>(pluginDescriptors.size());
|
||||
pluginDescriptors.forEach(pluginDescriptor -> temporaryPluginDescriptors.add(new PluginDescriptor(pluginDescriptor)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 卸载插件
|
||||
@ -149,6 +161,15 @@ public class PluginManager {
|
||||
return pluginDescriptors;
|
||||
}
|
||||
|
||||
|
||||
public List<PluginDescriptor> getTemporaryPluginDescriptors() {
|
||||
return temporaryPluginDescriptors;
|
||||
}
|
||||
|
||||
public void setTemporaryPluginDescriptors(List<PluginDescriptor> temporaryPluginDescriptors) {
|
||||
this.temporaryPluginDescriptors = temporaryPluginDescriptors;
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用插件
|
||||
*
|
||||
@ -157,4 +178,26 @@ public class PluginManager {
|
||||
public void enablePlugIn(PluginDescriptor pluginDescriptor) {
|
||||
pluginDescriptor.setEnabled(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存插件设置并退出
|
||||
*/
|
||||
public void saveAndExitSettings() {
|
||||
pluginDescriptors = temporaryPluginDescriptors;
|
||||
clearTemporarySettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存插件设置但不退出
|
||||
*/
|
||||
public void saveNotExitSettings() {
|
||||
pluginDescriptors = temporaryPluginDescriptors;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除插件临时设置
|
||||
*/
|
||||
public void clearTemporarySettings() {
|
||||
temporaryPluginDescriptors = null;
|
||||
}
|
||||
}
|
||||
@ -25,7 +25,7 @@ import javafx.stage.Stage;
|
||||
import org.commonmark.parser.Parser;
|
||||
import org.commonmark.renderer.html.HtmlRenderer;
|
||||
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
|
||||
import org.jcnc.jnotepad.plugin.PluginManager;
|
||||
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
||||
import org.jcnc.jnotepad.ui.module.CustomSetButton;
|
||||
import org.jcnc.jnotepad.util.LogUtil;
|
||||
import org.slf4j.Logger;
|
||||
@ -82,6 +82,8 @@ public class PluginManagementPane extends BorderPane {
|
||||
* 初始化插件管理面板。
|
||||
*/
|
||||
private void initialize() {
|
||||
// 初始化插件临时集合
|
||||
pluginManager.initializeTemporaryPluginDescriptors();
|
||||
// 创建选项卡面板
|
||||
TabPane rootTabPane = new TabPane();
|
||||
|
||||
@ -149,18 +151,26 @@ public class PluginManagementPane extends BorderPane {
|
||||
bottomBox.setPadding(new Insets(7, 15, 7, 0));
|
||||
Button confirmButton = new Button(" 确认 ");
|
||||
confirmButton.setTextFill(Color.WHITE);
|
||||
|
||||
confirmButton.getStyleClass().addAll(Styles.SMALL);
|
||||
confirmButton.setStyle("-fx-background-color: rgb(54,88,128);");
|
||||
confirmButton.setOnAction(event -> {
|
||||
Stage stage = (Stage) confirmButton.getScene().getWindow();
|
||||
// 保存设置
|
||||
pluginManager.saveAndExitSettings();
|
||||
stage.close();
|
||||
});
|
||||
|
||||
CustomSetButton cancelButton = new CustomSetButton(" 取消 ");
|
||||
cancelButton.setOnAction(event -> {
|
||||
Stage stage = (Stage) cancelButton.getScene().getWindow();
|
||||
// 清空临时集合
|
||||
pluginManager.clearTemporarySettings();
|
||||
stage.close();
|
||||
|
||||
});
|
||||
cancelButton.getStyleClass().addAll(Styles.SMALL);
|
||||
Button applicationButton = new Button(" 应用 ");
|
||||
applicationButton.getStyleClass().addAll(Styles.SMALL);
|
||||
applicationButton.setOnAction(event -> pluginManager.saveNotExitSettings());
|
||||
bottomBox.getChildren().addAll(confirmButton, cancelButton, applicationButton);
|
||||
|
||||
this.setBottom(bottomBox);
|
||||
@ -173,8 +183,8 @@ public class PluginManagementPane extends BorderPane {
|
||||
*/
|
||||
private ScrollPane getScrollPane() {
|
||||
List<Tile> tiles = new ArrayList<>();
|
||||
|
||||
pluginManager.getPluginDescriptors().forEach(pluginDescriptor -> tiles.add(createPlugInListItem(pluginDescriptor)));
|
||||
// 将拷贝的插件信息类添加进列表
|
||||
pluginManager.getTemporaryPluginDescriptors().forEach(pluginDescriptor -> tiles.add(createPlugInListItem(pluginDescriptor)));
|
||||
|
||||
// 创建VBox并将插件列表项添加到其中
|
||||
var box = new VBox();
|
||||
@ -195,7 +205,6 @@ public class PluginManagementPane extends BorderPane {
|
||||
/**
|
||||
* 创建插件列表项Tile。
|
||||
*
|
||||
|
||||
* @return 创建的插件列表项Tile
|
||||
*/
|
||||
private Tile createPlugInListItem(PluginDescriptor pluginDescriptor) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user