diff --git a/README.md b/README.md
index 78c11e8..752e774 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
JNotepad
JavaFX开发,插件驱动,创造无限可能
diff --git a/src/main/java/org/jcnc/jnotepad/app/i18n/UiResourceBundle.java b/src/main/java/org/jcnc/jnotepad/app/i18n/UiResourceBundle.java
index 945f872..bf6245b 100644
--- a/src/main/java/org/jcnc/jnotepad/app/i18n/UiResourceBundle.java
+++ b/src/main/java/org/jcnc/jnotepad/app/i18n/UiResourceBundle.java
@@ -21,7 +21,7 @@ public class UiResourceBundle {
/**
* resource目录下的i18n/i18nXXX.properties
*/
- private static final String BASENAME = "i18n/i18n";
+ private static final String BASENAME = "jcnc/app/i18n/i18n";
/**
* 资源文件的观察者绑定。
*/
diff --git a/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java b/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java
index 1a43139..c3238b1 100644
--- a/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java
+++ b/src/main/java/org/jcnc/jnotepad/app/manager/ApplicationManager.java
@@ -106,7 +106,7 @@ public class ApplicationManager {
double width = AppConstants.SCREEN_WIDTH;
double length = AppConstants.SCREEN_LENGTH;
scene = new Scene(root, width, length);
- scene.getStylesheets().add(Objects.requireNonNull(application.getClass().getResource("/css/styles.css")).toExternalForm());
+ scene.getStylesheets().add(Objects.requireNonNull(application.getClass().getResource("/jcnc/app/css/styles.css")).toExternalForm());
}
private void initPrimaryStage() {
diff --git a/src/main/java/org/jcnc/jnotepad/common/constants/AppConstants.java b/src/main/java/org/jcnc/jnotepad/common/constants/AppConstants.java
index 69a7a19..6419719 100644
--- a/src/main/java/org/jcnc/jnotepad/common/constants/AppConstants.java
+++ b/src/main/java/org/jcnc/jnotepad/common/constants/AppConstants.java
@@ -33,7 +33,7 @@ public class AppConstants {
/**
* logo地址
*/
- public static final String APP_ICON = "/img/icon.png";
+ public static final String APP_ICON = "/jcnc/app/images/appIcons/icon.png";
/**
* 默认标签页的正则
diff --git a/src/main/java/org/jcnc/jnotepad/component/module/TextCodeArea.java b/src/main/java/org/jcnc/jnotepad/component/module/TextCodeArea.java
index 451958f..3a36ae3 100644
--- a/src/main/java/org/jcnc/jnotepad/component/module/TextCodeArea.java
+++ b/src/main/java/org/jcnc/jnotepad/component/module/TextCodeArea.java
@@ -107,7 +107,7 @@ public class TextCodeArea extends CodeArea {
}
}
});
- this.getStylesheets().add(Objects.requireNonNull(getClass().getResource("/css/java_code_styles.css")).toString());
+ this.getStylesheets().add(Objects.requireNonNull(getClass().getResource("/jcnc/app/css/java_code_styles.css")).toString());
}
diff --git a/src/main/java/org/jcnc/jnotepad/model/entity/DirFileModel.java b/src/main/java/org/jcnc/jnotepad/model/entity/DirFileModel.java
index 0d65f28..f7c11b4 100644
--- a/src/main/java/org/jcnc/jnotepad/model/entity/DirFileModel.java
+++ b/src/main/java/org/jcnc/jnotepad/model/entity/DirFileModel.java
@@ -1,5 +1,6 @@
package org.jcnc.jnotepad.model.entity;
+import javafx.scene.Node;
import org.kordamp.ikonli.javafx.FontIcon;
import java.util.List;
@@ -16,9 +17,9 @@ public class DirFileModel {
private String path;
private String name;
- private FontIcon iconIsNotSelected;
+ private Node iconIsNotSelected;
- private FontIcon iconIsSelected;
+ private Node iconIsSelected;
private List childFile;
@@ -31,6 +32,14 @@ public class DirFileModel {
this.iconIsSelected = iconIsSelected;
}
+ public DirFileModel(String path, String name, List childFile, Node iconIsNotSelected, Node iconIsSelected) {
+ this.path = path;
+ this.name = name;
+ this.childFile = childFile;
+ this.iconIsNotSelected = iconIsNotSelected;
+ this.iconIsSelected = iconIsSelected;
+ }
+
public List getChildFile() {
return childFile;
@@ -57,7 +66,7 @@ public class DirFileModel {
return name;
}
- public FontIcon getIconIsNotSelected() {
+ public Node getIconIsNotSelected() {
return iconIsNotSelected;
}
@@ -65,7 +74,7 @@ public class DirFileModel {
this.iconIsNotSelected = iconIsNotSelected;
}
- public FontIcon getIconIsSelected() {
+ public Node getIconIsSelected() {
return iconIsSelected;
}
diff --git a/src/main/java/org/jcnc/jnotepad/util/FileUtil.java b/src/main/java/org/jcnc/jnotepad/util/FileUtil.java
index ba0709a..5df4111 100644
--- a/src/main/java/org/jcnc/jnotepad/util/FileUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/util/FileUtil.java
@@ -158,7 +158,7 @@ public class FileUtil {
dirFileModel.getChildFile().add(childDirFileModel);
} else {
// todo 在此监测文件后缀,设置对应的图标
- dirFileModel.getChildFile().add(new DirFileModel(f.getAbsolutePath(), f.getName(), null, new FontIcon(FILE), new FontIcon(FILE)));
+ dirFileModel.getChildFile().add(new DirFileModel(f.getAbsolutePath(), f.getName(), null, getIconCorrespondingToFileName(f.getName()), new FontIcon(FILE)));
}
}
}
@@ -293,21 +293,13 @@ public class FileUtil {
/**
* Retrieves the icon corresponding to the given file name.
*
- * @param tabTitle the title of the tab
- * @return the icon node corresponding to the file name
+ * @param fileName the file name
+ * @return the corresponding icon for the file extension
*/
- public static Node getIconCorrespondingToFileName(String tabTitle) {
+ public static Node getIconCorrespondingToFileName(String fileName) {
// todo 在此根据文件缀名获取对应的图标
- String fileExtension = tabTitle.substring(tabTitle.lastIndexOf(".") + 1);
- return switch (fileExtension.toLowerCase()) {
- case "txt" -> FontIcon.of(FILE_TEXT);
- case "doc" -> FontIcon.of(FILE_WORD);
- case "pdf" -> FontIcon.of(FILE_PDF);
- case "ppt" -> FontIcon.of(FILE_PPT);
- case "xls" -> FontIcon.of(FILE_EXCEL);
- case "md" -> FontIcon.of(FILE_MARKDOWN);
- default -> FontIcon.of(FILE_UNKNOWN);
- };
+ String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);
+ return UiUtil.getIconMap().getOrDefault(fileExtension, FontIcon.of(FILE_UNKNOWN));
}
}
diff --git a/src/main/java/org/jcnc/jnotepad/util/ResourceUtil.java b/src/main/java/org/jcnc/jnotepad/util/ResourceUtil.java
new file mode 100644
index 0000000..ee7f7c0
--- /dev/null
+++ b/src/main/java/org/jcnc/jnotepad/util/ResourceUtil.java
@@ -0,0 +1,70 @@
+package org.jcnc.jnotepad.util;
+
+import org.jcnc.jnotepad.JnotepadApp;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
+import java.util.Objects;
+
+/**
+ * 资源工具
+ *
+ * @author gewuyou
+ */
+public class ResourceUtil {
+ public static final String MODULE_DIR = "/jcnc/app/";
+
+ private ResourceUtil() {
+ }
+
+ /**
+ * Retrieves an input stream for the specified resource.
+ *
+ * @param resource the path to the resource
+ * @return the input stream for the resource
+ */
+ public static InputStream getResourceAsStream(String resource) {
+ String path = resolve(resource);
+ return Objects.requireNonNull(
+ JnotepadApp.class.getResourceAsStream(resolve(path)),
+ "Resource not found: " + path
+ );
+ }
+
+ /**
+ * Retrieves the resource with the specified path.
+ *
+ * @param resource the path of the resource to retrieve
+ * @return the URI of the retrieved resource
+ */
+ public static URI getResource(String resource) {
+ String path = resolve(resource);
+ URL url = Objects.requireNonNull(JnotepadApp.class.getResource(resolve(path)), "Resource not found: " + path);
+ return URI.create(url.toExternalForm());
+ }
+
+ /**
+ * Resolves a resource path by checking if it starts with a "/". If it does,
+ * the resource path is returned as is. If it doesn't, the resource path is
+ * concatenated with the module directory path.
+ *
+ * @param resource the resource path to be resolved
+ * @param moduleDir the module directory path
+ * @return the resolved resource path
+ */
+ public static String resolve(String resource, String moduleDir) {
+ Objects.requireNonNull(resource);
+ return resource.startsWith("/") ? resource : moduleDir + resource;
+ }
+
+ /**
+ * Resolve the given resource using the default module directory.
+ *
+ * @param resource the resource to resolve
+ * @return the resolved resource
+ */
+ public static String resolve(String resource) {
+ return resolve(resource, MODULE_DIR);
+ }
+}
diff --git a/src/main/java/org/jcnc/jnotepad/util/UiUtil.java b/src/main/java/org/jcnc/jnotepad/util/UiUtil.java
index 6935d2c..7cfe1c0 100644
--- a/src/main/java/org/jcnc/jnotepad/util/UiUtil.java
+++ b/src/main/java/org/jcnc/jnotepad/util/UiUtil.java
@@ -1,12 +1,16 @@
package org.jcnc.jnotepad.util;
import atlantafx.base.theme.Styles;
+import javafx.scene.Node;
import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
import javafx.stage.Window;
import org.jcnc.jnotepad.app.manager.ApplicationManager;
import org.jcnc.jnotepad.common.constants.AppConstants;
import org.kordamp.ikonli.javafx.FontIcon;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Objects;
import static org.kordamp.ikonli.antdesignicons.AntDesignIconsFilled.*;
@@ -43,6 +47,10 @@ public class UiUtil {
private static final FontIcon QUESTION_ICON = FontIcon.of(QUESTION_CIRCLE);
private static final FontIcon SUCCESS_ICON = FontIcon.of(CHECK_CIRCLE);
+ /**
+ * 图标集合
+ */
+ private static final Map ICON_MAP = new HashMap<>(32);
static {
// 暂时设置颜色
@@ -51,6 +59,39 @@ public class UiUtil {
QUESTION_ICON.getStyleClass().addAll(Styles.ACCENT);
WARNING_ICON.getStyleClass().addAll(Styles.WARNING);
SUCCESS_ICON.getStyleClass().addAll(Styles.SUCCESS);
+ ICON_MAP.put("css", fileIconByPng("css"));
+ ICON_MAP.put("doc", fileIconByPng("doc"));
+ ICON_MAP.put("dll", fileIconByPng("dll"));
+ ICON_MAP.put("exe", fileIconByPng("exe"));
+ ICON_MAP.put("gif", fileIconByPng("gif"));
+ ICON_MAP.put("gitignore", fileIconByPng("git"));
+ ICON_MAP.put("html", fileIconByPng("html"));
+ ICON_MAP.put("json", fileIconByPng("json"));
+ ICON_MAP.put("md", fileIconByPng("markdown"));
+ ICON_MAP.put("pdf", FontIcon.of(FILE_PDF));
+ ICON_MAP.put("ppt", FontIcon.of(FILE_PPT));
+ ICON_MAP.put("png", fileIconByPng("png"));
+ ICON_MAP.put("sql", fileIconByPng("database"));
+ ICON_MAP.put("svg", fileIconByPng("svg"));
+ ICON_MAP.put("txt", FontIcon.of(FILE_TEXT));
+ ICON_MAP.put("xls", FontIcon.of(FILE_EXCEL));
+ ICON_MAP.put("xml", fileIconByPng("xml"));
+ // 编程语言
+ ICON_MAP.put("bat", fileIconByPng("bat"));
+ ICON_MAP.put("c", fileIconByPng("c"));
+ ICON_MAP.put("cs", fileIconByPng("csharp"));
+ ICON_MAP.put("cpp", fileIconByPng("cplusplus"));
+ ICON_MAP.put("go", fileIconByPng("golang"));
+ ICON_MAP.put("js", fileIconByPng("js"));
+ ICON_MAP.put("java", fileIconByPng("java"));
+ ICON_MAP.put("kt", fileIconByPng("kotlin"));
+ ICON_MAP.put("lua", fileIconByPng("lua"));
+ ICON_MAP.put("py", fileIconByPng("python"));
+ ICON_MAP.put("php", fileIconByPng("php"));
+ ICON_MAP.put("rb", fileIconByPng("ruby"));
+ ICON_MAP.put("sh", fileIconByPng("sh"));
+
+
}
private UiUtil() {
@@ -121,5 +162,61 @@ public class UiUtil {
return ApplicationManager.getInstance().getWindow();
}
+ /**
+ * Generates an ImageView with the specified module directory, name, and format.
+ *
+ * @param moduleDir the directory where the module is located
+ * @param name the name of the icon
+ * @param format the format of the icon
+ * @return the generated ImageView
+ */
+ public static ImageView icon(String moduleDir, String name, String format) {
+ return icon(moduleDir + name + format);
+ }
+ /**
+ * Generates an ImageView object with the image specified by the given path.
+ *
+ * @param path the path to the image file
+ * @return the ImageView object with the specified image
+ */
+ public static ImageView icon(String path) {
+ var img = new Image(ResourceUtil.getResourceAsStream(path));
+ return new ImageView(img);
+ }
+
+ /**
+ * Generates an ImageView based on a PNG file.
+ *
+ * @param moduleDir the directory of the module
+ * @param name the name of the PNG file
+ * @return the generated ImageView
+ */
+ public static ImageView iconByPng(String moduleDir, String name) {
+ return icon(moduleDir + name + ".png");
+ }
+
+ /**
+ * Generates an ImageView object for a file icon based on the given PNG name.
+ *
+ * @param name the name of the PNG file for the file icon
+ * @return the ImageView object representing the file icon
+ */
+ public static ImageView fileIconByPng(String name) {
+ return iconByPng("images/fileIcons/", name);
+ }
+
+ /**
+ * Generates an ImageView object for a file icon based on the given PNG name.
+ *
+ * @param name the name of the PNG file for the file icon
+ * @return the ImageView object representing the file icon
+ */
+ public static ImageView sidebarIconByPng(String name) {
+ return iconByPng("images/sidebarIcons/", name);
+ }
+
+ public static Map getIconMap() {
+ return ICON_MAP;
+ }
}
diff --git a/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java b/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java
index 010c100..cad62de 100644
--- a/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java
+++ b/src/main/java/org/jcnc/jnotepad/views/manager/SidebarToolBarManager.java
@@ -1,13 +1,12 @@
package org.jcnc.jnotepad.views.manager;
import javafx.scene.Node;
-import javafx.scene.image.Image;
-import javafx.scene.image.ImageView;
import org.jcnc.jnotepad.api.core.views.manager.AbstractManager;
import org.jcnc.jnotepad.api.core.views.manager.builder.SideBarButtonBuilder;
import org.jcnc.jnotepad.controller.event.handler.toolbar.DirTreeBtn;
import org.jcnc.jnotepad.controller.event.handler.toolbar.RunBtn;
import org.jcnc.jnotepad.controller.event.handler.toolbar.SetBtn;
+import org.jcnc.jnotepad.util.UiUtil;
import org.jcnc.jnotepad.views.root.left.sidebar.tools.SidebarToolBar;
import java.util.ArrayList;
@@ -42,7 +41,7 @@ public class SidebarToolBarManager extends AbstractManager {
registerNode(
new SideBarButtonBuilder()
.setButton(sidebarToolBar.getSetButton())
- .setImageView(new ImageView(new Image("tools.png")))
+ .setImageView(UiUtil.sidebarIconByPng("tools"))
.setImageViewEssentialAttribute(10D, 10D, true, 2.5D, 2.5D)
.setButtonEssentialAttribute(20D, 20D)
.setEventHandler(new SetBtn()).build());
@@ -50,7 +49,7 @@ public class SidebarToolBarManager extends AbstractManager {
registerNode(
new SideBarButtonBuilder()
.setButton(sidebarToolBar.getDirTreeButton())
- .setImageView(new ImageView(new Image("directory.png")))
+ .setImageView(UiUtil.sidebarIconByPng("directory"))
.setImageViewEssentialAttribute(10D, 10D, true, 2.5D, 2.5D)
.setButtonEssentialAttribute(20D, 20D)
.setEventHandler(new DirTreeBtn()).build());
@@ -60,7 +59,7 @@ public class SidebarToolBarManager extends AbstractManager {
registerNode(
new SideBarButtonBuilder()
.setButton(sidebarToolBar.getRunButton())
- .setImageView(new ImageView(new Image("cmd.png")))
+ .setImageView(UiUtil.sidebarIconByPng("cmd"))
.setImageViewEssentialAttribute(10D, 10D, true, 2.5D, 2.5D)
.setButtonEssentialAttribute(20D, 20D)
.setEventHandler(new RunBtn()).build());
diff --git a/src/main/resources/css/java_code_styles.css b/src/main/resources/jcnc/app/css/java_code_styles.css
similarity index 100%
rename from src/main/resources/css/java_code_styles.css
rename to src/main/resources/jcnc/app/css/java_code_styles.css
diff --git a/src/main/resources/css/styles.css b/src/main/resources/jcnc/app/css/styles.css
similarity index 100%
rename from src/main/resources/css/styles.css
rename to src/main/resources/jcnc/app/css/styles.css
diff --git a/src/main/resources/i18n/i18n.properties b/src/main/resources/jcnc/app/i18n/i18n.properties
similarity index 100%
rename from src/main/resources/i18n/i18n.properties
rename to src/main/resources/jcnc/app/i18n/i18n.properties
diff --git a/src/main/resources/i18n/i18n_en.properties b/src/main/resources/jcnc/app/i18n/i18n_en.properties
similarity index 100%
rename from src/main/resources/i18n/i18n_en.properties
rename to src/main/resources/jcnc/app/i18n/i18n_en.properties
diff --git a/src/main/resources/i18n/i18n_zh_CN.properties b/src/main/resources/jcnc/app/i18n/i18n_zh_CN.properties
similarity index 100%
rename from src/main/resources/i18n/i18n_zh_CN.properties
rename to src/main/resources/jcnc/app/i18n/i18n_zh_CN.properties
diff --git a/src/main/resources/img/JCNC.png b/src/main/resources/jcnc/app/images/appIcons/JCNC.png
similarity index 100%
rename from src/main/resources/img/JCNC.png
rename to src/main/resources/jcnc/app/images/appIcons/JCNC.png
diff --git a/src/main/resources/img/icon.icns b/src/main/resources/jcnc/app/images/appIcons/icon.icns
similarity index 100%
rename from src/main/resources/img/icon.icns
rename to src/main/resources/jcnc/app/images/appIcons/icon.icns
diff --git a/src/main/resources/img/icon.ico b/src/main/resources/jcnc/app/images/appIcons/icon.ico
similarity index 100%
rename from src/main/resources/img/icon.ico
rename to src/main/resources/jcnc/app/images/appIcons/icon.ico
diff --git a/src/main/resources/img/icon.png b/src/main/resources/jcnc/app/images/appIcons/icon.png
similarity index 100%
rename from src/main/resources/img/icon.png
rename to src/main/resources/jcnc/app/images/appIcons/icon.png
diff --git a/src/main/resources/jcnc/app/images/fileIcons/bat.png b/src/main/resources/jcnc/app/images/fileIcons/bat.png
new file mode 100644
index 0000000..8bdf3ee
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/bat.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/c.png b/src/main/resources/jcnc/app/images/fileIcons/c.png
new file mode 100644
index 0000000..2953a32
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/c.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/cplusplus.png b/src/main/resources/jcnc/app/images/fileIcons/cplusplus.png
new file mode 100644
index 0000000..9a8686a
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/cplusplus.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/csharp.png b/src/main/resources/jcnc/app/images/fileIcons/csharp.png
new file mode 100644
index 0000000..1c2d915
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/csharp.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/css.png b/src/main/resources/jcnc/app/images/fileIcons/css.png
new file mode 100644
index 0000000..0aaf7de
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/css.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/database.png b/src/main/resources/jcnc/app/images/fileIcons/database.png
new file mode 100644
index 0000000..4a82096
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/database.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/dll.png b/src/main/resources/jcnc/app/images/fileIcons/dll.png
new file mode 100644
index 0000000..c331337
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/dll.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/doc.png b/src/main/resources/jcnc/app/images/fileIcons/doc.png
new file mode 100644
index 0000000..d4323ab
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/doc.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/exe.png b/src/main/resources/jcnc/app/images/fileIcons/exe.png
new file mode 100644
index 0000000..5ebb855
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/exe.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/gif.png b/src/main/resources/jcnc/app/images/fileIcons/gif.png
new file mode 100644
index 0000000..2f2a75b
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/gif.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/git.png b/src/main/resources/jcnc/app/images/fileIcons/git.png
new file mode 100644
index 0000000..0f03936
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/git.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/golang.png b/src/main/resources/jcnc/app/images/fileIcons/golang.png
new file mode 100644
index 0000000..161ccf7
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/golang.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/html.png b/src/main/resources/jcnc/app/images/fileIcons/html.png
new file mode 100644
index 0000000..069bf40
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/html.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/java.png b/src/main/resources/jcnc/app/images/fileIcons/java.png
new file mode 100644
index 0000000..60a8e97
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/java.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/js.png b/src/main/resources/jcnc/app/images/fileIcons/js.png
new file mode 100644
index 0000000..e1d007f
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/js.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/json.png b/src/main/resources/jcnc/app/images/fileIcons/json.png
new file mode 100644
index 0000000..bcd7bac
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/json.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/kotlin.png b/src/main/resources/jcnc/app/images/fileIcons/kotlin.png
new file mode 100644
index 0000000..4812072
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/kotlin.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/lua.png b/src/main/resources/jcnc/app/images/fileIcons/lua.png
new file mode 100644
index 0000000..7118da1
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/lua.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/markdown.png b/src/main/resources/jcnc/app/images/fileIcons/markdown.png
new file mode 100644
index 0000000..3ad61d9
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/markdown.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/php.png b/src/main/resources/jcnc/app/images/fileIcons/php.png
new file mode 100644
index 0000000..d559dfe
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/php.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/png.png b/src/main/resources/jcnc/app/images/fileIcons/png.png
new file mode 100644
index 0000000..f73a5f0
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/png.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/python.png b/src/main/resources/jcnc/app/images/fileIcons/python.png
new file mode 100644
index 0000000..58595f4
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/python.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/ruby.png b/src/main/resources/jcnc/app/images/fileIcons/ruby.png
new file mode 100644
index 0000000..3f59bfb
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/ruby.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/sh.png b/src/main/resources/jcnc/app/images/fileIcons/sh.png
new file mode 100644
index 0000000..f3faf4e
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/sh.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/svg.png b/src/main/resources/jcnc/app/images/fileIcons/svg.png
new file mode 100644
index 0000000..52affcf
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/svg.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/txt.png b/src/main/resources/jcnc/app/images/fileIcons/txt.png
new file mode 100644
index 0000000..51731c2
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/txt.png differ
diff --git a/src/main/resources/jcnc/app/images/fileIcons/xml.png b/src/main/resources/jcnc/app/images/fileIcons/xml.png
new file mode 100644
index 0000000..68c8655
Binary files /dev/null and b/src/main/resources/jcnc/app/images/fileIcons/xml.png differ
diff --git a/src/main/resources/cmd.png b/src/main/resources/jcnc/app/images/sidebarIcons/cmd.png
similarity index 100%
rename from src/main/resources/cmd.png
rename to src/main/resources/jcnc/app/images/sidebarIcons/cmd.png
diff --git a/src/main/resources/directory.png b/src/main/resources/jcnc/app/images/sidebarIcons/directory.png
similarity index 100%
rename from src/main/resources/directory.png
rename to src/main/resources/jcnc/app/images/sidebarIcons/directory.png
diff --git a/src/main/resources/tools.gif b/src/main/resources/jcnc/app/images/sidebarIcons/tools.gif
similarity index 100%
rename from src/main/resources/tools.gif
rename to src/main/resources/jcnc/app/images/sidebarIcons/tools.gif
diff --git a/src/main/resources/tools.png b/src/main/resources/jcnc/app/images/sidebarIcons/tools.png
similarity index 100%
rename from src/main/resources/tools.png
rename to src/main/resources/jcnc/app/images/sidebarIcons/tools.png
diff --git a/src/main/resources/img/icon.svg b/src/main/resources/jcnc/app/svg/icon.svg
similarity index 100%
rename from src/main/resources/img/icon.svg
rename to src/main/resources/jcnc/app/svg/icon.svg
diff --git a/tool/jpackage.sh b/tool/jpackage.sh
index fa92d04..3ea1fdd 100644
--- a/tool/jpackage.sh
+++ b/tool/jpackage.sh
@@ -6,6 +6,6 @@ jpackage \
--type app-image \
-m org.jcnc.jnotepad/org.jcnc.jnotepad.JnotepadApp \
--runtime-image ./target/JNotepad/ \
- --icon src/main/resources/img/icon.ico \
+ --icon src/main/resources/jcnc/app/images/appIcons/icon.ico \
--app-version 1.1.14 \
--vendor "JCNC"
\ No newline at end of file
diff --git a/tool/jpackage.txt b/tool/jpackage.txt
index e9d6604..cc4ea98 100644
--- a/tool/jpackage.txt
+++ b/tool/jpackage.txt
@@ -3,6 +3,6 @@ jpackage `
--type app-image `
-m org.jcnc.jnotepad/org.jcnc.jnotepad.JnotepadApp `
--runtime-image .\target\JNotepad\ `
- --icon src/main/resources/img/icon.ico `
+ --icon src/main/resources/jcnc/app/images/appIcons/icon.ico `
--app-version 1.1.14 `
--vendor "JCNC"
\ No newline at end of file