细微修改
This commit is contained in:
parent
49ea34ac7a
commit
566e08eb11
@ -81,6 +81,8 @@ public class ApplicationManager {
|
|||||||
// 使用加载关联文件并创建文本区域
|
// 使用加载关联文件并创建文本区域
|
||||||
List<String> rawParameters = application.getParameters().getRaw();
|
List<String> rawParameters = application.getParameters().getRaw();
|
||||||
Controller.getInstance().openAssociatedFileAndCreateTextArea(rawParameters);
|
Controller.getInstance().openAssociatedFileAndCreateTextArea(rawParameters);
|
||||||
|
// 加载已打开的文件夹
|
||||||
|
DirectorySidebarManager.getInstance().expandTheOpenFileTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initScene() {
|
private void initScene() {
|
||||||
|
|||||||
@ -9,6 +9,8 @@ import java.io.IOException;
|
|||||||
* @author luke
|
* @author luke
|
||||||
*/
|
*/
|
||||||
public class ApplicationRestarter {
|
public class ApplicationRestarter {
|
||||||
|
private ApplicationRestarter() {
|
||||||
|
}
|
||||||
|
|
||||||
public static void restart() {
|
public static void restart() {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package org.jcnc.jnotepad.common.util;
|
|||||||
|
|
||||||
import org.jcnc.jnotepad.controller.event.handler.menubar.OpenFile;
|
import org.jcnc.jnotepad.controller.event.handler.menubar.OpenFile;
|
||||||
import org.jcnc.jnotepad.exception.AppException;
|
import org.jcnc.jnotepad.exception.AppException;
|
||||||
|
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
@ -10,6 +11,7 @@ import java.nio.charset.Charset;
|
|||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件工具
|
* 文件工具
|
||||||
@ -126,4 +128,32 @@ public class FileUtil {
|
|||||||
}
|
}
|
||||||
return stringBuilder.toString();
|
return stringBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将文件夹转为DirFileModel
|
||||||
|
*
|
||||||
|
* @param file 文件
|
||||||
|
* @return DirFileModel 存储文件夹与文件关系的实体类
|
||||||
|
*/
|
||||||
|
public static DirFileModel getDirFileModel(File file) {
|
||||||
|
if (!file.exists()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
DirFileModel dirFileModel = new DirFileModel(file.getAbsolutePath(), file.getName(), new ArrayList<>());
|
||||||
|
|
||||||
|
File[] files = file.listFiles();
|
||||||
|
if (files != null) {
|
||||||
|
for (File f : files) {
|
||||||
|
if (f.isDirectory()) {
|
||||||
|
DirFileModel childDirFileModel = getDirFileModel(f);
|
||||||
|
dirFileModel.getChildFile().add(childDirFileModel);
|
||||||
|
} else {
|
||||||
|
dirFileModel.getChildFile().add(new DirFileModel(f.getAbsolutePath(), f.getName(), null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dirFileModel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,12 +6,12 @@ import javafx.event.EventHandler;
|
|||||||
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.common.manager.ApplicationCacheManager;
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
|
import org.jcnc.jnotepad.common.util.FileUtil;
|
||||||
|
import org.jcnc.jnotepad.common.util.UiUtil;
|
||||||
import org.jcnc.jnotepad.model.entity.Cache;
|
import org.jcnc.jnotepad.model.entity.Cache;
|
||||||
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
||||||
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
import org.jcnc.jnotepad.model.enums.CacheExpirationTime;
|
||||||
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicDirectoryChooserFactory;
|
import org.jcnc.jnotepad.ui.dialog.factory.impl.BasicDirectoryChooserFactory;
|
||||||
import org.jcnc.jnotepad.util.FileUtil;
|
|
||||||
import org.jcnc.jnotepad.util.UiUtil;
|
|
||||||
import org.jcnc.jnotepad.views.manager.DirectorySidebarManager;
|
import org.jcnc.jnotepad.views.manager.DirectorySidebarManager;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -24,7 +24,8 @@ import java.io.File;
|
|||||||
public class OpenDirectory implements EventHandler<ActionEvent> {
|
public class OpenDirectory implements EventHandler<ActionEvent> {
|
||||||
|
|
||||||
private static final ApplicationCacheManager CACHE_MANAGER = ApplicationCacheManager.getInstance();
|
private static final ApplicationCacheManager CACHE_MANAGER = ApplicationCacheManager.getInstance();
|
||||||
private static final DirectorySidebarManager DIRECTORY_SIDEBAR_MANAGER=DirectorySidebarManager.getInstance();
|
private static final DirectorySidebarManager DIRECTORY_SIDEBAR_MANAGER = DirectorySidebarManager.getInstance();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(ActionEvent actionEvent) {
|
public void handle(ActionEvent actionEvent) {
|
||||||
// 获取缓存
|
// 获取缓存
|
||||||
@ -50,13 +51,14 @@ public class OpenDirectory implements EventHandler<ActionEvent> {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void flushDirSidebar(File file){
|
public void flushDirSidebar(File file) {
|
||||||
// 将文件转为实体类
|
// 将文件转为实体类
|
||||||
DirFileModel dirFileModel = FileUtil.getDirFileModel(file);
|
DirFileModel dirFileModel = FileUtil.getDirFileModel(file);
|
||||||
|
// 缓存已打开的文件夹
|
||||||
|
CACHE_MANAGER.addCache(CACHE_MANAGER.createCache("directory", "folderThatWasOpened", dirFileModel, CacheExpirationTime.NEVER_EXPIRES.getValue()));
|
||||||
// 打开侧边栏
|
// 打开侧边栏
|
||||||
DIRECTORY_SIDEBAR_MANAGER.controlShow(true);
|
DIRECTORY_SIDEBAR_MANAGER.controlShow(true);
|
||||||
// 设置文件树功能
|
// 设置文件树功能
|
||||||
DIRECTORY_SIDEBAR_MANAGER.setTreeView(dirFileModel);
|
DIRECTORY_SIDEBAR_MANAGER.setTreeView(dirFileModel);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,43 +0,0 @@
|
|||||||
package org.jcnc.jnotepad.util;
|
|
||||||
|
|
||||||
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author : cccqyu
|
|
||||||
* @createTime 2023/10/2 2:31
|
|
||||||
* @description 文件工具类
|
|
||||||
*/
|
|
||||||
public class FileUtil {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将文件夹转为DirFileModel
|
|
||||||
*
|
|
||||||
* @param file 文件
|
|
||||||
* @return DirFileModel 存储文件夹与文件关系的实体类
|
|
||||||
*/
|
|
||||||
public static DirFileModel getDirFileModel(File file) {
|
|
||||||
if (!file.exists()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
DirFileModel dirFileModel = new DirFileModel(file.getAbsolutePath(), file.getName(), new ArrayList<>());
|
|
||||||
|
|
||||||
File[] files = file.listFiles();
|
|
||||||
if (files != null) {
|
|
||||||
for (File f : files) {
|
|
||||||
if (f.isDirectory()) {
|
|
||||||
DirFileModel childDirFileModel = getDirFileModel(f);
|
|
||||||
dirFileModel.getChildFile().add(childDirFileModel);
|
|
||||||
} else {
|
|
||||||
dirFileModel.getChildFile().add(new DirFileModel(f.getAbsolutePath(), f.getName(), null));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return dirFileModel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -74,6 +74,9 @@ public class CenterTabPaneManager {
|
|||||||
* @apiNote 该方法检查当前文件是否被修改,如果被修改,则返回true
|
* @apiNote 该方法检查当前文件是否被修改,如果被修改,则返回true
|
||||||
*/
|
*/
|
||||||
public void checkFileTabStatus(CenterTab tab) {
|
public void checkFileTabStatus(CenterTab tab) {
|
||||||
|
if (tab == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (tab.isRelevance()) {
|
if (tab.isRelevance()) {
|
||||||
// 获取当前文本域对象
|
// 获取当前文本域对象
|
||||||
LineNumberTextArea lineNumberTextArea = tab.getLineNumberTextArea();
|
LineNumberTextArea lineNumberTextArea = tab.getLineNumberTextArea();
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package org.jcnc.jnotepad.views.manager;
|
package org.jcnc.jnotepad.views.manager;
|
||||||
|
|
||||||
import javafx.scene.control.TreeItem;
|
import javafx.scene.control.TreeItem;
|
||||||
|
import org.jcnc.jnotepad.common.manager.ApplicationCacheManager;
|
||||||
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
import org.jcnc.jnotepad.model.entity.DirFileModel;
|
||||||
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;
|
||||||
@ -17,7 +18,8 @@ public class DirectorySidebarManager {
|
|||||||
private DirectorySidebarManager() {
|
private DirectorySidebarManager() {
|
||||||
}
|
}
|
||||||
|
|
||||||
;
|
private static final ApplicationCacheManager CACHE_MANAGER = ApplicationCacheManager.getInstance();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单例模式,保证只有一个 DirectorySidebar 实例
|
* 单例模式,保证只有一个 DirectorySidebar 实例
|
||||||
*/
|
*/
|
||||||
@ -34,7 +36,7 @@ public class DirectorySidebarManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 控制文件树显示
|
* 控制文件树显示
|
||||||
* */
|
*/
|
||||||
public void controlShow() {
|
public void controlShow() {
|
||||||
boolean isVisible = DIRECTORY_SIDEBAR_PANE.isVisible();
|
boolean isVisible = DIRECTORY_SIDEBAR_PANE.isVisible();
|
||||||
// 设置自身显示
|
// 设置自身显示
|
||||||
@ -47,10 +49,12 @@ public class DirectorySidebarManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 控制文件树显示
|
* 控制文件树显示
|
||||||
|
*
|
||||||
* @param bool 打开
|
* @param bool 打开
|
||||||
* */
|
*/
|
||||||
public void controlShow(boolean bool) {
|
public void controlShow(boolean bool) {
|
||||||
// 设置自身显示
|
// 设置自身显示
|
||||||
DIRECTORY_SIDEBAR_PANE.setVisible(bool);
|
DIRECTORY_SIDEBAR_PANE.setVisible(bool);
|
||||||
@ -62,20 +66,23 @@ public class DirectorySidebarManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置文件树内容
|
* 设置文件树内容
|
||||||
|
*
|
||||||
* @param dirFileModel 文件
|
* @param dirFileModel 文件
|
||||||
* */
|
*/
|
||||||
public void setTreeView(DirFileModel dirFileModel) {
|
public void setTreeView(DirFileModel dirFileModel) {
|
||||||
TreeItem<DirFileModel> rootItem = new TreeItem<DirFileModel>(dirFileModel);
|
TreeItem<DirFileModel> rootItem = new TreeItem<>(dirFileModel);
|
||||||
|
|
||||||
DIRECTORY_SIDEBAR_PANE.setRoot(rootItem);
|
DIRECTORY_SIDEBAR_PANE.setRoot(rootItem);
|
||||||
|
|
||||||
expandFolder(dirFileModel, rootItem);
|
expandFolder(dirFileModel, rootItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 递归展开 dirFileModel
|
* 递归展开 dirFileModel
|
||||||
|
*
|
||||||
* @param dirFileModel 文件
|
* @param dirFileModel 文件
|
||||||
* @param item 文件树子项内容
|
* @param item 文件树子项内容
|
||||||
* */
|
*/
|
||||||
private void expandFolder(DirFileModel dirFileModel, TreeItem<DirFileModel> item) {
|
private void expandFolder(DirFileModel dirFileModel, TreeItem<DirFileModel> item) {
|
||||||
List<DirFileModel> childFileList = dirFileModel.getChildFile();
|
List<DirFileModel> childFileList = dirFileModel.getChildFile();
|
||||||
if (childFileList != null) {
|
if (childFileList != null) {
|
||||||
@ -88,5 +95,18 @@ public class DirectorySidebarManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void expandTheOpenFileTree() {
|
||||||
|
// 获取缓存
|
||||||
|
Object cacheData = CACHE_MANAGER.getCacheData("directory", "folderThatWasOpened");
|
||||||
|
// 判空
|
||||||
|
if (cacheData == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 打开侧边栏
|
||||||
|
controlShow(true);
|
||||||
|
// 设置文件树功能
|
||||||
|
setTreeView((DirFileModel) cacheData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user