重构项目的UI为component
重构项目整体结构
This commit is contained in:
parent
70a9538e2c
commit
87c90072f8
@ -21,7 +21,7 @@ module org.jcnc.jnotepad {
|
|||||||
requires javafx.web;
|
requires javafx.web;
|
||||||
|
|
||||||
exports org.jcnc.jnotepad;
|
exports org.jcnc.jnotepad;
|
||||||
exports org.jcnc.jnotepad.model.enums;
|
exports org.jcnc.jnotepad.cache.enums;
|
||||||
exports org.jcnc.jnotepad.app.config;
|
exports org.jcnc.jnotepad.app.config;
|
||||||
exports org.jcnc.jnotepad.app.i18n;
|
exports org.jcnc.jnotepad.app.i18n;
|
||||||
exports org.jcnc.jnotepad.common.constants;
|
exports org.jcnc.jnotepad.common.constants;
|
||||||
@ -30,18 +30,20 @@ module org.jcnc.jnotepad {
|
|||||||
exports org.jcnc.jnotepad.controller.i18n;
|
exports org.jcnc.jnotepad.controller.i18n;
|
||||||
exports org.jcnc.jnotepad.controller.event.handler.setting;
|
exports org.jcnc.jnotepad.controller.event.handler.setting;
|
||||||
exports org.jcnc.jnotepad.controller.event.handler.menuitem;
|
exports org.jcnc.jnotepad.controller.event.handler.menuitem;
|
||||||
exports org.jcnc.jnotepad.api.util;
|
exports org.jcnc.jnotepad.component.module.interfaces;
|
||||||
exports org.jcnc.jnotepad.common.interfaces;
|
|
||||||
opens org.jcnc.jnotepad.app.config;
|
opens org.jcnc.jnotepad.app.config;
|
||||||
exports org.jcnc.jnotepad.plugin.interfaces;
|
exports org.jcnc.jnotepad.plugin.interfaces;
|
||||||
exports org.jcnc.jnotepad.views.root.bottom.function;
|
exports org.jcnc.jnotepad.views.root.bottom.function;
|
||||||
exports org.jcnc.jnotepad.ui.dialog;
|
|
||||||
exports org.jcnc.jnotepad.ui.dialog.interfaces;
|
exports org.jcnc.jnotepad.component.module;
|
||||||
exports org.jcnc.jnotepad.ui.module;
|
exports org.jcnc.jnotepad.cache.entity;
|
||||||
exports org.jcnc.jnotepad.model.entity;
|
|
||||||
exports org.jcnc.jnotepad.views.root.bottom;
|
exports org.jcnc.jnotepad.views.root.bottom;
|
||||||
exports org.jcnc.jnotepad.views.root.bottom.status;
|
exports org.jcnc.jnotepad.views.root.bottom.status;
|
||||||
exports org.jcnc.jnotepad.api.core.views.sidebar.bottom;
|
exports org.jcnc.jnotepad.api.core.views.sidebar.bottom;
|
||||||
exports org.jcnc.jnotepad.api.core.controller.config;
|
exports org.jcnc.jnotepad.api.core.controller.config;
|
||||||
|
exports org.jcnc.jnotepad.component.module.base;
|
||||||
|
exports org.jcnc.jnotepad.component.stage.setting;
|
||||||
|
exports org.jcnc.jnotepad.component.module.vbox;
|
||||||
|
exports org.jcnc.jnotepad.component.module.hbox;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2,8 +2,8 @@ package org.jcnc.jnotepad;
|
|||||||
|
|
||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.app.manager.ApplicationManager;
|
import org.jcnc.jnotepad.app.manager.ApplicationManager;
|
||||||
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
package org.jcnc.jnotepad.api.core.controller.config;
|
package org.jcnc.jnotepad.api.core.controller.config;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.api.core.controller.interfaces.ConfigController;
|
import org.jcnc.jnotepad.api.core.controller.interfaces.ConfigController;
|
||||||
import org.jcnc.jnotepad.api.util.JsonUtil;
|
import org.jcnc.jnotepad.controller.exception.AppException;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
import org.jcnc.jnotepad.util.JsonUtil;
|
||||||
import org.jcnc.jnotepad.api.util.PopUpUtil;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
import org.jcnc.jnotepad.util.PopUpUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.api.core.manager;
|
package org.jcnc.jnotepad.api.core.manager;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.model.entity.Cache;
|
import org.jcnc.jnotepad.cache.entity.Cache;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,8 @@ import javafx.scene.control.CheckMenuItem;
|
|||||||
import javafx.scene.control.Menu;
|
import javafx.scene.control.Menu;
|
||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import javafx.scene.control.RadioMenuItem;
|
import javafx.scene.control.RadioMenuItem;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
|
import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.app.config;
|
package org.jcnc.jnotepad.app.config;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
|
import org.jcnc.jnotepad.cache.entity.PluginDescriptor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package org.jcnc.jnotepad.app.config;
|
package org.jcnc.jnotepad.app.config;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
import org.jcnc.jnotepad.cache.entity.ShortcutKey;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@ -8,8 +8,6 @@ import javafx.scene.layout.Pane;
|
|||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import javafx.stage.Window;
|
import javafx.stage.Window;
|
||||||
import org.jcnc.jnotepad.LunchApp;
|
import org.jcnc.jnotepad.LunchApp;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
import org.jcnc.jnotepad.common.constants.AppConstants;
|
import org.jcnc.jnotepad.common.constants.AppConstants;
|
||||||
import org.jcnc.jnotepad.common.constants.TextConstants;
|
import org.jcnc.jnotepad.common.constants.TextConstants;
|
||||||
@ -20,6 +18,8 @@ import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
|||||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
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.util.LogUtil;
|
||||||
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.views.manager.*;
|
import org.jcnc.jnotepad.views.manager.*;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.model.entity;
|
package org.jcnc.jnotepad.cache.entity;
|
||||||
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.model.entity;
|
package org.jcnc.jnotepad.cache.entity;
|
||||||
|
|
||||||
import org.kordamp.ikonli.javafx.FontIcon;
|
import org.kordamp.ikonli.javafx.FontIcon;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.model.entity;
|
package org.jcnc.jnotepad.cache.entity;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import org.jcnc.jnotepad.plugin.interfaces.Plugin;
|
import org.jcnc.jnotepad.plugin.interfaces.Plugin;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.model.entity;
|
package org.jcnc.jnotepad.cache.entity;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.model.enums;
|
package org.jcnc.jnotepad.cache.enums;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缓存过期时间枚举
|
* 缓存过期时间枚举
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.model.enums;
|
package org.jcnc.jnotepad.cache.enums;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对话框类型
|
* 对话框类型
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.common.manager;
|
package org.jcnc.jnotepad.common.manager;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.module;
|
package org.jcnc.jnotepad.component.module;
|
||||||
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
@ -6,7 +6,6 @@ import javafx.scene.control.ContextMenu;
|
|||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import javafx.scene.input.KeyCode;
|
import javafx.scene.input.KeyCode;
|
||||||
import javafx.scene.input.KeyEvent;
|
import javafx.scene.input.KeyEvent;
|
||||||
import org.fxmisc.richtext.CodeArea;
|
|
||||||
import org.fxmisc.richtext.GenericStyledArea;
|
import org.fxmisc.richtext.GenericStyledArea;
|
||||||
import org.fxmisc.richtext.LineNumberFactory;
|
import org.fxmisc.richtext.LineNumberFactory;
|
||||||
import org.fxmisc.richtext.model.Paragraph;
|
import org.fxmisc.richtext.model.Paragraph;
|
||||||
@ -31,7 +30,7 @@ import java.util.regex.Pattern;
|
|||||||
*
|
*
|
||||||
* @author luke
|
* @author luke
|
||||||
*/
|
*/
|
||||||
public class LineNumberTextArea extends CodeArea {
|
public class CodeArea extends org.fxmisc.richtext.CodeArea {
|
||||||
|
|
||||||
private static final String[] KEYWORDS = new String[]{
|
private static final String[] KEYWORDS = new String[]{
|
||||||
"abstract", "assert", "boolean", "break", "byte",
|
"abstract", "assert", "boolean", "break", "byte",
|
||||||
@ -80,7 +79,7 @@ public class LineNumberTextArea extends CodeArea {
|
|||||||
* <p>
|
* <p>
|
||||||
* 用于创建 LineNumberTextArea 对象
|
* 用于创建 LineNumberTextArea 对象
|
||||||
*/
|
*/
|
||||||
public LineNumberTextArea() {
|
public CodeArea() {
|
||||||
// 上、右、下、左
|
// 上、右、下、左
|
||||||
this.setPadding(new Insets(8, 0, 0, 0));
|
this.setPadding(new Insets(8, 0, 0, 0));
|
||||||
|
|
||||||
@ -98,7 +97,7 @@ public class LineNumberTextArea extends CodeArea {
|
|||||||
|
|
||||||
this.getVisibleParagraphs().addModificationObserver
|
this.getVisibleParagraphs().addModificationObserver
|
||||||
(
|
(
|
||||||
new LineNumberTextArea.VisibleParagraphStyler<>(this, this::computeHighlighting)
|
new CodeArea.VisibleParagraphStyler<>(this, this::computeHighlighting)
|
||||||
);
|
);
|
||||||
|
|
||||||
// 自动缩进:在按下回车键时插入上一行的缩进
|
// 自动缩进:在按下回车键时插入上一行的缩进
|
||||||
@ -209,19 +208,19 @@ public class LineNumberTextArea extends CodeArea {
|
|||||||
* 折叠多行所选文本,仅显示第一行并隐藏其余部分。
|
* 折叠多行所选文本,仅显示第一行并隐藏其余部分。
|
||||||
*/
|
*/
|
||||||
private void fold() {
|
private void fold() {
|
||||||
((CodeArea) getOwnerNode()).foldSelectedParagraphs();
|
((org.fxmisc.richtext.CodeArea) getOwnerNode()).foldSelectedParagraphs();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 展开当前行/段落(如果有折叠)。
|
* 展开当前行/段落(如果有折叠)。
|
||||||
*/
|
*/
|
||||||
private void unfold() {
|
private void unfold() {
|
||||||
CodeArea area = (CodeArea) getOwnerNode();
|
org.fxmisc.richtext.CodeArea area = (org.fxmisc.richtext.CodeArea) getOwnerNode();
|
||||||
area.unfoldParagraphs(area.getCurrentParagraph());
|
area.unfoldParagraphs(area.getCurrentParagraph());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void print() {
|
private void print() {
|
||||||
System.out.println(((CodeArea) getOwnerNode()).getText());
|
System.out.println(((org.fxmisc.richtext.CodeArea) getOwnerNode()).getText());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package org.jcnc.jnotepad.ui.module;
|
package org.jcnc.jnotepad.component.module.base;
|
||||||
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
import org.jcnc.jnotepad.common.interfaces.BorderPaneAble;
|
import org.jcnc.jnotepad.component.module.interfaces.BorderPaneAble;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 抽象边界面板类
|
* 抽象边界面板类
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package org.jcnc.jnotepad.ui.module;
|
package org.jcnc.jnotepad.component.module.base;
|
||||||
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import org.jcnc.jnotepad.common.interfaces.HorizontalBoxAble;
|
import org.jcnc.jnotepad.component.module.interfaces.HorizontalBoxAble;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 抽象水平盒子类
|
* 抽象水平盒子类
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package org.jcnc.jnotepad.ui.module;
|
package org.jcnc.jnotepad.component.module.base;
|
||||||
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import org.jcnc.jnotepad.common.interfaces.VerticalBoxAble;
|
import org.jcnc.jnotepad.component.module.interfaces.VerticalBoxAble;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 抽象垂直盒子类
|
* 抽象垂直盒子类
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.titlebar;
|
package org.jcnc.jnotepad.component.module.hbox;
|
||||||
|
|
||||||
import javafx.animation.TranslateTransition;
|
import javafx.animation.TranslateTransition;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
@ -16,10 +16,10 @@ import javafx.util.Duration;
|
|||||||
*
|
*
|
||||||
* @author 许轲
|
* @author 许轲
|
||||||
*/
|
*/
|
||||||
public class CustomTitleBar extends HBox {
|
public class CustomTitleBarBox extends HBox {
|
||||||
private static CustomTitleBar instance;
|
private static CustomTitleBarBox instance;
|
||||||
|
|
||||||
public CustomTitleBar() {
|
public CustomTitleBarBox() {
|
||||||
// 设置样式和布局
|
// 设置样式和布局
|
||||||
this.setAlignment(Pos.CENTER);
|
this.setAlignment(Pos.CENTER);
|
||||||
|
|
||||||
@ -69,9 +69,9 @@ public class CustomTitleBar extends HBox {
|
|||||||
*
|
*
|
||||||
* @return CustomTitleBar的单例实例
|
* @return CustomTitleBar的单例实例
|
||||||
*/
|
*/
|
||||||
public static CustomTitleBar getInstance() {
|
public static CustomTitleBarBox getInstance() {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
instance = new CustomTitleBar();
|
instance = new CustomTitleBarBox();
|
||||||
}
|
}
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.common.interfaces;
|
package org.jcnc.jnotepad.component.module.interfaces;
|
||||||
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.common.interfaces;
|
package org.jcnc.jnotepad.component.module.interfaces;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.common.interfaces;
|
package org.jcnc.jnotepad.component.module.interfaces;
|
||||||
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.common.interfaces;
|
package org.jcnc.jnotepad.component.module.interfaces;
|
||||||
|
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui;
|
package org.jcnc.jnotepad.component.module.vbox;
|
||||||
|
|
||||||
import javafx.animation.KeyFrame;
|
import javafx.animation.KeyFrame;
|
||||||
import javafx.animation.Timeline;
|
import javafx.animation.Timeline;
|
||||||
@ -10,7 +10,7 @@ import javafx.scene.layout.Priority;
|
|||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.util.Duration;
|
import javafx.util.Duration;
|
||||||
import org.fxmisc.richtext.StyleClassedTextArea;
|
import org.fxmisc.richtext.StyleClassedTextArea;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
@ -20,7 +20,7 @@ import java.nio.charset.Charset;
|
|||||||
*
|
*
|
||||||
* @author luke
|
* @author luke
|
||||||
*/
|
*/
|
||||||
public class CmdTerminal extends VBox {
|
public class CmdTerminalBox extends VBox {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用于显示命令输出的文本区域
|
* 用于显示命令输出的文本区域
|
||||||
@ -44,7 +44,7 @@ public class CmdTerminal extends VBox {
|
|||||||
/**
|
/**
|
||||||
* 创建CmdTerminal对象的构造函数。
|
* 创建CmdTerminal对象的构造函数。
|
||||||
*/
|
*/
|
||||||
public CmdTerminal() {
|
public CmdTerminalBox() {
|
||||||
// 创建UI元素
|
// 创建UI元素
|
||||||
cmdOutput = new StyleClassedTextArea();
|
cmdOutput = new StyleClassedTextArea();
|
||||||
cmdInput = new TextField();
|
cmdInput = new TextField();
|
||||||
@ -1,13 +1,13 @@
|
|||||||
package org.jcnc.jnotepad.ui.dialog;
|
package org.jcnc.jnotepad.component.stage.dialog;
|
||||||
|
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
import javafx.stage.Modality;
|
import javafx.stage.Modality;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
import org.jcnc.jnotepad.cache.enums.DialogType;
|
||||||
import org.jcnc.jnotepad.model.enums.DialogType;
|
import org.jcnc.jnotepad.component.stage.dialog.interfaces.DialogButtonAction;
|
||||||
import org.jcnc.jnotepad.ui.dialog.interfaces.DialogButtonAction;
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.kordamp.ikonli.javafx.FontIcon;
|
import org.kordamp.ikonli.javafx.FontIcon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,7 +16,7 @@ import org.kordamp.ikonli.javafx.FontIcon;
|
|||||||
* @author gewuyou
|
* @author gewuyou
|
||||||
*/
|
*/
|
||||||
public class AppDialogBuilder {
|
public class AppDialogBuilder {
|
||||||
private AppDialog appDialog;
|
private AppDialogStage appDialogStage;
|
||||||
private Image appIcon = UiUtil.getAppIcon();
|
private Image appIcon = UiUtil.getAppIcon();
|
||||||
private String title;
|
private String title;
|
||||||
private String headerText;
|
private String headerText;
|
||||||
@ -87,9 +87,9 @@ public class AppDialogBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public AppDialog build() {
|
public AppDialogStage build() {
|
||||||
appDialog = new AppDialog(this);
|
appDialogStage = new AppDialogStage(this);
|
||||||
return appDialog;
|
return appDialogStage;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -280,7 +280,7 @@ public class AppDialogBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getHBoxSpacing() {
|
public double getBoxSpacing() {
|
||||||
return hBoxSpacing;
|
return hBoxSpacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.dialog;
|
package org.jcnc.jnotepad.component.stage.dialog;
|
||||||
|
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
@ -7,7 +7,7 @@ import javafx.scene.layout.BorderPane;
|
|||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.ui.dialog.interfaces.DialogButtonAction;
|
import org.jcnc.jnotepad.component.stage.dialog.interfaces.DialogButtonAction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用对话框
|
* 应用对话框
|
||||||
@ -16,13 +16,13 @@ import org.jcnc.jnotepad.ui.dialog.interfaces.DialogButtonAction;
|
|||||||
*
|
*
|
||||||
* @author luke gewuyou
|
* @author luke gewuyou
|
||||||
*/
|
*/
|
||||||
public class AppDialog extends Stage {
|
public class AppDialogStage extends Stage {
|
||||||
/**
|
/**
|
||||||
* 构造一个自定义提示框
|
* 构造一个自定义提示框
|
||||||
*
|
*
|
||||||
* @param builder 提示框构建器
|
* @param builder 提示框构建器
|
||||||
*/
|
*/
|
||||||
public AppDialog(
|
public AppDialogStage(
|
||||||
AppDialogBuilder builder) {
|
AppDialogBuilder builder) {
|
||||||
// 设置窗口图标
|
// 设置窗口图标
|
||||||
this.getIcons().add(builder.getAppIcon());
|
this.getIcons().add(builder.getAppIcon());
|
||||||
@ -46,7 +46,7 @@ public class AppDialog extends Stage {
|
|||||||
BorderPane borderPane = new BorderPane();
|
BorderPane borderPane = new BorderPane();
|
||||||
HBox iconBox = new HBox(builder.getIcon());
|
HBox iconBox = new HBox(builder.getIcon());
|
||||||
iconBox.setPadding(builder.getIconCoxPaddingInsets());
|
iconBox.setPadding(builder.getIconCoxPaddingInsets());
|
||||||
VBox vbox = new VBox(builder.getHBoxSpacing());
|
VBox vbox = new VBox(builder.getBoxSpacing());
|
||||||
vbox.setAlignment(builder.getVboxPos());
|
vbox.setAlignment(builder.getVboxPos());
|
||||||
|
|
||||||
Label label = new Label(builder.getHeaderText());
|
Label label = new Label(builder.getHeaderText());
|
||||||
@ -57,7 +57,7 @@ public class AppDialog extends Stage {
|
|||||||
Button confirmButton = createButton(builder.getLeftBtnText(), builder.getLeftBtnAction());
|
Button confirmButton = createButton(builder.getLeftBtnText(), builder.getLeftBtnAction());
|
||||||
Button cancelButton = createButton(builder.getRightBtnText(), builder.getRightBtnAction());
|
Button cancelButton = createButton(builder.getRightBtnText(), builder.getRightBtnAction());
|
||||||
|
|
||||||
HBox hBox = new HBox(builder.getHBoxSpacing(), confirmButton, cancelButton);
|
HBox hBox = new HBox(builder.getBoxSpacing(), confirmButton, cancelButton);
|
||||||
hBox.setAlignment(builder.getHboxPos());
|
hBox.setAlignment(builder.getHboxPos());
|
||||||
hBox.setPadding(builder.gethBoxPaddingInsets());
|
hBox.setPadding(builder.gethBoxPaddingInsets());
|
||||||
vbox.getChildren().addAll(label, customTextLabel, hBox);
|
vbox.getChildren().addAll(label, customTextLabel, hBox);
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.dialog.factory;
|
package org.jcnc.jnotepad.component.stage.dialog.factory;
|
||||||
|
|
||||||
import javafx.stage.DirectoryChooser;
|
import javafx.stage.DirectoryChooser;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.dialog.factory;
|
package org.jcnc.jnotepad.component.stage.dialog.factory;
|
||||||
|
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
package org.jcnc.jnotepad.ui.dialog.factory.impl;
|
package org.jcnc.jnotepad.component.stage.dialog.factory.impl;
|
||||||
|
|
||||||
import javafx.stage.DirectoryChooser;
|
import javafx.stage.DirectoryChooser;
|
||||||
import org.jcnc.jnotepad.ui.dialog.factory.DirectoryChooserFactory;
|
import org.jcnc.jnotepad.component.stage.dialog.factory.DirectoryChooserFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
package org.jcnc.jnotepad.ui.dialog.factory.impl;
|
package org.jcnc.jnotepad.component.stage.dialog.factory.impl;
|
||||||
|
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
import org.jcnc.jnotepad.ui.dialog.factory.FileChooserFactory;
|
import org.jcnc.jnotepad.component.stage.dialog.factory.FileChooserFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.ui.dialog.interfaces;
|
package org.jcnc.jnotepad.component.stage.dialog.interfaces;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.ui.dialog.AppDialog;
|
import org.jcnc.jnotepad.component.stage.dialog.AppDialogStage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对话框按钮点击事件接口
|
* 对话框按钮点击事件接口
|
||||||
@ -10,10 +10,10 @@ import org.jcnc.jnotepad.ui.dialog.AppDialog;
|
|||||||
public interface DialogButtonAction {
|
public interface DialogButtonAction {
|
||||||
/**
|
/**
|
||||||
* 处理按钮的操作。子类必须实现此方法以定义按钮的行为
|
* 处理按钮的操作。子类必须实现此方法以定义按钮的行为
|
||||||
* @param appDialog 对话框
|
* @param appDialogStage 对话框
|
||||||
* @apiNote
|
* @apiNote
|
||||||
* @since 2023/9/3 22:53
|
* @since 2023/9/3 22:53
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void handleAction(AppDialog appDialog);
|
void handleAction(AppDialogStage appDialogStage);
|
||||||
}
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.module;
|
package org.jcnc.jnotepad.component.stage.setting;
|
||||||
|
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.setstage;
|
package org.jcnc.jnotepad.component.stage.setting;
|
||||||
|
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
@ -7,10 +7,10 @@ import javafx.scene.control.Label;
|
|||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.PopUpUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.app.manager.ApplicationManager;
|
import org.jcnc.jnotepad.app.manager.ApplicationManager;
|
||||||
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
import org.jcnc.jnotepad.util.PopUpUtil;
|
||||||
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.setstage;
|
package org.jcnc.jnotepad.component.stage.setting;
|
||||||
|
|
||||||
import atlantafx.base.controls.Notification;
|
import atlantafx.base.controls.Notification;
|
||||||
import atlantafx.base.theme.Styles;
|
import atlantafx.base.theme.Styles;
|
||||||
@ -18,8 +18,8 @@ import javafx.scene.layout.HBox;
|
|||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.core.ui.stage.AbstractPaneStage;
|
import org.jcnc.jnotepad.api.core.ui.stage.AbstractPaneStage;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.views.manager.RootManager;
|
import org.jcnc.jnotepad.views.manager.RootManager;
|
||||||
|
|
||||||
import static org.jcnc.jnotepad.common.constants.AppConstants.*;
|
import static org.jcnc.jnotepad.common.constants.AppConstants.*;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.module;
|
package org.jcnc.jnotepad.component.stage.setting;
|
||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
@ -26,7 +26,7 @@ import javafx.scene.layout.VBox;
|
|||||||
* @author luke
|
* @author luke
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public class SettingsComponent extends VBox {
|
public class SetDevBox extends VBox {
|
||||||
private final Label label;
|
private final Label label;
|
||||||
private final Button button;
|
private final Button button;
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ public class SettingsComponent extends VBox {
|
|||||||
* @param labelText 标签文本
|
* @param labelText 标签文本
|
||||||
* @param buttonText 按钮文本
|
* @param buttonText 按钮文本
|
||||||
*/
|
*/
|
||||||
public SettingsComponent(String labelText, String buttonText) {
|
public SetDevBox(String labelText, String buttonText) {
|
||||||
setSpacing(10);
|
setSpacing(10);
|
||||||
|
|
||||||
// 初始化标签
|
// 初始化标签
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.setstage;
|
package org.jcnc.jnotepad.component.stage.setting;
|
||||||
|
|
||||||
import atlantafx.base.controls.CustomTextField;
|
import atlantafx.base.controls.CustomTextField;
|
||||||
import atlantafx.base.theme.Styles;
|
import atlantafx.base.theme.Styles;
|
||||||
@ -16,10 +16,8 @@ import javafx.scene.text.Font;
|
|||||||
import javafx.scene.text.Text;
|
import javafx.scene.text.Text;
|
||||||
import javafx.stage.Modality;
|
import javafx.stage.Modality;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.plugin.PluginManagerInterface;
|
import org.jcnc.jnotepad.plugin.PluginManagerInterface;
|
||||||
import org.jcnc.jnotepad.ui.module.CustomSetButton;
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.ui.module.SettingsComponent;
|
|
||||||
|
|
||||||
import static org.jcnc.jnotepad.common.constants.AppConstants.SCREEN_LENGTH;
|
import static org.jcnc.jnotepad.common.constants.AppConstants.SCREEN_LENGTH;
|
||||||
import static org.jcnc.jnotepad.common.constants.AppConstants.SCREEN_WIDTH;
|
import static org.jcnc.jnotepad.common.constants.AppConstants.SCREEN_WIDTH;
|
||||||
@ -198,7 +196,7 @@ public class SetStage extends Stage {
|
|||||||
VBox generalLayout = new VBox(10);
|
VBox generalLayout = new VBox(10);
|
||||||
generalLayout.setPadding(new Insets(25));
|
generalLayout.setPadding(new Insets(25));
|
||||||
|
|
||||||
SettingsComponent devBox = new SettingsComponent("打开开发者调试页面", DEVELOPER_DEBUG_PAGE);
|
SetDevBox devBox = new SetDevBox("打开开发者调试页面", DEVELOPER_DEBUG_PAGE);
|
||||||
devBox.setButtonAction(event -> {
|
devBox.setButtonAction(event -> {
|
||||||
// 创建并启动DeveloperDebugPage
|
// 创建并启动DeveloperDebugPage
|
||||||
DeveloperDebugStage debugPage = new DeveloperDebugStage();
|
DeveloperDebugStage debugPage = new DeveloperDebugStage();
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.setstage.pluginstage;
|
package org.jcnc.jnotepad.component.stage.setting.plugin;
|
||||||
|
|
||||||
import javafx.geometry.Orientation;
|
import javafx.geometry.Orientation;
|
||||||
import javafx.scene.control.SplitPane;
|
import javafx.scene.control.SplitPane;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.ui.setstage.pluginstage;
|
package org.jcnc.jnotepad.component.stage.setting.plugin;
|
||||||
|
|
||||||
import atlantafx.base.controls.Tile;
|
import atlantafx.base.controls.Tile;
|
||||||
import atlantafx.base.controls.ToggleSwitch;
|
import atlantafx.base.controls.ToggleSwitch;
|
||||||
@ -26,12 +26,12 @@ import javafx.stage.Stage;
|
|||||||
import org.commonmark.parser.Parser;
|
import org.commonmark.parser.Parser;
|
||||||
import org.commonmark.renderer.html.HtmlRenderer;
|
import org.commonmark.renderer.html.HtmlRenderer;
|
||||||
import org.jcnc.jnotepad.api.core.ui.stage.AbstractPaneStage;
|
import org.jcnc.jnotepad.api.core.ui.stage.AbstractPaneStage;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
import org.jcnc.jnotepad.cache.entity.PluginDescriptor;
|
||||||
import org.jcnc.jnotepad.api.util.PopUpUtil;
|
import org.jcnc.jnotepad.component.stage.setting.CustomSetButton;
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
|
|
||||||
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
||||||
import org.jcnc.jnotepad.ui.module.CustomSetButton;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
import org.jcnc.jnotepad.util.PopUpUtil;
|
||||||
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -1,10 +1,10 @@
|
|||||||
package org.jcnc.jnotepad.controller;
|
package org.jcnc.jnotepad.controller;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
||||||
|
import org.jcnc.jnotepad.controller.exception.AppException;
|
||||||
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
|
import org.jcnc.jnotepad.controller.i18n.LocalizationController;
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
|
||||||
import org.jcnc.jnotepad.plugin.PluginLoader;
|
import org.jcnc.jnotepad.plugin.PluginLoader;
|
||||||
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
package org.jcnc.jnotepad.controller.cache;
|
package org.jcnc.jnotepad.controller.cache;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import org.jcnc.jnotepad.api.util.JsonUtil;
|
import org.jcnc.jnotepad.cache.entity.Cache;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
import org.jcnc.jnotepad.controller.config.AppConfigController;
|
||||||
import org.jcnc.jnotepad.model.entity.Cache;
|
import org.jcnc.jnotepad.util.JsonUtil;
|
||||||
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.config;
|
|||||||
|
|
||||||
import org.jcnc.jnotepad.api.core.controller.config.BaseConfigController;
|
import org.jcnc.jnotepad.api.core.controller.config.BaseConfigController;
|
||||||
import org.jcnc.jnotepad.app.config.UserConfig;
|
import org.jcnc.jnotepad.app.config.UserConfig;
|
||||||
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
import org.jcnc.jnotepad.cache.entity.ShortcutKey;
|
||||||
|
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import javafx.scene.control.Tab;
|
|||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
import org.jcnc.jnotepad.common.constants.AppConstants;
|
import org.jcnc.jnotepad.common.constants.AppConstants;
|
||||||
import org.jcnc.jnotepad.common.constants.TextConstants;
|
import org.jcnc.jnotepad.common.constants.TextConstants;
|
||||||
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
import org.jcnc.jnotepad.component.module.CodeArea;
|
||||||
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;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
||||||
@ -38,7 +38,7 @@ public class NewFile implements EventHandler<ActionEvent> {
|
|||||||
*/
|
*/
|
||||||
public void addNewFileTab() {
|
public void addNewFileTab() {
|
||||||
// 创建一个新的文本编辑区
|
// 创建一个新的文本编辑区
|
||||||
LineNumberTextArea textArea = new LineNumberTextArea();
|
CodeArea textArea = new CodeArea();
|
||||||
// TODO: refactor:统一TextArea新建、绑定监听器入口
|
// TODO: refactor:统一TextArea新建、绑定监听器入口
|
||||||
// 设定初始索引
|
// 设定初始索引
|
||||||
int index = 1;
|
int index = 1;
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
package org.jcnc.jnotepad.controller.event.handler.menuitem;
|
package org.jcnc.jnotepad.controller.event.handler.menuitem;
|
||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
|
|||||||
@ -3,15 +3,15 @@ package org.jcnc.jnotepad.controller.event.handler.menuitem;
|
|||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
import org.jcnc.jnotepad.api.util.FileUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
|
import org.jcnc.jnotepad.cache.entity.Cache;
|
||||||
|
import org.jcnc.jnotepad.cache.entity.DirFileModel;
|
||||||
|
import org.jcnc.jnotepad.cache.enums.CacheExpirationTime;
|
||||||
import org.jcnc.jnotepad.common.constants.TextConstants;
|
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.model.entity.Cache;
|
import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicDirectoryChooserFactory;
|
||||||
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
import org.jcnc.jnotepad.util.FileUtil;
|
||||||
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicDirectoryChooserFactory;
|
|
||||||
import org.jcnc.jnotepad.views.manager.DirectorySidebarManager;
|
import org.jcnc.jnotepad.views.manager.DirectorySidebarManager;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|||||||
@ -4,16 +4,16 @@ import javafx.event.ActionEvent;
|
|||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
import org.jcnc.jnotepad.api.util.EncodingDetector;
|
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
|
import org.jcnc.jnotepad.cache.entity.Cache;
|
||||||
|
import org.jcnc.jnotepad.cache.enums.CacheExpirationTime;
|
||||||
import org.jcnc.jnotepad.common.constants.TextConstants;
|
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.model.entity.Cache;
|
import org.jcnc.jnotepad.component.module.CodeArea;
|
||||||
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicFileChooserFactory;
|
||||||
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicFileChooserFactory;
|
import org.jcnc.jnotepad.util.EncodingDetector;
|
||||||
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;
|
||||||
@ -21,7 +21,8 @@ import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
import static org.jcnc.jnotepad.api.util.FileUtil.getFileText;
|
import static org.jcnc.jnotepad.util.FileUtil.getFileText;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打开文件的事件处理程序。
|
* 打开文件的事件处理程序。
|
||||||
@ -92,7 +93,7 @@ public class OpenFile implements EventHandler<ActionEvent> {
|
|||||||
* @param file 文件对象
|
* @param file 文件对象
|
||||||
*/
|
*/
|
||||||
public static void getText(File file) {
|
public static void getText(File file) {
|
||||||
LineNumberTextArea textArea = createNewTextArea();
|
CodeArea textArea = createNewTextArea();
|
||||||
// 检测文件编码
|
// 检测文件编码
|
||||||
Charset encoding = EncodingDetector.detectEncodingCharset(file);
|
Charset encoding = EncodingDetector.detectEncodingCharset(file);
|
||||||
String fileText = getFileText(file, encoding);
|
String fileText = getFileText(file, encoding);
|
||||||
@ -114,8 +115,8 @@ public class OpenFile implements EventHandler<ActionEvent> {
|
|||||||
*
|
*
|
||||||
* @return 新的文本区域
|
* @return 新的文本区域
|
||||||
*/
|
*/
|
||||||
private static LineNumberTextArea createNewTextArea() {
|
private static CodeArea createNewTextArea() {
|
||||||
return new LineNumberTextArea();
|
return new CodeArea();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -125,7 +126,7 @@ public class OpenFile implements EventHandler<ActionEvent> {
|
|||||||
* @param textArea 文本区域
|
* @param textArea 文本区域
|
||||||
* @return 新的标签页
|
* @return 新的标签页
|
||||||
*/
|
*/
|
||||||
private static CenterTab createNewTab(String tabName, LineNumberTextArea textArea, Charset charset) {
|
private static CenterTab createNewTab(String tabName, CodeArea textArea, Charset charset) {
|
||||||
return new CenterTab(tabName, textArea, charset);
|
return new CenterTab(tabName, textArea, charset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,12 +5,12 @@ import javafx.event.EventHandler;
|
|||||||
import javafx.scene.control.TextField;
|
import javafx.scene.control.TextField;
|
||||||
import javafx.scene.input.KeyCode;
|
import javafx.scene.input.KeyCode;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.PopUpUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
import org.jcnc.jnotepad.common.constants.TextConstants;
|
import org.jcnc.jnotepad.common.constants.TextConstants;
|
||||||
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicFileChooserFactory;
|
import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicFileChooserFactory;
|
||||||
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
import org.jcnc.jnotepad.util.PopUpUtil;
|
||||||
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
package org.jcnc.jnotepad.controller.event.handler.menuitem;
|
package org.jcnc.jnotepad.controller.event.handler.menuitem;
|
||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存文件事件处理器。
|
* 保存文件事件处理器。
|
||||||
|
|||||||
@ -3,16 +3,16 @@ package org.jcnc.jnotepad.controller.event.handler.menuitem;
|
|||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
|
import org.jcnc.jnotepad.cache.entity.Cache;
|
||||||
|
import org.jcnc.jnotepad.cache.enums.CacheExpirationTime;
|
||||||
import org.jcnc.jnotepad.common.constants.TextConstants;
|
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.component.stage.dialog.factory.impl.BasicFileChooserFactory;
|
||||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
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.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicFileChooserFactory;
|
|
||||||
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
||||||
import org.jcnc.jnotepad.views.manager.TopMenuBarManager;
|
import org.jcnc.jnotepad.views.manager.TopMenuBarManager;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.event.handler.setting;
|
|||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
import org.jcnc.jnotepad.ui.setstage.SetStage;
|
import org.jcnc.jnotepad.component.stage.setting.SetStage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置按钮事件的事件处理程序。
|
* 设置按钮事件的事件处理程序。
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.exception;
|
package org.jcnc.jnotepad.controller.exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用异常类,用于处理应用程序中的异常情况。
|
* 应用异常类,用于处理应用程序中的异常情况。
|
||||||
@ -1,7 +1,7 @@
|
|||||||
package org.jcnc.jnotepad.controller.manager;
|
package org.jcnc.jnotepad.controller.manager;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.common.interfaces.ControllerAble;
|
|
||||||
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
|
import org.jcnc.jnotepad.component.module.interfaces.ControllerAble;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.menuitem.NewFile;
|
import org.jcnc.jnotepad.controller.event.handler.menuitem.NewFile;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenFile;
|
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenFile;
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
package org.jcnc.jnotepad.plugin;
|
package org.jcnc.jnotepad.plugin;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.api.util.JsonUtil;
|
import org.jcnc.jnotepad.cache.entity.PluginDescriptor;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
|
import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
|
||||||
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
import org.jcnc.jnotepad.controller.exception.AppException;
|
||||||
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
|
|
||||||
import org.jcnc.jnotepad.plugin.interfaces.Plugin;
|
import org.jcnc.jnotepad.plugin.interfaces.Plugin;
|
||||||
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
||||||
|
import org.jcnc.jnotepad.util.JsonUtil;
|
||||||
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
|||||||
@ -6,11 +6,11 @@ import javafx.scene.control.Label;
|
|||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicFileChooserFactory;
|
||||||
import org.jcnc.jnotepad.api.util.PopUpUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.plugin.manager.PluginManager;
|
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;
|
||||||
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
package org.jcnc.jnotepad.plugin.manager;
|
package org.jcnc.jnotepad.plugin.manager;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
|
||||||
import org.jcnc.jnotepad.api.util.PopUpUtil;
|
|
||||||
import org.jcnc.jnotepad.app.manager.ApplicationManager;
|
import org.jcnc.jnotepad.app.manager.ApplicationManager;
|
||||||
|
import org.jcnc.jnotepad.cache.entity.PluginDescriptor;
|
||||||
import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
|
import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
|
||||||
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
import org.jcnc.jnotepad.controller.config.PluginConfigController;
|
||||||
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
|
import org.jcnc.jnotepad.util.PopUpUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|||||||
@ -1,80 +0,0 @@
|
|||||||
package org.jcnc.jnotepad.ui.module;
|
|
||||||
|
|
||||||
import javafx.application.Platform;
|
|
||||||
import javafx.scene.control.TextField;
|
|
||||||
import javafx.scene.input.KeyCode;
|
|
||||||
import javafx.scene.layout.BorderPane;
|
|
||||||
import org.fxmisc.richtext.CodeArea;
|
|
||||||
import org.fxmisc.richtext.LineNumberFactory;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 终端仿真器组件,用于执行命令并显示输出。
|
|
||||||
* <p>
|
|
||||||
* 该组件包括一个用于输入命令的文本字段和一个显示命令输出的CodeArea。
|
|
||||||
* 用户可以在文本字段中输入命令,按回车键执行,并在CodeArea中查看输出。
|
|
||||||
*
|
|
||||||
* @author luke
|
|
||||||
*/
|
|
||||||
public class TerminalEmulatorComponent extends BorderPane {
|
|
||||||
|
|
||||||
private CodeArea terminalOutput;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建一个新的终端仿真器组件。
|
|
||||||
*/
|
|
||||||
public TerminalEmulatorComponent() {
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void init() {
|
|
||||||
terminalOutput = new CodeArea();
|
|
||||||
TextField commandInput = new TextField();
|
|
||||||
|
|
||||||
// 设置行号
|
|
||||||
terminalOutput.setParagraphGraphicFactory(LineNumberFactory.get(terminalOutput));
|
|
||||||
|
|
||||||
commandInput.setOnKeyPressed(event -> {
|
|
||||||
if (event.getCode() == KeyCode.ENTER) {
|
|
||||||
String command = commandInput.getText();
|
|
||||||
executeCommand(command);
|
|
||||||
commandInput.clear();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
setCenter(terminalOutput);
|
|
||||||
setBottom(commandInput);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void executeCommand(String command) {
|
|
||||||
try {
|
|
||||||
ProcessBuilder processBuilder = new ProcessBuilder(command.split(" "));
|
|
||||||
processBuilder.redirectErrorStream(true);
|
|
||||||
Process process = processBuilder.start();
|
|
||||||
|
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
|
|
||||||
String line;
|
|
||||||
while ((line = reader.readLine()) != null) {
|
|
||||||
appendToTerminalOutput(line + "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
int exitCode = process.waitFor();
|
|
||||||
appendToTerminalOutput("Exit Code: " + exitCode + "\n");
|
|
||||||
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
appendToTerminalOutput("Error: " + e.getMessage() + "\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void appendToTerminalOutput(String text) {
|
|
||||||
Platform.runLater(() -> {
|
|
||||||
terminalOutput.appendText(text);
|
|
||||||
// 将滚动条滚动到最后一行
|
|
||||||
terminalOutput.moveTo(terminalOutput.getLength());
|
|
||||||
terminalOutput.requestFollowCaret();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.api.util;
|
package org.jcnc.jnotepad.util;
|
||||||
|
|
||||||
import com.ibm.icu.text.CharsetDetector;
|
import com.ibm.icu.text.CharsetDetector;
|
||||||
import com.ibm.icu.text.CharsetMatch;
|
import com.ibm.icu.text.CharsetMatch;
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package org.jcnc.jnotepad.api.util;
|
package org.jcnc.jnotepad.util;
|
||||||
|
|
||||||
|
import org.jcnc.jnotepad.cache.entity.DirFileModel;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenFile;
|
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenFile;
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
import org.jcnc.jnotepad.controller.exception.AppException;
|
||||||
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
|
||||||
import org.kordamp.ikonli.javafx.FontIcon;
|
import org.kordamp.ikonli.javafx.FontIcon;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.api.util;
|
package org.jcnc.jnotepad.util;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
@ -6,7 +6,7 @@ import com.fasterxml.jackson.core.util.DefaultIndenter;
|
|||||||
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
|
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
import org.jcnc.jnotepad.controller.exception.AppException;
|
||||||
|
|
||||||
import static com.fasterxml.jackson.core.util.DefaultIndenter.SYS_LF;
|
import static com.fasterxml.jackson.core.util.DefaultIndenter.SYS_LF;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.api.util;
|
package org.jcnc.jnotepad.util;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -1,8 +1,8 @@
|
|||||||
package org.jcnc.jnotepad.api.util;
|
package org.jcnc.jnotepad.util;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.model.enums.DialogType;
|
import org.jcnc.jnotepad.cache.enums.DialogType;
|
||||||
import org.jcnc.jnotepad.ui.dialog.AppDialogBuilder;
|
import org.jcnc.jnotepad.component.stage.dialog.AppDialogBuilder;
|
||||||
import org.jcnc.jnotepad.ui.dialog.interfaces.DialogButtonAction;
|
import org.jcnc.jnotepad.component.stage.dialog.interfaces.DialogButtonAction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 弹窗工具类
|
* 弹窗工具类
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.jnotepad.api.util;
|
package org.jcnc.jnotepad.util;
|
||||||
|
|
||||||
import atlantafx.base.theme.Styles;
|
import atlantafx.base.theme.Styles;
|
||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
@ -7,7 +7,7 @@ import javafx.scene.control.Label;
|
|||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
|
||||||
import org.jcnc.jnotepad.common.constants.TextConstants;
|
import org.jcnc.jnotepad.common.constants.TextConstants;
|
||||||
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
import org.jcnc.jnotepad.component.module.CodeArea;
|
||||||
import org.jcnc.jnotepad.views.root.bottom.status.BottomStatusBox;
|
import org.jcnc.jnotepad.views.root.bottom.status.BottomStatusBox;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ public class BottomStatusBoxManager {
|
|||||||
if (instance.getSelected() == null) {
|
if (instance.getSelected() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LineNumberTextArea textArea = instance.getSelected().getLineNumberTextArea();
|
CodeArea textArea = instance.getSelected().getLineNumberTextArea();
|
||||||
int caretPosition = textArea.getCaretPosition();
|
int caretPosition = textArea.getCaretPosition();
|
||||||
int row = getRow(caretPosition, textArea.getText());
|
int row = getRow(caretPosition, textArea.getText());
|
||||||
int column = getColumn(caretPosition, textArea.getText());
|
int column = getColumn(caretPosition, textArea.getText());
|
||||||
@ -128,7 +128,7 @@ public class BottomStatusBoxManager {
|
|||||||
updateEncodingLabel(centerTab.getCharset().name());
|
updateEncodingLabel(centerTab.getCharset().name());
|
||||||
|
|
||||||
// 添加光标位置变化监听器
|
// 添加光标位置变化监听器
|
||||||
LineNumberTextArea textArea = centerTab.getLineNumberTextArea();
|
CodeArea textArea = centerTab.getLineNumberTextArea();
|
||||||
textArea.caretPositionProperty().addListener((ChangeListener<Number>) (observable, oldValue, newValue) -> updateRowColumnLabel(textArea.getCaretPosition(), textArea.getText()));
|
textArea.caretPositionProperty().addListener((ChangeListener<Number>) (observable, oldValue, newValue) -> updateRowColumnLabel(textArea.getCaretPosition(), textArea.getText()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,12 +3,12 @@ package org.jcnc.jnotepad.views.manager;
|
|||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.util.FileUtil;
|
import org.jcnc.jnotepad.cache.enums.CacheExpirationTime;
|
||||||
import org.jcnc.jnotepad.api.util.PopUpUtil;
|
|
||||||
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
|
import org.jcnc.jnotepad.component.module.CodeArea;
|
||||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
import org.jcnc.jnotepad.util.FileUtil;
|
||||||
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
import org.jcnc.jnotepad.util.PopUpUtil;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;
|
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;
|
||||||
import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
|
import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
|
||||||
@ -79,7 +79,7 @@ public class CenterTabPaneManager {
|
|||||||
}
|
}
|
||||||
if (tab.isRelevance()) {
|
if (tab.isRelevance()) {
|
||||||
// 获取当前文本域对象
|
// 获取当前文本域对象
|
||||||
LineNumberTextArea lineNumberTextArea = tab.getLineNumberTextArea();
|
CodeArea codeArea = tab.getLineNumberTextArea();
|
||||||
// 获取当前标签页对应文件上次修改时间
|
// 获取当前标签页对应文件上次修改时间
|
||||||
Long lastModifiedTime = tab.getLastModifiedTimeOfAssociatedFile();
|
Long lastModifiedTime = tab.getLastModifiedTimeOfAssociatedFile();
|
||||||
// 获取对应文件上次修改时间
|
// 获取对应文件上次修改时间
|
||||||
@ -95,8 +95,8 @@ public class CenterTabPaneManager {
|
|||||||
PopUpUtil.questionAlert(
|
PopUpUtil.questionAlert(
|
||||||
"重新加载", file.getAbsolutePath(), "此文件已被外部修改,是否重新加载该文件?",
|
"重新加载", file.getAbsolutePath(), "此文件已被外部修改,是否重新加载该文件?",
|
||||||
appDialog -> {
|
appDialog -> {
|
||||||
lineNumberTextArea.clear();
|
codeArea.clear();
|
||||||
lineNumberTextArea.appendText(fileText);
|
codeArea.appendText(fileText);
|
||||||
appDialog.close();
|
appDialog.close();
|
||||||
}, Stage::close, "是", "否");
|
}, Stage::close, "是", "否");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,10 +3,10 @@ package org.jcnc.jnotepad.views.manager;
|
|||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.scene.control.SplitPane;
|
import javafx.scene.control.SplitPane;
|
||||||
import javafx.scene.control.TreeItem;
|
import javafx.scene.control.TreeItem;
|
||||||
import org.jcnc.jnotepad.api.util.FileUtil;
|
import org.jcnc.jnotepad.cache.entity.DirFileModel;
|
||||||
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenDirectory;
|
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenDirectory;
|
||||||
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
import org.jcnc.jnotepad.util.FileUtil;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.MainBorderPane;
|
import org.jcnc.jnotepad.views.root.center.main.MainBorderPane;
|
||||||
import org.jcnc.jnotepad.views.root.center.main.center.directory.DirectorySidebarPane;
|
import org.jcnc.jnotepad.views.root.center.main.center.directory.DirectorySidebarPane;
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import javafx.scene.layout.BorderPane;
|
|||||||
import javafx.scene.layout.Region;
|
import javafx.scene.layout.Region;
|
||||||
import javafx.scene.layout.StackPane;
|
import javafx.scene.layout.StackPane;
|
||||||
import javafx.util.Duration;
|
import javafx.util.Duration;
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
import org.jcnc.jnotepad.controller.exception.AppException;
|
||||||
import org.jcnc.jnotepad.views.root.RootBorderPane;
|
import org.jcnc.jnotepad.views.root.RootBorderPane;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -6,9 +6,9 @@ import javafx.scene.control.Menu;
|
|||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import javafx.scene.input.KeyCombination;
|
import javafx.scene.input.KeyCombination;
|
||||||
import org.jcnc.jnotepad.api.core.views.manager.AbstractManager;
|
import org.jcnc.jnotepad.api.core.views.manager.AbstractManager;
|
||||||
import org.jcnc.jnotepad.api.util.LogUtil;
|
import org.jcnc.jnotepad.cache.entity.ShortcutKey;
|
||||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.model.entity.ShortcutKey;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
|
import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
|
||||||
import org.jcnc.jnotepad.views.root.top.menubar.menu.*;
|
import org.jcnc.jnotepad.views.root.top.menubar.menu.*;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.views.root;
|
package org.jcnc.jnotepad.views.root;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.ui.module.AbstractBorderPane;
|
import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RootBorderPane 表示 JNotepad 应用程序的根布局。
|
* RootBorderPane 表示 JNotepad 应用程序的根布局。
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package org.jcnc.jnotepad.views.root.bottom;
|
package org.jcnc.jnotepad.views.root.bottom;
|
||||||
|
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import org.jcnc.jnotepad.ui.module.AbstractVerticalBox;
|
import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 底部根侧边栏垂直布局
|
* 底部根侧边栏垂直布局
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package org.jcnc.jnotepad.views.root.bottom.status;
|
package org.jcnc.jnotepad.views.root.bottom.status;
|
||||||
|
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import org.jcnc.jnotepad.ui.module.AbstractHorizontalBox;
|
import org.jcnc.jnotepad.component.module.base.AbstractHorizontalBox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态栏组件封装。
|
* 状态栏组件封装。
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.views.root.center.main;
|
package org.jcnc.jnotepad.views.root.center.main;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.ui.module.AbstractBorderPane;
|
import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主界面边界布局
|
* 主界面边界布局
|
||||||
|
|||||||
@ -2,8 +2,8 @@ package org.jcnc.jnotepad.views.root.center.main.center.directory;
|
|||||||
|
|
||||||
import javafx.scene.control.TreeItem;
|
import javafx.scene.control.TreeItem;
|
||||||
import javafx.scene.control.TreeView;
|
import javafx.scene.control.TreeView;
|
||||||
|
import org.jcnc.jnotepad.cache.entity.DirFileModel;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenFile;
|
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenFile;
|
||||||
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|||||||
@ -2,9 +2,9 @@ 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.api.util.LogUtil;
|
import org.jcnc.jnotepad.component.module.CodeArea;
|
||||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
|
import org.jcnc.jnotepad.util.LogUtil;
|
||||||
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;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -23,7 +23,7 @@ import java.nio.charset.Charset;
|
|||||||
*/
|
*/
|
||||||
public class CenterTab extends Tab {
|
public class CenterTab extends Tab {
|
||||||
Logger logger = LogUtil.getLogger(this.getClass());
|
Logger logger = LogUtil.getLogger(this.getClass());
|
||||||
private final LineNumberTextArea lineNumberTextArea;
|
private final CodeArea codeArea;
|
||||||
/**
|
/**
|
||||||
* 默认关闭自动换行
|
* 默认关闭自动换行
|
||||||
*/
|
*/
|
||||||
@ -39,18 +39,18 @@ public class CenterTab extends Tab {
|
|||||||
private Charset charset = Charset.defaultCharset();
|
private Charset charset = Charset.defaultCharset();
|
||||||
|
|
||||||
public CenterTab(String tabTitle) {
|
public CenterTab(String tabTitle) {
|
||||||
this(tabTitle, new LineNumberTextArea());
|
this(tabTitle, new CodeArea());
|
||||||
}
|
}
|
||||||
|
|
||||||
public CenterTab(String tabTitle, LineNumberTextArea textArea) {
|
public CenterTab(String tabTitle, CodeArea textArea) {
|
||||||
this(tabTitle, textArea, Charset.defaultCharset());
|
this(tabTitle, textArea, Charset.defaultCharset());
|
||||||
}
|
}
|
||||||
|
|
||||||
public CenterTab(String tabTitle, LineNumberTextArea textArea, Charset charset) {
|
public CenterTab(String tabTitle, CodeArea textArea, Charset charset) {
|
||||||
super(tabTitle);
|
super(tabTitle);
|
||||||
lineNumberTextArea = textArea;
|
codeArea = textArea;
|
||||||
initTextAreaListeners();
|
initTextAreaListeners();
|
||||||
this.setContent(new VirtualizedScrollPane<>(lineNumberTextArea));
|
this.setContent(new VirtualizedScrollPane<>(codeArea));
|
||||||
setAutoLine(UserConfigController.getInstance().getAutoLineConfig());
|
setAutoLine(UserConfigController.getInstance().getAutoLineConfig());
|
||||||
this.charset = charset;
|
this.charset = charset;
|
||||||
}
|
}
|
||||||
@ -69,11 +69,11 @@ public class CenterTab extends Tab {
|
|||||||
|
|
||||||
public void setAutoLine(boolean autoLine) {
|
public void setAutoLine(boolean autoLine) {
|
||||||
this.autoLine = autoLine;
|
this.autoLine = autoLine;
|
||||||
lineNumberTextArea.setWrapText(autoLine);
|
codeArea.setWrapText(autoLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LineNumberTextArea getLineNumberTextArea() {
|
public CodeArea getLineNumberTextArea() {
|
||||||
return lineNumberTextArea;
|
return codeArea;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Charset getCharset() {
|
public Charset getCharset() {
|
||||||
@ -126,7 +126,7 @@ public class CenterTab extends Tab {
|
|||||||
*/
|
*/
|
||||||
private void initTextAreaListeners() {
|
private void initTextAreaListeners() {
|
||||||
// 监听主要文本区域的文本变化
|
// 监听主要文本区域的文本变化
|
||||||
lineNumberTextArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
codeArea.textProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
BottomStatusBoxManager.getInstance().updateWordCountStatusLabel();
|
BottomStatusBoxManager.getInstance().updateWordCountStatusLabel();
|
||||||
saveSelectedFileTab();
|
saveSelectedFileTab();
|
||||||
});
|
});
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.views.root.left.sidebar.tools;
|
|||||||
|
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.Priority;
|
import javafx.scene.layout.Priority;
|
||||||
import org.jcnc.jnotepad.ui.module.AbstractHorizontalBox;
|
import org.jcnc.jnotepad.component.module.base.AbstractHorizontalBox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ToolHBox 是 JNotepad 应用程序的工具栏水平布局类。
|
* ToolHBox 是 JNotepad 应用程序的工具栏水平布局类。
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package org.jcnc.jnotepad.views.root.left.sidebar.tools;
|
|||||||
|
|
||||||
import javafx.scene.layout.Priority;
|
import javafx.scene.layout.Priority;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import org.jcnc.jnotepad.ui.module.AbstractVerticalBox;
|
import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 垂直布局类
|
* 垂直布局类
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.views.root.right;
|
package org.jcnc.jnotepad.views.root.right;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.ui.module.AbstractVerticalBox;
|
import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 右侧边栏的垂直布局容器类。
|
* 右侧边栏的垂直布局容器类。
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package org.jcnc.jnotepad.views.root.top;
|
package org.jcnc.jnotepad.views.root.top;
|
||||||
|
|
||||||
import org.jcnc.jnotepad.ui.module.AbstractBorderPane;
|
import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RootTopBorderPane 类表示 JNotepad 应用程序的顶部边界面板。
|
* RootTopBorderPane 类表示 JNotepad 应用程序的顶部边界面板。
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import javafx.scene.control.Menu;
|
|||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
||||||
import org.jcnc.jnotepad.ui.setstage.HelpPaneStage;
|
import org.jcnc.jnotepad.component.stage.setting.HelpPaneStage;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package org.jcnc.jnotepad.views.root.top.menubar.menu;
|
|||||||
import javafx.scene.control.Menu;
|
import javafx.scene.control.Menu;
|
||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
||||||
import org.jcnc.jnotepad.ui.setstage.pluginstage.PluginManagementPane;
|
import org.jcnc.jnotepad.component.stage.setting.plugin.PluginManagementPane;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|||||||
@ -4,9 +4,9 @@ import javafx.scene.control.Menu;
|
|||||||
import javafx.scene.control.MenuItem;
|
import javafx.scene.control.MenuItem;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
import org.jcnc.jnotepad.api.core.views.top.menu.AbstractTopMenu;
|
||||||
import org.jcnc.jnotepad.api.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
import org.jcnc.jnotepad.controller.config.UserConfigController;
|
||||||
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenConfig;
|
import org.jcnc.jnotepad.controller.event.handler.menuitem.OpenConfig;
|
||||||
|
import org.jcnc.jnotepad.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user