暂时将日志输出改在用户目录
This commit is contained in:
parent
429fb3cc07
commit
f9812e2d63
3
.gitignore
vendored
3
.gitignore
vendored
@ -15,6 +15,9 @@ test/
|
|||||||
### 此处排除证书目录
|
### 此处排除证书目录
|
||||||
certificate/
|
certificate/
|
||||||
|
|
||||||
|
### 此处排除了项目文件
|
||||||
|
.jnotepad/
|
||||||
|
|
||||||
### Eclipse ###
|
### Eclipse ###
|
||||||
.apt_generated
|
.apt_generated
|
||||||
.classpath
|
.classpath
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@ -147,7 +147,7 @@
|
|||||||
<configuration>
|
<configuration>
|
||||||
<mainClass>org.jcnc.jnotepad/org.jcnc.jnotepad.LunchApp</mainClass>
|
<mainClass>org.jcnc.jnotepad/org.jcnc.jnotepad.LunchApp</mainClass>
|
||||||
<reflectionList>
|
<reflectionList>
|
||||||
org.jcnc.jnotepad.app.config.AppConfig,org.jcnc.jnotepad.app.config.AppConfig$ShortcutKey
|
org.jcnc.jnotepad.app.config.UserConfig,org.jcnc.jnotepad.app.config.UserConfig$ShortcutKey
|
||||||
</reflectionList>
|
</reflectionList>
|
||||||
<bundlesList>
|
<bundlesList>
|
||||||
i18n/i18n
|
i18n/i18n
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package org.jcnc.jnotepad;
|
|||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.app.manager.ApplicationManager;
|
import org.jcnc.jnotepad.app.manager.ApplicationManager;
|
||||||
|
import org.jcnc.jnotepad.common.util.LogUtil;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,6 +27,10 @@ public class LunchApp extends Application {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Stage primaryStage) {
|
public void start(Stage primaryStage) {
|
||||||
|
// 获取当前启动位置
|
||||||
|
String currentWorkingDirectory = System.getProperty("user.dir");
|
||||||
|
LogUtil.getLogger(this.getClass()).info("当前启动位置:{}", currentWorkingDirectory);
|
||||||
|
|
||||||
// 设置参数
|
// 设置参数
|
||||||
APPLICATION_MANAGER.setApplication(this);
|
APPLICATION_MANAGER.setApplication(this);
|
||||||
APPLICATION_MANAGER.setPrimaryStage(primaryStage);
|
APPLICATION_MANAGER.setPrimaryStage(primaryStage);
|
||||||
|
|||||||
@ -1,89 +1,25 @@
|
|||||||
package org.jcnc.jnotepad.app.config;
|
package org.jcnc.jnotepad.app.config;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import java.util.Optional;
|
||||||
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import static org.jcnc.jnotepad.common.constants.AppConstants.DEFAULT_PROPERTY;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.jcnc.jnotepad.common.constants.TextConstants.CHINESE;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据模型类,用于表示 MyData 对象的数据结构。
|
* 应用程序配置文件
|
||||||
*
|
*
|
||||||
* @author 许轲
|
* @author gewuyou
|
||||||
*/
|
*/
|
||||||
public class AppConfig {
|
public class AppConfig {
|
||||||
private static final String CTRL_N = "ctrl+n";
|
|
||||||
private static final String CTRL_O = "ctrl+o";
|
|
||||||
private static final String CTRL_S = "ctrl+s";
|
|
||||||
private static final String CTRL_ALT_S = "ctrl+alt+s";
|
|
||||||
private static final String ALT_S = "alt+s";
|
|
||||||
private String language;
|
|
||||||
@JsonIgnore
|
|
||||||
private boolean textWrap;
|
|
||||||
private List<ShortcutKey> shortcutKey;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成默认应用配置对象。
|
* 程序根路径
|
||||||
*
|
|
||||||
* @return 默认应用配置对象
|
|
||||||
*/
|
*/
|
||||||
public static AppConfig generateDefaultAppConfig() {
|
private String rootPath;
|
||||||
AppConfig config = new AppConfig();
|
|
||||||
config.setLanguage(CHINESE);
|
|
||||||
config.setTextWrap(false);
|
|
||||||
|
|
||||||
List<ShortcutKey> shortcutKeys = new ArrayList<>();
|
public String getRootPath() {
|
||||||
shortcutKeys.add(createShortcutKey("newItem", CTRL_N));
|
return Optional.of(rootPath).orElse(System.getProperty(DEFAULT_PROPERTY));
|
||||||
shortcutKeys.add(createShortcutKey("openItem", CTRL_O));
|
|
||||||
shortcutKeys.add(createShortcutKey("saveItem", CTRL_S));
|
|
||||||
shortcutKeys.add(createShortcutKey("saveAsItem", CTRL_ALT_S));
|
|
||||||
shortcutKeys.add(createShortcutKey("lineFeedItem", ""));
|
|
||||||
shortcutKeys.add(createShortcutKey("openConfigItem", ALT_S));
|
|
||||||
shortcutKeys.add(createShortcutKey("pluginManager", ""));
|
|
||||||
shortcutKeys.add(createShortcutKey("countItem", ""));
|
|
||||||
shortcutKeys.add(createShortcutKey("aboutItem", ""));
|
|
||||||
|
|
||||||
config.setShortcutKey(shortcutKeys);
|
|
||||||
return config;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void setRootPath(String rootPath) {
|
||||||
* 创建 ShortcutKey 对象。
|
this.rootPath = rootPath;
|
||||||
*
|
|
||||||
* @param buttonName 按钮名称
|
|
||||||
* @param shortcutKeyValue 快捷键值
|
|
||||||
* @return ShortcutKey 对象
|
|
||||||
*/
|
|
||||||
private static ShortcutKey createShortcutKey(String buttonName, String shortcutKeyValue) {
|
|
||||||
ShortcutKey shortcutKey = new ShortcutKey();
|
|
||||||
shortcutKey.setButtonName(buttonName);
|
|
||||||
shortcutKey.setShortcutKeyValue(shortcutKeyValue);
|
|
||||||
return shortcutKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLanguage() {
|
|
||||||
return language;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLanguage(String language) {
|
|
||||||
this.language = language;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ShortcutKey> getShortcutKey() {
|
|
||||||
return shortcutKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setShortcutKey(List<ShortcutKey> shortcutKey) {
|
|
||||||
this.shortcutKey = shortcutKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isTextWrap() {
|
|
||||||
return textWrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTextWrap(boolean textWrap) {
|
|
||||||
this.textWrap = textWrap;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package org.jcnc.jnotepad.app.config;
|
|||||||
|
|
||||||
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
|
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -13,19 +12,6 @@ import java.util.List;
|
|||||||
public class PluginConfig {
|
public class PluginConfig {
|
||||||
private List<PluginDescriptor> plugins;
|
private List<PluginDescriptor> plugins;
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成默认的插件配置文件
|
|
||||||
*
|
|
||||||
* @return org.jcnc.jnotepad.app.config.PluginConfig 插件配置文件
|
|
||||||
* @apiNote
|
|
||||||
* @since 2023/9/17 0:57
|
|
||||||
*/
|
|
||||||
public static PluginConfig generateDefaultPluginConfig() {
|
|
||||||
PluginConfig pluginConfig = new PluginConfig();
|
|
||||||
pluginConfig.setPlugins(new ArrayList<>());
|
|
||||||
return pluginConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<PluginDescriptor> getPlugins() {
|
public List<PluginDescriptor> getPlugins() {
|
||||||
return plugins;
|
return plugins;
|
||||||
}
|
}
|
||||||
|
|||||||
44
src/main/java/org/jcnc/jnotepad/app/config/UserConfig.java
Normal file
44
src/main/java/org/jcnc/jnotepad/app/config/UserConfig.java
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package org.jcnc.jnotepad.app.config;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户配置文件类
|
||||||
|
*
|
||||||
|
* @author 许轲
|
||||||
|
*/
|
||||||
|
public class UserConfig {
|
||||||
|
|
||||||
|
private String language;
|
||||||
|
@JsonIgnore
|
||||||
|
private boolean textWrap;
|
||||||
|
private List<ShortcutKey> shortcutKey;
|
||||||
|
|
||||||
|
|
||||||
|
public String getLanguage() {
|
||||||
|
return language;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLanguage(String language) {
|
||||||
|
this.language = language;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ShortcutKey> getShortcutKey() {
|
||||||
|
return shortcutKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortcutKey(List<ShortcutKey> shortcutKey) {
|
||||||
|
this.shortcutKey = shortcutKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTextWrap() {
|
||||||
|
return textWrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTextWrap(boolean textWrap) {
|
||||||
|
this.textWrap = textWrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -16,8 +16,8 @@ import org.jcnc.jnotepad.common.util.LogUtil;
|
|||||||
import org.jcnc.jnotepad.common.util.UiUtil;
|
import org.jcnc.jnotepad.common.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.controller.ResourceController;
|
import org.jcnc.jnotepad.controller.ResourceController;
|
||||||
import org.jcnc.jnotepad.controller.cache.CacheController;
|
import org.jcnc.jnotepad.controller.cache.CacheController;
|
||||||
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
|
||||||
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
||||||
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.controller.manager.Controller;
|
import org.jcnc.jnotepad.controller.manager.Controller;
|
||||||
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
||||||
import org.jcnc.jnotepad.views.manager.*;
|
import org.jcnc.jnotepad.views.manager.*;
|
||||||
@ -141,7 +141,7 @@ public class ApplicationManager {
|
|||||||
pluginConfigController.getConfig().setPlugins(PluginManager.getInstance().getPluginDescriptors());
|
pluginConfigController.getConfig().setPlugins(PluginManager.getInstance().getPluginDescriptors());
|
||||||
pluginConfigController.writeConfig();
|
pluginConfigController.writeConfig();
|
||||||
// 保存配置文件
|
// 保存配置文件
|
||||||
AppConfigController.getInstance().writeConfig();
|
UserConfigController.getInstance().writeConfig();
|
||||||
// 销毁插件可能申请的资源
|
// 销毁插件可能申请的资源
|
||||||
PluginManager.getInstance().destroyPlugins();
|
PluginManager.getInstance().destroyPlugins();
|
||||||
// 保存已打开的文件标签页
|
// 保存已打开的文件标签页
|
||||||
|
|||||||
@ -40,7 +40,7 @@ public class TextConstants {
|
|||||||
*/
|
*/
|
||||||
public static final String ENGLISH = "english";
|
public static final String ENGLISH = "english";
|
||||||
|
|
||||||
/// Config 文本常量
|
/// BaseConfig 文本常量
|
||||||
/**
|
/**
|
||||||
* 中文小写
|
* 中文小写
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
|
|||||||
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
import org.jcnc.jnotepad.common.util.JsonUtil;
|
import org.jcnc.jnotepad.common.util.JsonUtil;
|
||||||
import org.jcnc.jnotepad.common.util.LogUtil;
|
import org.jcnc.jnotepad.common.util.LogUtil;
|
||||||
|
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
import org.jcnc.jnotepad.exception.AppException;
|
||||||
import org.jcnc.jnotepad.model.entity.Cache;
|
import org.jcnc.jnotepad.model.entity.Cache;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -19,8 +20,6 @@ import java.util.Map;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static org.jcnc.jnotepad.common.constants.AppConstants.DEFAULT_PROPERTY;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缓存控制器
|
* 缓存控制器
|
||||||
*
|
*
|
||||||
@ -36,7 +35,7 @@ public class CacheController {
|
|||||||
private String cacheDir;
|
private String cacheDir;
|
||||||
|
|
||||||
private CacheController() {
|
private CacheController() {
|
||||||
cacheDir = Paths.get(System.getProperty(DEFAULT_PROPERTY), ".jnotepad", "caches").toString();
|
cacheDir = Paths.get(AppConfigController.getInstance().getConfig().getRootPath(), ".jnotepad", "caches").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CacheController getInstance() {
|
public static CacheController getInstance() {
|
||||||
@ -48,7 +47,6 @@ public class CacheController {
|
|||||||
if (createCachesIfNotExists()) {
|
if (createCachesIfNotExists()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查并获取缓存根目录
|
// 检查并获取缓存根目录
|
||||||
File cacheFileDir = createCacheRootIfNotExist();
|
File cacheFileDir = createCacheRootIfNotExist();
|
||||||
// 获取缓存命名空间
|
// 获取缓存命名空间
|
||||||
|
|||||||
@ -1,44 +1,37 @@
|
|||||||
package org.jcnc.jnotepad.controller.config;
|
package org.jcnc.jnotepad.controller.config;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.app.config.AppConfig;
|
import org.jcnc.jnotepad.app.config.AppConfig;
|
||||||
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
|
||||||
import org.jcnc.jnotepad.plugin.api.core.controller.config.BaseConfigController;
|
import org.jcnc.jnotepad.plugin.api.core.controller.config.BaseConfigController;
|
||||||
|
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.jcnc.jnotepad.common.constants.AppConstants.DEFAULT_PROPERTY;
|
import static org.jcnc.jnotepad.common.constants.AppConstants.DEFAULT_PROPERTY;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用程序配置控制器
|
* 应用程序配置文件控制器
|
||||||
*
|
*
|
||||||
* <p>该类负责管理应用程序的配置文件,包括加载、持久化和更新配置信息等操作。</p>
|
* @author gewuyou
|
||||||
*
|
|
||||||
* @author songdragon
|
|
||||||
*/
|
*/
|
||||||
public class AppConfigController extends BaseConfigController<AppConfig> {
|
public class AppConfigController extends BaseConfigController<AppConfig> {
|
||||||
|
|
||||||
|
private static final AppConfigController INSTANCE = new AppConfigController();
|
||||||
|
|
||||||
|
public static AppConfigController getInstance() {
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 配置文件名
|
* 配置文件名
|
||||||
*/
|
*/
|
||||||
public static final String CONFIG_NAME = "jnotepadConfig.json";
|
public static final String CONFIG_NAME = "appConfig.json";
|
||||||
private static final AppConfigController INSTANCE = new AppConfigController();
|
|
||||||
private String configDir;
|
|
||||||
|
|
||||||
private AppConfigController() {
|
private final String configDir;
|
||||||
configDir = Paths.get(System.getProperty(DEFAULT_PROPERTY), ".jnotepad").toString();
|
|
||||||
|
public AppConfigController() {
|
||||||
|
configDir = Paths.get(System.getProperty(DEFAULT_PROPERTY), ".jnotepad", ROOT_CONFIG_DIR).toString();
|
||||||
loadConfig();
|
loadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 AppConfigController 的实例。
|
|
||||||
*
|
|
||||||
* @return AppConfigController 的实例
|
|
||||||
*/
|
|
||||||
public static AppConfigController getInstance() {
|
|
||||||
return INSTANCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取配置文件Class类
|
* 获取配置文件Class类
|
||||||
*
|
*
|
||||||
@ -49,15 +42,6 @@ public class AppConfigController extends BaseConfigController<AppConfig> {
|
|||||||
return AppConfig.class;
|
return AppConfig.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成默认的配置文件
|
|
||||||
*
|
|
||||||
* @return 默认的配置文件
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected AppConfig generateDefaultConfig() {
|
|
||||||
return AppConfig.generateDefaultAppConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取配置文件名称
|
* 获取配置文件名称
|
||||||
@ -79,51 +63,16 @@ public class AppConfigController extends BaseConfigController<AppConfig> {
|
|||||||
return configDir;
|
return configDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConfigDir(String configDir) {
|
|
||||||
this.configDir = configDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取自动换行设置,默认自动换行。
|
* 创建配置文件实体
|
||||||
*
|
*
|
||||||
* @return true,自动换行;false,不自动换行
|
* @return 默认的配置文件实体
|
||||||
|
* @apiNote 返回默认的配置文件实体用于序列化json
|
||||||
*/
|
*/
|
||||||
public boolean getAutoLineConfig() {
|
@Override
|
||||||
return getConfig().isTextWrap();
|
public AppConfig generateDefaultConfig() {
|
||||||
}
|
AppConfig config = new AppConfig();
|
||||||
|
config.setRootPath(System.getProperty(DEFAULT_PROPERTY));
|
||||||
public void setAutoLineConfig(boolean isAutoLine) {
|
return config;
|
||||||
getConfig().setTextWrap(isAutoLine);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新配置文件中的语言设置。
|
|
||||||
*
|
|
||||||
* @param language 更新后的语言设置
|
|
||||||
*/
|
|
||||||
public void updateLanguage(String language) {
|
|
||||||
if (getLanguage().equals(language)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
getConfig().setLanguage(language);
|
|
||||||
writeConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当前的语言设置。
|
|
||||||
*
|
|
||||||
* @return 语言设置
|
|
||||||
*/
|
|
||||||
public String getLanguage() {
|
|
||||||
return getConfig().getLanguage();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取快捷键设置。
|
|
||||||
*
|
|
||||||
* @return 快捷键设置列表
|
|
||||||
*/
|
|
||||||
public List<ShortcutKey> getShortcutKey() {
|
|
||||||
return getConfig().getShortcutKey();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,8 +5,7 @@ import org.jcnc.jnotepad.plugin.api.core.controller.config.BaseConfigController;
|
|||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
import static org.jcnc.jnotepad.common.constants.AppConstants.DEFAULT_PROPERTY;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插件控制器
|
* 插件控制器
|
||||||
@ -24,8 +23,9 @@ public class PluginConfigController extends BaseConfigController<PluginConfig> {
|
|||||||
private String pluginsDir;
|
private String pluginsDir;
|
||||||
|
|
||||||
private PluginConfigController() {
|
private PluginConfigController() {
|
||||||
configDir = Paths.get(System.getProperty(DEFAULT_PROPERTY), ".jnotepad").toString();
|
String rootPath = AppConfigController.getInstance().getConfig().getRootPath();
|
||||||
setPluginsDir(Paths.get(System.getProperty(DEFAULT_PROPERTY), ".jnotepad", "plugins").toString());
|
configDir = Paths.get(rootPath, ".jnotepad", ROOT_CONFIG_DIR).toString();
|
||||||
|
setPluginsDir(Paths.get(rootPath, ".jnotepad", "plugins").toString());
|
||||||
loadConfig();
|
loadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,15 +43,6 @@ public class PluginConfigController extends BaseConfigController<PluginConfig> {
|
|||||||
return PluginConfig.class;
|
return PluginConfig.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成默认的配置文件
|
|
||||||
*
|
|
||||||
* @return 默认的配置文件
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected PluginConfig generateDefaultConfig() {
|
|
||||||
return PluginConfig.generateDefaultPluginConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取配置文件名称
|
* 获取配置文件名称
|
||||||
@ -73,6 +64,20 @@ public class PluginConfigController extends BaseConfigController<PluginConfig> {
|
|||||||
return configDir;
|
return configDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建配置文件实体
|
||||||
|
*
|
||||||
|
* @return 默认的配置文件实体
|
||||||
|
* @apiNote 返回默认的配置文件实体用于序列化json
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public PluginConfig generateDefaultConfig() {
|
||||||
|
PluginConfig pluginConfig = new PluginConfig();
|
||||||
|
pluginConfig.setPlugins(new ArrayList<>());
|
||||||
|
return pluginConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setConfigDir(String configDir) {
|
public void setConfigDir(String configDir) {
|
||||||
this.configDir = configDir;
|
this.configDir = configDir;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,166 @@
|
|||||||
|
package org.jcnc.jnotepad.controller.config;
|
||||||
|
|
||||||
|
import org.jcnc.jnotepad.app.config.UserConfig;
|
||||||
|
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
||||||
|
import org.jcnc.jnotepad.plugin.api.core.controller.config.BaseConfigController;
|
||||||
|
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.jcnc.jnotepad.common.constants.TextConstants.CHINESE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用程序配置控制器
|
||||||
|
*
|
||||||
|
* <p>该类负责管理应用程序的配置文件,包括加载、持久化和更新配置信息等操作。</p>
|
||||||
|
*
|
||||||
|
* @author songdragon
|
||||||
|
*/
|
||||||
|
public class UserConfigController extends BaseConfigController<UserConfig> {
|
||||||
|
/**
|
||||||
|
* 配置文件名
|
||||||
|
*/
|
||||||
|
public static final String CONFIG_NAME = "userConfig.json";
|
||||||
|
private static final String CTRL_N = "ctrl+n";
|
||||||
|
private static final String CTRL_O = "ctrl+o";
|
||||||
|
private static final String CTRL_S = "ctrl+s";
|
||||||
|
private static final String CTRL_ALT_S = "ctrl+alt+s";
|
||||||
|
private static final String ALT_S = "alt+s";
|
||||||
|
private static final UserConfigController INSTANCE = new UserConfigController();
|
||||||
|
private String configDir;
|
||||||
|
|
||||||
|
private UserConfigController() {
|
||||||
|
configDir = Paths.get(AppConfigController.getInstance().getConfig().getRootPath(), ".jnotepad", ROOT_CONFIG_DIR).toString();
|
||||||
|
loadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取 UserConfigController 的实例。
|
||||||
|
*
|
||||||
|
* @return UserConfigController 的实例
|
||||||
|
*/
|
||||||
|
public static UserConfigController getInstance() {
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建 ShortcutKey 对象。
|
||||||
|
*
|
||||||
|
* @param buttonName 按钮名称
|
||||||
|
* @param shortcutKeyValue 快捷键值
|
||||||
|
* @return ShortcutKey 对象
|
||||||
|
*/
|
||||||
|
private static ShortcutKey createShortcutKey(String buttonName, String shortcutKeyValue) {
|
||||||
|
ShortcutKey shortcutKey = new ShortcutKey();
|
||||||
|
shortcutKey.setButtonName(buttonName);
|
||||||
|
shortcutKey.setShortcutKeyValue(shortcutKeyValue);
|
||||||
|
return shortcutKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取配置文件Class类
|
||||||
|
*
|
||||||
|
* @return 配置文件Class类
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected Class<UserConfig> getConfigClass() {
|
||||||
|
return UserConfig.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取配置文件名称
|
||||||
|
*
|
||||||
|
* @return 配置文件名称
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected String getConfigName() {
|
||||||
|
return CONFIG_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取配置文件文件夹路径
|
||||||
|
*
|
||||||
|
* @return 配置文件夹路径
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected String getConfigDir() {
|
||||||
|
return configDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConfigDir(String configDir) {
|
||||||
|
this.configDir = configDir;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建配置文件实体
|
||||||
|
*
|
||||||
|
* @return 默认的配置文件实体
|
||||||
|
* @apiNote 返回默认的配置文件实体用于序列化json
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public UserConfig generateDefaultConfig() {
|
||||||
|
UserConfig config = new UserConfig();
|
||||||
|
config.setLanguage(CHINESE);
|
||||||
|
config.setTextWrap(false);
|
||||||
|
|
||||||
|
List<ShortcutKey> shortcutKeys = new ArrayList<>();
|
||||||
|
shortcutKeys.add(createShortcutKey("newItem", CTRL_N));
|
||||||
|
shortcutKeys.add(createShortcutKey("openItem", CTRL_O));
|
||||||
|
shortcutKeys.add(createShortcutKey("saveItem", CTRL_S));
|
||||||
|
shortcutKeys.add(createShortcutKey("saveAsItem", CTRL_ALT_S));
|
||||||
|
shortcutKeys.add(createShortcutKey("lineFeedItem", ""));
|
||||||
|
shortcutKeys.add(createShortcutKey("openConfigItem", ALT_S));
|
||||||
|
shortcutKeys.add(createShortcutKey("pluginManager", ""));
|
||||||
|
shortcutKeys.add(createShortcutKey("countItem", ""));
|
||||||
|
shortcutKeys.add(createShortcutKey("aboutItem", ""));
|
||||||
|
|
||||||
|
config.setShortcutKey(shortcutKeys);
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取自动换行设置,默认自动换行。
|
||||||
|
*
|
||||||
|
* @return true,自动换行;false,不自动换行
|
||||||
|
*/
|
||||||
|
public boolean getAutoLineConfig() {
|
||||||
|
return getConfig().isTextWrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAutoLineConfig(boolean isAutoLine) {
|
||||||
|
getConfig().setTextWrap(isAutoLine);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新配置文件中的语言设置。
|
||||||
|
*
|
||||||
|
* @param language 更新后的语言设置
|
||||||
|
*/
|
||||||
|
public void updateLanguage(String language) {
|
||||||
|
if (getLanguage().equals(language)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
getConfig().setLanguage(language);
|
||||||
|
writeConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前的语言设置。
|
||||||
|
*
|
||||||
|
* @return 语言设置
|
||||||
|
*/
|
||||||
|
public String getLanguage() {
|
||||||
|
return getConfig().getLanguage();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取快捷键设置。
|
||||||
|
*
|
||||||
|
* @return 快捷键设置列表
|
||||||
|
*/
|
||||||
|
public List<ShortcutKey> getShortcutKey() {
|
||||||
|
return getConfig().getShortcutKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.event.handler.menubar;
|
|||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import org.jcnc.jnotepad.common.util.LogUtil;
|
import org.jcnc.jnotepad.common.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ public class OpenConfig extends OpenFile {
|
|||||||
@Override
|
@Override
|
||||||
public void handle(ActionEvent actionEvent) {
|
public void handle(ActionEvent actionEvent) {
|
||||||
// 显示文件选择对话框,并获取配置文件
|
// 显示文件选择对话框,并获取配置文件
|
||||||
File file = AppConfigController.getInstance().getConfigPath().toFile();
|
File file = UserConfigController.getInstance().getConfigPath().toFile();
|
||||||
LogUtil.getLogger(this.getClass()).info("已调用打开配置文件功能, {}", file);
|
LogUtil.getLogger(this.getClass()).info("已调用打开配置文件功能, {}", file);
|
||||||
// 创建打开文件的任务并启动线程执行任务
|
// 创建打开文件的任务并启动线程执行任务
|
||||||
openFile(file);
|
openFile(file);
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import org.jcnc.jnotepad.common.constants.TextConstants;
|
|||||||
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
import org.jcnc.jnotepad.common.util.LogUtil;
|
import org.jcnc.jnotepad.common.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.common.util.UiUtil;
|
import org.jcnc.jnotepad.common.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
|
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
|
||||||
import org.jcnc.jnotepad.model.entity.Cache;
|
import org.jcnc.jnotepad.model.entity.Cache;
|
||||||
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
||||||
@ -20,7 +20,7 @@ import org.slf4j.Logger;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
import static org.jcnc.jnotepad.controller.config.AppConfigController.CONFIG_NAME;
|
import static org.jcnc.jnotepad.controller.config.UserConfigController.CONFIG_NAME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存文件事件处理程序。
|
* 保存文件事件处理程序。
|
||||||
@ -59,7 +59,7 @@ public class SaveFile implements EventHandler<ActionEvent> {
|
|||||||
// 如果该文件是配置文件,则刷新快捷键
|
// 如果该文件是配置文件,则刷新快捷键
|
||||||
if (CONFIG_NAME.equals(selectedTab.getText())) {
|
if (CONFIG_NAME.equals(selectedTab.getText())) {
|
||||||
// 重新加载语言包和快捷键
|
// 重新加载语言包和快捷键
|
||||||
AppConfigController.getInstance().loadConfig();
|
UserConfigController.getInstance().loadConfig();
|
||||||
TopMenuBarManager.getInstance().initShortcutKeys();
|
TopMenuBarManager.getInstance().initShortcutKeys();
|
||||||
LocalizationController.initLocal();
|
LocalizationController.initLocal();
|
||||||
logger.info("已刷新语言包!");
|
logger.info("已刷新语言包!");
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.i18n;
|
|||||||
|
|
||||||
import org.jcnc.jnotepad.LunchApp;
|
import org.jcnc.jnotepad.LunchApp;
|
||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
@ -37,10 +37,10 @@ public class LocalizationController {
|
|||||||
SUPPORT_LANGUAGES.put(Locale.ENGLISH, ENGLISH);
|
SUPPORT_LANGUAGES.put(Locale.ENGLISH, ENGLISH);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final AppConfigController appConfigController;
|
private final UserConfigController userConfigController;
|
||||||
|
|
||||||
private LocalizationController() {
|
private LocalizationController() {
|
||||||
this.appConfigController = AppConfigController.getInstance();
|
this.userConfigController = UserConfigController.getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -87,10 +87,10 @@ public class LocalizationController {
|
|||||||
* @return appConfig中的当前语言配置
|
* @return appConfig中的当前语言配置
|
||||||
*/
|
*/
|
||||||
public String getLanguage() {
|
public String getLanguage() {
|
||||||
return appConfigController.getLanguage();
|
return userConfigController.getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLanguage(String language) {
|
private void setLanguage(String language) {
|
||||||
appConfigController.updateLanguage(language);
|
userConfigController.updateLanguage(language);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,7 +40,7 @@ public class Controller implements ControllerAble {
|
|||||||
@Override
|
@Override
|
||||||
public void openAssociatedFileAndCreateTextArea(List<String> rawParameters) {
|
public void openAssociatedFileAndCreateTextArea(List<String> rawParameters) {
|
||||||
// 获取上次打开的页面
|
// 获取上次打开的页面
|
||||||
Optional<Object> cacheData = Optional.of(CACHE_MANAGER.getCacheData("tabs", "centerTabs"));
|
Optional<Object> cacheData = Optional.ofNullable(CACHE_MANAGER.getCacheData("tabs", "centerTabs"));
|
||||||
// 判空
|
// 判空
|
||||||
List<String> fileTab = (List<String>) cacheData.orElse(Collections.emptyList());
|
List<String> fileTab = (List<String>) cacheData.orElse(Collections.emptyList());
|
||||||
// 打开上次打开的标签页
|
// 打开上次打开的标签页
|
||||||
|
|||||||
@ -3,8 +3,8 @@ package org.jcnc.jnotepad.plugin.api.core.controller.config;
|
|||||||
import org.jcnc.jnotepad.common.util.JsonUtil;
|
import org.jcnc.jnotepad.common.util.JsonUtil;
|
||||||
import org.jcnc.jnotepad.common.util.LogUtil;
|
import org.jcnc.jnotepad.common.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.common.util.PopUpUtil;
|
import org.jcnc.jnotepad.common.util.PopUpUtil;
|
||||||
import org.jcnc.jnotepad.controller.interfaces.ConfigController;
|
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
import org.jcnc.jnotepad.exception.AppException;
|
||||||
|
import org.jcnc.jnotepad.plugin.api.core.controller.interfaces.ConfigController;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
@ -22,6 +22,8 @@ import java.nio.file.Paths;
|
|||||||
*/
|
*/
|
||||||
public abstract class BaseConfigController<T> implements ConfigController<T> {
|
public abstract class BaseConfigController<T> implements ConfigController<T> {
|
||||||
|
|
||||||
|
public static final String ROOT_CONFIG_DIR = "config";
|
||||||
|
|
||||||
protected T config;
|
protected T config;
|
||||||
Logger logger = LogUtil.getLogger(this.getClass());
|
Logger logger = LogUtil.getLogger(this.getClass());
|
||||||
|
|
||||||
@ -32,13 +34,6 @@ public abstract class BaseConfigController<T> implements ConfigController<T> {
|
|||||||
*/
|
*/
|
||||||
protected abstract Class<T> getConfigClass();
|
protected abstract Class<T> getConfigClass();
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成默认的配置文件
|
|
||||||
*
|
|
||||||
* @return 默认的配置文件
|
|
||||||
*/
|
|
||||||
protected abstract T generateDefaultConfig();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取配置文件名称
|
* 获取配置文件名称
|
||||||
*
|
*
|
||||||
@ -62,9 +57,6 @@ public abstract class BaseConfigController<T> implements ConfigController<T> {
|
|||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConfig(T config) {
|
|
||||||
this.config = config;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载配置文件内容
|
* 加载配置文件内容
|
||||||
@ -102,7 +94,7 @@ public abstract class BaseConfigController<T> implements ConfigController<T> {
|
|||||||
public void writeConfig(T config) {
|
public void writeConfig(T config) {
|
||||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(getConfigPath().toString()))) {
|
try (BufferedWriter writer = new BufferedWriter(new FileWriter(getConfigPath().toString()))) {
|
||||||
if (config == null) {
|
if (config == null) {
|
||||||
config = createConfigJson();
|
config = generateDefaultConfig();
|
||||||
}
|
}
|
||||||
writer.write(JsonUtil.toJsonString(config));
|
writer.write(JsonUtil.toJsonString(config));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -127,17 +119,6 @@ public abstract class BaseConfigController<T> implements ConfigController<T> {
|
|||||||
writeConfig(null);
|
writeConfig(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建配置文件json实体
|
|
||||||
*
|
|
||||||
* @return 默认的配置文件实体
|
|
||||||
* @apiNote 返回默认的配置文件实体用于序列化jso
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public T createConfigJson() {
|
|
||||||
return generateDefaultConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取配置文件路径
|
* 获取配置文件路径
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.controller.interfaces;
|
package org.jcnc.jnotepad.plugin.api.core.controller.interfaces;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
||||||
@ -31,12 +31,12 @@ public interface ConfigController<T> {
|
|||||||
void createConfigIfNotExists();
|
void createConfigIfNotExists();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建配置文件json实体
|
* 创建配置文件实体
|
||||||
*
|
*
|
||||||
* @return 默认的配置文件实体
|
* @return 默认的配置文件实体
|
||||||
* @apiNote 返回默认的配置文件实体用于序列化jso
|
* @apiNote 返回默认的配置文件实体用于序列化json
|
||||||
*/
|
*/
|
||||||
T createConfigJson();
|
T generateDefaultConfig();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取配置文件路径
|
* 获取配置文件路径
|
||||||
@ -6,7 +6,7 @@ import javafx.stage.Stage;
|
|||||||
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
import org.jcnc.jnotepad.common.util.FileUtil;
|
import org.jcnc.jnotepad.common.util.FileUtil;
|
||||||
import org.jcnc.jnotepad.common.util.PopUpUtil;
|
import org.jcnc.jnotepad.common.util.PopUpUtil;
|
||||||
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
||||||
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
||||||
@ -137,7 +137,7 @@ public class CenterTabPaneManager {
|
|||||||
if (selectedTab == null) {
|
if (selectedTab == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
selectedTab.setAutoLine(AppConfigController.getInstance().getAutoLineConfig());
|
selectedTab.setAutoLine(UserConfigController.getInstance().getAutoLineConfig());
|
||||||
bottomStatusBoxManager.updateWhenTabSelected();
|
bottomStatusBoxManager.updateWhenTabSelected();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -60,11 +60,9 @@ public class DirectorySidebarManager {
|
|||||||
if (Double.compare(roundedNumber, 0.0) != 0) {
|
if (Double.compare(roundedNumber, 0.0) != 0) {
|
||||||
// 收缩分割条 收缩文件树
|
// 收缩分割条 收缩文件树
|
||||||
center.setDividerPositions(0.0);
|
center.setDividerPositions(0.0);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 展开分割条,文件树
|
// 展开分割条,文件树
|
||||||
center.setDividerPositions(LAST_DIVIDER_POSITION);
|
center.setDividerPositions(LAST_DIVIDER_POSITION);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,6 +80,12 @@ public class DirectorySidebarManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置文件树项监听事件
|
||||||
|
*
|
||||||
|
* @param item 文件树项
|
||||||
|
* @return 监听事件
|
||||||
|
*/
|
||||||
private static ChangeListener<Boolean> getTreeItemListener(TreeItem<DirFileModel> item) {
|
private static ChangeListener<Boolean> getTreeItemListener(TreeItem<DirFileModel> item) {
|
||||||
return (observable, oldValue, newValue) -> {
|
return (observable, oldValue, newValue) -> {
|
||||||
if (Boolean.TRUE.equals(newValue)) {
|
if (Boolean.TRUE.equals(newValue)) {
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import javafx.stage.Stage;
|
|||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
import org.jcnc.jnotepad.common.util.LogUtil;
|
import org.jcnc.jnotepad.common.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.common.util.UiUtil;
|
import org.jcnc.jnotepad.common.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.menubar.*;
|
import org.jcnc.jnotepad.controller.event.handler.menubar.*;
|
||||||
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
|
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
|
||||||
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
||||||
@ -44,7 +44,7 @@ public class TopMenuBarManager extends AbstractManager<Menu> {
|
|||||||
|
|
||||||
private final Map<String, RadioMenuItem> languageMenuItems = new HashMap<>();
|
private final Map<String, RadioMenuItem> languageMenuItems = new HashMap<>();
|
||||||
Logger logger = LogUtil.getLogger(this.getClass());
|
Logger logger = LogUtil.getLogger(this.getClass());
|
||||||
AppConfigController appConfigController = AppConfigController.getInstance();
|
UserConfigController userConfigController = UserConfigController.getInstance();
|
||||||
|
|
||||||
private TopMenuBarManager() {
|
private TopMenuBarManager() {
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ public class TopMenuBarManager extends AbstractManager<Menu> {
|
|||||||
// 初始化语言菜单
|
// 初始化语言菜单
|
||||||
initLanguageMenu();
|
initLanguageMenu();
|
||||||
// 设置当前语言选中状态
|
// 设置当前语言选中状态
|
||||||
toggleLanguageCheck(appConfigController.getLanguage());
|
toggleLanguageCheck(userConfigController.getLanguage());
|
||||||
// 初始化设置菜单
|
// 初始化设置菜单
|
||||||
initSettingMenu();
|
initSettingMenu();
|
||||||
// 初始化设置菜单
|
// 初始化设置菜单
|
||||||
@ -101,7 +101,7 @@ public class TopMenuBarManager extends AbstractManager<Menu> {
|
|||||||
// 设置菜单
|
// 设置菜单
|
||||||
registerSetMenuItem(topMenuBar.getLineFeedItem(), WORD_WRAP, "lineFeedItem", (observableValue, before, after) -> {
|
registerSetMenuItem(topMenuBar.getLineFeedItem(), WORD_WRAP, "lineFeedItem", (observableValue, before, after) -> {
|
||||||
// 1. 更新全局配置
|
// 1. 更新全局配置
|
||||||
AppConfigController.getInstance().setAutoLineConfig(after);
|
UserConfigController.getInstance().setAutoLineConfig(after);
|
||||||
// 2. 对当前tab生效配置
|
// 2. 对当前tab生效配置
|
||||||
CenterTabPaneManager.getInstance().fireTabSelected();
|
CenterTabPaneManager.getInstance().fireTabSelected();
|
||||||
});
|
});
|
||||||
@ -273,7 +273,7 @@ public class TopMenuBarManager extends AbstractManager<Menu> {
|
|||||||
*/
|
*/
|
||||||
public void initShortcutKeys() {
|
public void initShortcutKeys() {
|
||||||
List<MenuItem> itemsToUnbind = new ArrayList<>();
|
List<MenuItem> itemsToUnbind = new ArrayList<>();
|
||||||
List<ShortcutKey> shortcutKeyConfigs = appConfigController.getShortcutKey();
|
List<ShortcutKey> shortcutKeyConfigs = userConfigController.getShortcutKey();
|
||||||
for (ShortcutKey shortcutKey : shortcutKeyConfigs) {
|
for (ShortcutKey shortcutKey : shortcutKeyConfigs) {
|
||||||
// 保证json的key必须和变量名一致
|
// 保证json的key必须和变量名一致
|
||||||
MenuItem menuItem = topMenuBar.getItemMap().get(shortcutKey.getButtonName());
|
MenuItem menuItem = topMenuBar.getItemMap().get(shortcutKey.getButtonName());
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package org.jcnc.jnotepad.views.root.center.main.center.tab;
|
|||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
import org.fxmisc.flowless.VirtualizedScrollPane;
|
import org.fxmisc.flowless.VirtualizedScrollPane;
|
||||||
import org.jcnc.jnotepad.common.util.LogUtil;
|
import org.jcnc.jnotepad.common.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
||||||
import org.jcnc.jnotepad.views.manager.BottomStatusBoxManager;
|
import org.jcnc.jnotepad.views.manager.BottomStatusBoxManager;
|
||||||
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
||||||
@ -51,7 +51,7 @@ public class CenterTab extends Tab {
|
|||||||
lineNumberTextArea = textArea;
|
lineNumberTextArea = textArea;
|
||||||
initTextAreaListeners();
|
initTextAreaListeners();
|
||||||
this.setContent(new VirtualizedScrollPane<>(lineNumberTextArea));
|
this.setContent(new VirtualizedScrollPane<>(lineNumberTextArea));
|
||||||
setAutoLine(AppConfigController.getInstance().getAutoLineConfig());
|
setAutoLine(UserConfigController.getInstance().getAutoLineConfig());
|
||||||
this.charset = charset;
|
this.charset = charset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,9 +9,9 @@
|
|||||||
<!-- 文件保留时间 -->
|
<!-- 文件保留时间 -->
|
||||||
<property name="log.maxHistory" value="30"/>
|
<property name="log.maxHistory" value="30"/>
|
||||||
<!-- 日志存储路径 -->
|
<!-- 日志存储路径 -->
|
||||||
<property name="log.filePath" value="logs"/>
|
<!--<property name="log.filePath" value="logs"/>-->
|
||||||
<!--发布时,请使用下方的路径-->
|
<!--发布时,请使用下方的路径-->
|
||||||
<!--<property name="log.filePath" value="${user.home}/.jnotepad/logs"/>-->
|
<property name="log.filePath" value="${user.home}/.jnotepad/logs"/>
|
||||||
<!-- 日志的显式格式 -->
|
<!-- 日志的显式格式 -->
|
||||||
<property name="log.pattern"
|
<property name="log.pattern"
|
||||||
value="时间:[%d{yyyy-MM-dd HH:mm:ss.SSS}] 线程:[%thread] 日志级别:[%-5level] 调用位置:[%logger{50} 参见:[\(%F:%L\)]] - 日志信息:[%msg]%n">
|
value="时间:[%d{yyyy-MM-dd HH:mm:ss.SSS}] 线程:[%thread] 日志级别:[%-5level] 调用位置:[%logger{50} 参见:[\(%F:%L\)]] - 日志信息:[%msg]%n">
|
||||||
|
|||||||
11
tool/jpackage.sh
Normal file
11
tool/jpackage.sh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
jpackage \
|
||||||
|
--name JNotepad \
|
||||||
|
--type app-image \
|
||||||
|
-m org.jcnc.jnotepad/org.jcnc.jnotepad.LunchApp \
|
||||||
|
--runtime-image ./target/JNotepad/ \
|
||||||
|
--icon src/main/resources/img/icon.ico \
|
||||||
|
--app-version 1.1.13 \
|
||||||
|
--vendor "JCNC"
|
||||||
Loading…
x
Reference in New Issue
Block a user