细微修改

This commit is contained in:
gewuyou 2023-10-02 22:06:41 +08:00
parent 49ea34ac7a
commit 566e08eb11
7 changed files with 71 additions and 55 deletions

View File

@ -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() {

View File

@ -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 {

View File

@ -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;
}
} }

View File

@ -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);
} }
} }

View File

@ -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;
}
}

View File

@ -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();

View File

@ -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);
}
} }