重构项目的UI为component

重构项目整体结构
This commit is contained in:
许轲 2023-10-05 01:00:42 +08:00
parent 70a9538e2c
commit 87c90072f8
80 changed files with 203 additions and 284 deletions

View File

@ -21,7 +21,7 @@ module org.jcnc.jnotepad {
requires javafx.web;
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.i18n;
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.event.handler.setting;
exports org.jcnc.jnotepad.controller.event.handler.menuitem;
exports org.jcnc.jnotepad.api.util;
exports org.jcnc.jnotepad.common.interfaces;
exports org.jcnc.jnotepad.component.module.interfaces;
opens org.jcnc.jnotepad.app.config;
exports org.jcnc.jnotepad.plugin.interfaces;
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.ui.module;
exports org.jcnc.jnotepad.model.entity;
exports org.jcnc.jnotepad.component.module;
exports org.jcnc.jnotepad.cache.entity;
exports org.jcnc.jnotepad.views.root.bottom;
exports org.jcnc.jnotepad.views.root.bottom.status;
exports org.jcnc.jnotepad.api.core.views.sidebar.bottom;
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;
}

View File

@ -2,8 +2,8 @@ package org.jcnc.jnotepad;
import javafx.application.Application;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.app.manager.ApplicationManager;
import org.jcnc.jnotepad.util.LogUtil;
/**

View File

@ -1,10 +1,10 @@
package org.jcnc.jnotepad.api.core.controller.config;
import org.jcnc.jnotepad.api.core.controller.interfaces.ConfigController;
import org.jcnc.jnotepad.api.util.JsonUtil;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.api.util.PopUpUtil;
import org.jcnc.jnotepad.exception.AppException;
import org.jcnc.jnotepad.controller.exception.AppException;
import org.jcnc.jnotepad.util.JsonUtil;
import org.jcnc.jnotepad.util.LogUtil;
import org.jcnc.jnotepad.util.PopUpUtil;
import org.slf4j.Logger;
import java.io.BufferedWriter;

View File

@ -1,6 +1,6 @@
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;

View File

@ -7,8 +7,8 @@ import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.RadioMenuItem;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
import org.jcnc.jnotepad.util.LogUtil;
import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
import org.slf4j.Logger;

View File

@ -1,6 +1,6 @@
package org.jcnc.jnotepad.app.config;
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
import org.jcnc.jnotepad.cache.entity.PluginDescriptor;
import java.util.List;

View File

@ -1,7 +1,7 @@
package org.jcnc.jnotepad.app.config;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.jcnc.jnotepad.model.entity.ShortcutKey;
import org.jcnc.jnotepad.cache.entity.ShortcutKey;
import java.util.List;

View File

@ -8,8 +8,6 @@ import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.stage.Window;
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.common.constants.AppConstants;
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.manager.Controller;
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 java.io.IOException;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.model.entity;
package org.jcnc.jnotepad.cache.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.model.entity;
package org.jcnc.jnotepad.cache.entity;
import org.kordamp.ikonli.javafx.FontIcon;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.model.entity;
package org.jcnc.jnotepad.cache.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.jcnc.jnotepad.plugin.interfaces.Plugin;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.model.entity;
package org.jcnc.jnotepad.cache.entity;
/**

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.model.enums;
package org.jcnc.jnotepad.cache.enums;
/**
* 缓存过期时间枚举

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.model.enums;
package org.jcnc.jnotepad.cache.enums;
/**
* 对话框类型

View File

@ -1,6 +1,6 @@
package org.jcnc.jnotepad.common.manager;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.util.LogUtil;
import org.slf4j.Logger;
import java.util.concurrent.*;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui.module;
package org.jcnc.jnotepad.component.module;
import javafx.application.Platform;
import javafx.geometry.Insets;
@ -6,7 +6,6 @@ import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import org.fxmisc.richtext.CodeArea;
import org.fxmisc.richtext.GenericStyledArea;
import org.fxmisc.richtext.LineNumberFactory;
import org.fxmisc.richtext.model.Paragraph;
@ -31,7 +30,7 @@ import java.util.regex.Pattern;
*
* @author luke
*/
public class LineNumberTextArea extends CodeArea {
public class CodeArea extends org.fxmisc.richtext.CodeArea {
private static final String[] KEYWORDS = new String[]{
"abstract", "assert", "boolean", "break", "byte",
@ -80,7 +79,7 @@ public class LineNumberTextArea extends CodeArea {
* <p>
* 用于创建 LineNumberTextArea 对象
*/
public LineNumberTextArea() {
public CodeArea() {
//
this.setPadding(new Insets(8, 0, 0, 0));
@ -98,7 +97,7 @@ public class LineNumberTextArea extends CodeArea {
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() {
((CodeArea) getOwnerNode()).foldSelectedParagraphs();
((org.fxmisc.richtext.CodeArea) getOwnerNode()).foldSelectedParagraphs();
}
/**
* 展开当前行/段落如果有折叠
*/
private void unfold() {
CodeArea area = (CodeArea) getOwnerNode();
org.fxmisc.richtext.CodeArea area = (org.fxmisc.richtext.CodeArea) getOwnerNode();
area.unfoldParagraphs(area.getCurrentParagraph());
}
private void print() {
System.out.println(((CodeArea) getOwnerNode()).getText());
System.out.println(((org.fxmisc.richtext.CodeArea) getOwnerNode()).getText());
}
}
}

View File

@ -1,8 +1,8 @@
package org.jcnc.jnotepad.ui.module;
package org.jcnc.jnotepad.component.module.base;
import javafx.scene.Node;
import javafx.scene.layout.BorderPane;
import org.jcnc.jnotepad.common.interfaces.BorderPaneAble;
import org.jcnc.jnotepad.component.module.interfaces.BorderPaneAble;
/**
* 抽象边界面板类

View File

@ -1,8 +1,8 @@
package org.jcnc.jnotepad.ui.module;
package org.jcnc.jnotepad.component.module.base;
import javafx.scene.Node;
import javafx.scene.layout.HBox;
import org.jcnc.jnotepad.common.interfaces.HorizontalBoxAble;
import org.jcnc.jnotepad.component.module.interfaces.HorizontalBoxAble;
/**
* 抽象水平盒子类

View File

@ -1,8 +1,8 @@
package org.jcnc.jnotepad.ui.module;
package org.jcnc.jnotepad.component.module.base;
import javafx.scene.Node;
import javafx.scene.layout.VBox;
import org.jcnc.jnotepad.common.interfaces.VerticalBoxAble;
import org.jcnc.jnotepad.component.module.interfaces.VerticalBoxAble;
/**
* 抽象垂直盒子类

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui.titlebar;
package org.jcnc.jnotepad.component.module.hbox;
import javafx.animation.TranslateTransition;
import javafx.geometry.Pos;
@ -16,10 +16,10 @@ import javafx.util.Duration;
*
* @author 许轲
*/
public class CustomTitleBar extends HBox {
private static CustomTitleBar instance;
public class CustomTitleBarBox extends HBox {
private static CustomTitleBarBox instance;
public CustomTitleBar() {
public CustomTitleBarBox() {
// 设置样式和布局
this.setAlignment(Pos.CENTER);
@ -69,9 +69,9 @@ public class CustomTitleBar extends HBox {
*
* @return CustomTitleBar的单例实例
*/
public static CustomTitleBar getInstance() {
public static CustomTitleBarBox getInstance() {
if (instance == null) {
instance = new CustomTitleBar();
instance = new CustomTitleBarBox();
}
return instance;
}

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.common.interfaces;
package org.jcnc.jnotepad.component.module.interfaces;
import javafx.scene.Node;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.common.interfaces;
package org.jcnc.jnotepad.component.module.interfaces;
import java.util.List;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.common.interfaces;
package org.jcnc.jnotepad.component.module.interfaces;
import javafx.scene.Node;
import javafx.scene.layout.HBox;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.common.interfaces;
package org.jcnc.jnotepad.component.module.interfaces;
import javafx.scene.Node;
import javafx.scene.layout.VBox;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui;
package org.jcnc.jnotepad.component.module.vbox;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
@ -10,7 +10,7 @@ import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.util.Duration;
import org.fxmisc.richtext.StyleClassedTextArea;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.util.LogUtil;
import java.io.*;
import java.nio.charset.Charset;
@ -20,7 +20,7 @@ import java.nio.charset.Charset;
*
* @author luke
*/
public class CmdTerminal extends VBox {
public class CmdTerminalBox extends VBox {
/**
* 用于显示命令输出的文本区域
@ -44,7 +44,7 @@ public class CmdTerminal extends VBox {
/**
* 创建CmdTerminal对象的构造函数
*/
public CmdTerminal() {
public CmdTerminalBox() {
// 创建UI元素
cmdOutput = new StyleClassedTextArea();
cmdInput = new TextField();

View File

@ -1,13 +1,13 @@
package org.jcnc.jnotepad.ui.dialog;
package org.jcnc.jnotepad.component.stage.dialog;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.image.Image;
import javafx.stage.Modality;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.util.UiUtil;
import org.jcnc.jnotepad.model.enums.DialogType;
import org.jcnc.jnotepad.ui.dialog.interfaces.DialogButtonAction;
import org.jcnc.jnotepad.cache.enums.DialogType;
import org.jcnc.jnotepad.component.stage.dialog.interfaces.DialogButtonAction;
import org.jcnc.jnotepad.util.UiUtil;
import org.kordamp.ikonli.javafx.FontIcon;
/**
@ -16,7 +16,7 @@ import org.kordamp.ikonli.javafx.FontIcon;
* @author gewuyou
*/
public class AppDialogBuilder {
private AppDialog appDialog;
private AppDialogStage appDialogStage;
private Image appIcon = UiUtil.getAppIcon();
private String title;
private String headerText;
@ -87,9 +87,9 @@ public class AppDialogBuilder {
}
}
public AppDialog build() {
appDialog = new AppDialog(this);
return appDialog;
public AppDialogStage build() {
appDialogStage = new AppDialogStage(this);
return appDialogStage;
}
/**
@ -280,7 +280,7 @@ public class AppDialogBuilder {
return this;
}
public double getHBoxSpacing() {
public double getBoxSpacing() {
return hBoxSpacing;
}

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui.dialog;
package org.jcnc.jnotepad.component.stage.dialog;
import javafx.scene.Scene;
import javafx.scene.control.Button;
@ -7,7 +7,7 @@ import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
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
*/
public class AppDialog extends Stage {
public class AppDialogStage extends Stage {
/**
* 构造一个自定义提示框
*
* @param builder 提示框构建器
*/
public AppDialog(
public AppDialogStage(
AppDialogBuilder builder) {
// 设置窗口图标
this.getIcons().add(builder.getAppIcon());
@ -46,7 +46,7 @@ public class AppDialog extends Stage {
BorderPane borderPane = new BorderPane();
HBox iconBox = new HBox(builder.getIcon());
iconBox.setPadding(builder.getIconCoxPaddingInsets());
VBox vbox = new VBox(builder.getHBoxSpacing());
VBox vbox = new VBox(builder.getBoxSpacing());
vbox.setAlignment(builder.getVboxPos());
Label label = new Label(builder.getHeaderText());
@ -57,7 +57,7 @@ public class AppDialog extends Stage {
Button confirmButton = createButton(builder.getLeftBtnText(), builder.getLeftBtnAction());
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.setPadding(builder.gethBoxPaddingInsets());
vbox.getChildren().addAll(label, customTextLabel, hBox);

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui.dialog.factory;
package org.jcnc.jnotepad.component.stage.dialog.factory;
import javafx.stage.DirectoryChooser;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui.dialog.factory;
package org.jcnc.jnotepad.component.stage.dialog.factory;
import javafx.stage.FileChooser;

View 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.DirectoryChooser;
import org.jcnc.jnotepad.ui.dialog.factory.DirectoryChooserFactory;
import org.jcnc.jnotepad.component.stage.dialog.factory.DirectoryChooserFactory;
import java.io.File;

View 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 org.jcnc.jnotepad.ui.dialog.factory.FileChooserFactory;
import org.jcnc.jnotepad.component.stage.dialog.factory.FileChooserFactory;
import java.io.File;
import java.util.List;

View File

@ -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 {
/**
* 处理按钮的操作子类必须实现此方法以定义按钮的行为
* @param appDialog 对话框
* @param appDialogStage 对话框
* @apiNote
* @since 2023/9/3 22:53
*/
void handleAction(AppDialog appDialog);
void handleAction(AppDialogStage appDialogStage);
}

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui.module;
package org.jcnc.jnotepad.component.stage.setting;
import javafx.scene.control.Button;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui.setstage;
package org.jcnc.jnotepad.component.stage.setting;
import javafx.geometry.Insets;
import javafx.scene.Scene;
@ -7,10 +7,10 @@ import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
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.util.LogUtil;
import org.jcnc.jnotepad.util.PopUpUtil;
import org.jcnc.jnotepad.util.UiUtil;
import org.slf4j.Logger;
/**

View File

@ -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.theme.Styles;
@ -18,8 +18,8 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.core.ui.stage.AbstractPaneStage;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.api.util.UiUtil;
import org.jcnc.jnotepad.util.LogUtil;
import org.jcnc.jnotepad.util.UiUtil;
import org.jcnc.jnotepad.views.manager.RootManager;
import static org.jcnc.jnotepad.common.constants.AppConstants.*;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.ui.module;
package org.jcnc.jnotepad.component.stage.setting;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
@ -26,7 +26,7 @@ import javafx.scene.layout.VBox;
* @author luke
* @since 1.0.0
*/
public class SettingsComponent extends VBox {
public class SetDevBox extends VBox {
private final Label label;
private final Button button;
@ -36,7 +36,7 @@ public class SettingsComponent extends VBox {
* @param labelText 标签文本
* @param buttonText 按钮文本
*/
public SettingsComponent(String labelText, String buttonText) {
public SetDevBox(String labelText, String buttonText) {
setSpacing(10);
// 初始化标签

View File

@ -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.theme.Styles;
@ -16,10 +16,8 @@ import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Modality;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.util.UiUtil;
import org.jcnc.jnotepad.plugin.PluginManagerInterface;
import org.jcnc.jnotepad.ui.module.CustomSetButton;
import org.jcnc.jnotepad.ui.module.SettingsComponent;
import org.jcnc.jnotepad.util.UiUtil;
import static org.jcnc.jnotepad.common.constants.AppConstants.SCREEN_LENGTH;
import static org.jcnc.jnotepad.common.constants.AppConstants.SCREEN_WIDTH;
@ -198,7 +196,7 @@ public class SetStage extends Stage {
VBox generalLayout = new VBox(10);
generalLayout.setPadding(new Insets(25));
SettingsComponent devBox = new SettingsComponent("打开开发者调试页面", DEVELOPER_DEBUG_PAGE);
SetDevBox devBox = new SetDevBox("打开开发者调试页面", DEVELOPER_DEBUG_PAGE);
devBox.setButtonAction(event -> {
// 创建并启动DeveloperDebugPage
DeveloperDebugStage debugPage = new DeveloperDebugStage();

View File

@ -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.scene.control.SplitPane;

View File

@ -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.ToggleSwitch;
@ -26,12 +26,12 @@ import javafx.stage.Stage;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;
import org.jcnc.jnotepad.api.core.ui.stage.AbstractPaneStage;
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.model.entity.PluginDescriptor;
import org.jcnc.jnotepad.cache.entity.PluginDescriptor;
import org.jcnc.jnotepad.component.stage.setting.CustomSetButton;
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 java.awt.*;

View File

@ -1,10 +1,10 @@
package org.jcnc.jnotepad.controller;
import org.jcnc.jnotepad.api.util.LogUtil;
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.exception.AppException;
import org.jcnc.jnotepad.plugin.PluginLoader;
import org.jcnc.jnotepad.util.LogUtil;
import org.slf4j.Logger;
import java.io.IOException;

View File

@ -1,11 +1,11 @@
package org.jcnc.jnotepad.controller.cache;
import com.fasterxml.jackson.core.type.TypeReference;
import org.jcnc.jnotepad.api.util.JsonUtil;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.cache.entity.Cache;
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
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 java.io.File;

View File

@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.config;
import org.jcnc.jnotepad.api.core.controller.config.BaseConfigController;
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.util.ArrayList;

View File

@ -6,7 +6,7 @@ import javafx.scene.control.Tab;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
import org.jcnc.jnotepad.common.constants.AppConstants;
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.CenterTabPaneManager;
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;
@ -38,7 +38,7 @@ public class NewFile implements EventHandler<ActionEvent> {
*/
public void addNewFileTab() {
// 创建一个新的文本编辑区
LineNumberTextArea textArea = new LineNumberTextArea();
CodeArea textArea = new CodeArea();
// TODO: refactor统一TextArea新建绑定监听器入口
// 设定初始索引
int index = 1;

View File

@ -1,8 +1,8 @@
package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.controller.config.UserConfigController;
import org.jcnc.jnotepad.util.LogUtil;
import java.io.File;

View File

@ -3,15 +3,15 @@ package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
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.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.manager.ApplicationCacheManager;
import org.jcnc.jnotepad.model.entity.Cache;
import org.jcnc.jnotepad.model.entity.DirFileModel;
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicDirectoryChooserFactory;
import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicDirectoryChooserFactory;
import org.jcnc.jnotepad.util.FileUtil;
import org.jcnc.jnotepad.util.UiUtil;
import org.jcnc.jnotepad.views.manager.DirectorySidebarManager;
import java.io.File;

View File

@ -4,16 +4,16 @@ import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Tab;
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.cache.entity.Cache;
import org.jcnc.jnotepad.cache.enums.CacheExpirationTime;
import org.jcnc.jnotepad.common.constants.TextConstants;
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
import org.jcnc.jnotepad.model.entity.Cache;
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicFileChooserFactory;
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
import org.jcnc.jnotepad.component.module.CodeArea;
import org.jcnc.jnotepad.component.stage.dialog.factory.impl.BasicFileChooserFactory;
import org.jcnc.jnotepad.util.EncodingDetector;
import org.jcnc.jnotepad.util.LogUtil;
import org.jcnc.jnotepad.util.UiUtil;
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.CenterTabPane;
@ -21,7 +21,8 @@ import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;
import java.io.File;
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 文件对象
*/
public static void getText(File file) {
LineNumberTextArea textArea = createNewTextArea();
CodeArea textArea = createNewTextArea();
// 检测文件编码
Charset encoding = EncodingDetector.detectEncodingCharset(file);
String fileText = getFileText(file, encoding);
@ -114,8 +115,8 @@ public class OpenFile implements EventHandler<ActionEvent> {
*
* @return 新的文本区域
*/
private static LineNumberTextArea createNewTextArea() {
return new LineNumberTextArea();
private static CodeArea createNewTextArea() {
return new CodeArea();
}
/**
@ -125,7 +126,7 @@ public class OpenFile implements EventHandler<ActionEvent> {
* @param textArea 文本区域
* @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);
}
}

View File

@ -5,12 +5,12 @@ import javafx.event.EventHandler;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
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.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.root.center.main.center.tab.CenterTab;
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTabPane;

View File

@ -1,8 +1,7 @@
package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.util.LogUtil;
/**
* 保存文件事件处理器

View File

@ -3,16 +3,16 @@ package org.jcnc.jnotepad.controller.event.handler.menuitem;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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.cache.entity.Cache;
import org.jcnc.jnotepad.cache.enums.CacheExpirationTime;
import org.jcnc.jnotepad.common.constants.TextConstants;
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.i18n.LocalizationController;
import org.jcnc.jnotepad.model.entity.Cache;
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicFileChooserFactory;
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.TopMenuBarManager;
import org.jcnc.jnotepad.views.root.center.main.center.tab.CenterTab;

View File

@ -2,7 +2,7 @@ package org.jcnc.jnotepad.controller.event.handler.setting;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import org.jcnc.jnotepad.ui.setstage.SetStage;
import org.jcnc.jnotepad.component.stage.setting.SetStage;
/**
* 设置按钮事件的事件处理程序

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.exception;
package org.jcnc.jnotepad.controller.exception;
/**
* 应用异常类用于处理应用程序中的异常情况

View File

@ -1,7 +1,7 @@
package org.jcnc.jnotepad.controller.manager;
import org.jcnc.jnotepad.common.interfaces.ControllerAble;
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.OpenFile;

View File

@ -1,13 +1,13 @@
package org.jcnc.jnotepad.plugin;
import org.jcnc.jnotepad.api.util.JsonUtil;
import org.jcnc.jnotepad.api.util.LogUtil;
import org.jcnc.jnotepad.cache.entity.PluginDescriptor;
import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
import org.jcnc.jnotepad.controller.config.PluginConfigController;
import org.jcnc.jnotepad.exception.AppException;
import org.jcnc.jnotepad.model.entity.PluginDescriptor;
import org.jcnc.jnotepad.controller.exception.AppException;
import org.jcnc.jnotepad.plugin.interfaces.Plugin;
import org.jcnc.jnotepad.plugin.manager.PluginManager;
import org.jcnc.jnotepad.util.JsonUtil;
import org.jcnc.jnotepad.util.LogUtil;
import org.slf4j.Logger;
import java.io.*;

View File

@ -6,11 +6,11 @@ import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
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.component.stage.dialog.factory.impl.BasicFileChooserFactory;
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 java.io.File;

View File

@ -1,11 +1,11 @@
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.cache.entity.PluginDescriptor;
import org.jcnc.jnotepad.common.manager.ThreadPoolManager;
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 java.io.File;

View 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();
});
}
}

View File

@ -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.CharsetMatch;

View File

@ -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.exception.AppException;
import org.jcnc.jnotepad.model.entity.DirFileModel;
import org.jcnc.jnotepad.controller.exception.AppException;
import org.kordamp.ikonli.javafx.FontIcon;
import java.io.*;

View File

@ -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.type.TypeReference;
@ -6,7 +6,7 @@ import com.fasterxml.jackson.core.util.DefaultIndenter;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.databind.ObjectMapper;
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;

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.api.util;
package org.jcnc.jnotepad.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -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.ui.dialog.AppDialogBuilder;
import org.jcnc.jnotepad.ui.dialog.interfaces.DialogButtonAction;
import org.jcnc.jnotepad.cache.enums.DialogType;
import org.jcnc.jnotepad.component.stage.dialog.AppDialogBuilder;
import org.jcnc.jnotepad.component.stage.dialog.interfaces.DialogButtonAction;
/**
* 弹窗工具类

View File

@ -1,4 +1,4 @@
package org.jcnc.jnotepad.api.util;
package org.jcnc.jnotepad.util;
import atlantafx.base.theme.Styles;
import javafx.scene.image.Image;

View File

@ -7,7 +7,7 @@ import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import org.jcnc.jnotepad.app.i18n.UiResourceBundle;
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.center.main.center.tab.CenterTab;
@ -106,7 +106,7 @@ public class BottomStatusBoxManager {
if (instance.getSelected() == null) {
return;
}
LineNumberTextArea textArea = instance.getSelected().getLineNumberTextArea();
CodeArea textArea = instance.getSelected().getLineNumberTextArea();
int caretPosition = textArea.getCaretPosition();
int row = getRow(caretPosition, textArea.getText());
int column = getColumn(caretPosition, textArea.getText());
@ -128,7 +128,7 @@ public class BottomStatusBoxManager {
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()));
}
}

View File

@ -3,12 +3,12 @@ package org.jcnc.jnotepad.views.manager;
import javafx.collections.ObservableList;
import javafx.scene.control.Tab;
import javafx.stage.Stage;
import org.jcnc.jnotepad.api.util.FileUtil;
import org.jcnc.jnotepad.api.util.PopUpUtil;
import org.jcnc.jnotepad.cache.enums.CacheExpirationTime;
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.model.enums.CacheExpirationTime;
import org.jcnc.jnotepad.ui.module.LineNumberTextArea;
import org.jcnc.jnotepad.util.FileUtil;
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.CenterTabPane;
import org.jcnc.jnotepad.views.root.top.menubar.TopMenuBar;
@ -79,7 +79,7 @@ public class CenterTabPaneManager {
}
if (tab.isRelevance()) {
// 获取当前文本域对象
LineNumberTextArea lineNumberTextArea = tab.getLineNumberTextArea();
CodeArea codeArea = tab.getLineNumberTextArea();
// 获取当前标签页对应文件上次修改时间
Long lastModifiedTime = tab.getLastModifiedTimeOfAssociatedFile();
// 获取对应文件上次修改时间
@ -95,8 +95,8 @@ public class CenterTabPaneManager {
PopUpUtil.questionAlert(
"重新加载", file.getAbsolutePath(), "此文件已被外部修改,是否重新加载该文件?",
appDialog -> {
lineNumberTextArea.clear();
lineNumberTextArea.appendText(fileText);
codeArea.clear();
codeArea.appendText(fileText);
appDialog.close();
}, Stage::close, "", "");
}

View File

@ -3,10 +3,10 @@ package org.jcnc.jnotepad.views.manager;
import javafx.beans.value.ChangeListener;
import javafx.scene.control.SplitPane;
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.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.center.directory.DirectorySidebarPane;

View File

@ -10,7 +10,7 @@ import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.util.Duration;
import org.jcnc.jnotepad.exception.AppException;
import org.jcnc.jnotepad.controller.exception.AppException;
import org.jcnc.jnotepad.views.root.RootBorderPane;
/**

View File

@ -6,9 +6,9 @@ import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.scene.input.KeyCombination;
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.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.menu.*;
import org.slf4j.Logger;

View File

@ -1,6 +1,6 @@
package org.jcnc.jnotepad.views.root;
import org.jcnc.jnotepad.ui.module.AbstractBorderPane;
import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
/**
* RootBorderPane 表示 JNotepad 应用程序的根布局

View File

@ -1,7 +1,7 @@
package org.jcnc.jnotepad.views.root.bottom;
import javafx.scene.layout.VBox;
import org.jcnc.jnotepad.ui.module.AbstractVerticalBox;
import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
/**
* 底部根侧边栏垂直布局

View File

@ -1,7 +1,7 @@
package org.jcnc.jnotepad.views.root.bottom.status;
import javafx.scene.control.Label;
import org.jcnc.jnotepad.ui.module.AbstractHorizontalBox;
import org.jcnc.jnotepad.component.module.base.AbstractHorizontalBox;
/**
* 状态栏组件封装

View File

@ -1,6 +1,6 @@
package org.jcnc.jnotepad.views.root.center.main;
import org.jcnc.jnotepad.ui.module.AbstractBorderPane;
import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
/**
* 主界面边界布局

View File

@ -2,8 +2,8 @@ package org.jcnc.jnotepad.views.root.center.main.center.directory;
import javafx.scene.control.TreeItem;
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.model.entity.DirFileModel;
import java.io.File;
import java.util.Objects;

View File

@ -2,9 +2,9 @@ package org.jcnc.jnotepad.views.root.center.main.center.tab;
import javafx.scene.control.Tab;
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.ui.module.LineNumberTextArea;
import org.jcnc.jnotepad.util.LogUtil;
import org.jcnc.jnotepad.views.manager.BottomStatusBoxManager;
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
import org.slf4j.Logger;
@ -23,7 +23,7 @@ import java.nio.charset.Charset;
*/
public class CenterTab extends Tab {
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();
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());
}
public CenterTab(String tabTitle, LineNumberTextArea textArea, Charset charset) {
public CenterTab(String tabTitle, CodeArea textArea, Charset charset) {
super(tabTitle);
lineNumberTextArea = textArea;
codeArea = textArea;
initTextAreaListeners();
this.setContent(new VirtualizedScrollPane<>(lineNumberTextArea));
this.setContent(new VirtualizedScrollPane<>(codeArea));
setAutoLine(UserConfigController.getInstance().getAutoLineConfig());
this.charset = charset;
}
@ -69,11 +69,11 @@ public class CenterTab extends Tab {
public void setAutoLine(boolean autoLine) {
this.autoLine = autoLine;
lineNumberTextArea.setWrapText(autoLine);
codeArea.setWrapText(autoLine);
}
public LineNumberTextArea getLineNumberTextArea() {
return lineNumberTextArea;
public CodeArea getLineNumberTextArea() {
return codeArea;
}
public Charset getCharset() {
@ -126,7 +126,7 @@ public class CenterTab extends Tab {
*/
private void initTextAreaListeners() {
// 监听主要文本区域的文本变化
lineNumberTextArea.textProperty().addListener((observable, oldValue, newValue) -> {
codeArea.textProperty().addListener((observable, oldValue, newValue) -> {
BottomStatusBoxManager.getInstance().updateWordCountStatusLabel();
saveSelectedFileTab();
});

View File

@ -2,7 +2,7 @@ package org.jcnc.jnotepad.views.root.left.sidebar.tools;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import org.jcnc.jnotepad.ui.module.AbstractHorizontalBox;
import org.jcnc.jnotepad.component.module.base.AbstractHorizontalBox;
/**
* ToolHBox JNotepad 应用程序的工具栏水平布局类

View File

@ -2,7 +2,7 @@ package org.jcnc.jnotepad.views.root.left.sidebar.tools;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import org.jcnc.jnotepad.ui.module.AbstractVerticalBox;
import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
/**
* 垂直布局类

View File

@ -1,6 +1,6 @@
package org.jcnc.jnotepad.views.root.right;
import org.jcnc.jnotepad.ui.module.AbstractVerticalBox;
import org.jcnc.jnotepad.component.module.base.AbstractVerticalBox;
/**
* 右侧边栏的垂直布局容器类

View File

@ -1,6 +1,6 @@
package org.jcnc.jnotepad.views.root.top;
import org.jcnc.jnotepad.ui.module.AbstractBorderPane;
import org.jcnc.jnotepad.component.module.base.AbstractBorderPane;
/**
* RootTopBorderPane 类表示 JNotepad 应用程序的顶部边界面板

View File

@ -4,7 +4,7 @@ import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.stage.Stage;
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.Map;

View File

@ -3,7 +3,7 @@ package org.jcnc.jnotepad.views.root.top.menubar.menu;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
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.Map;

View File

@ -4,9 +4,9 @@ import javafx.scene.control.Menu;
import javafx.scene.control.MenuItem;
import javafx.stage.Stage;
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.event.handler.menuitem.OpenConfig;
import org.jcnc.jnotepad.util.UiUtil;
import org.jcnc.jnotepad.views.manager.CenterTabPaneManager;
import java.util.HashMap;