From f625e5845382c032d0e536dc57dea15ef9fd38da Mon Sep 17 00:00:00 2001 From: pandaa Date: Thu, 6 Aug 2026 20:23:08 +0200 Subject: [PATCH] #5 fixed ChatDto.writeToFile --- .../de/derpandaa/plinfa/ChatListWidget.java | 5 +++-- .../java/de/derpandaa/plinfa/ChatWindow.java | 2 +- .../de/derpandaa/plinfa/PlinfaWindow.java | 3 ++- .../java/de/derpandaa/plinfa/dto/ChatDto.java | 20 +++++++++++++++---- .../plinfa/projects/GenericProject.java | 16 ++++++++++++--- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/derpandaa/plinfa/ChatListWidget.java b/src/main/java/de/derpandaa/plinfa/ChatListWidget.java index dc84ed0..e6c8f82 100644 --- a/src/main/java/de/derpandaa/plinfa/ChatListWidget.java +++ b/src/main/java/de/derpandaa/plinfa/ChatListWidget.java @@ -19,8 +19,9 @@ public class ChatListWidget extends JTree { public ChatListWidget(Consumer clickedFunction) { super(); this.clickHandler = clickedFunction; - setRootVisible(true); - GenericProject rootProject = new GenericProject(new File(ChatDto.PROJECT_DIR)); + setRootVisible(false); + setShowsRootHandles(true); + GenericProject rootProject = new GenericProject(new File(GenericProject.PROJECT_DIR), null); DefaultMutableTreeNode rootNode = buildTree(rootProject); setModel(new DefaultTreeModel(rootNode)); addTreeSelectionListener(e -> { diff --git a/src/main/java/de/derpandaa/plinfa/ChatWindow.java b/src/main/java/de/derpandaa/plinfa/ChatWindow.java index 2b5f7bb..e4e2ce2 100644 --- a/src/main/java/de/derpandaa/plinfa/ChatWindow.java +++ b/src/main/java/de/derpandaa/plinfa/ChatWindow.java @@ -187,9 +187,9 @@ public class ChatWindow extends JPanel { if (name == null || name.isBlank()) return; chatDto.setName(name); - chatDto.writeToFile(); onFirstSave.run(); } + chatDto.writeToFile(); } public void focusInput() { diff --git a/src/main/java/de/derpandaa/plinfa/PlinfaWindow.java b/src/main/java/de/derpandaa/plinfa/PlinfaWindow.java index affa31f..377a3e9 100644 --- a/src/main/java/de/derpandaa/plinfa/PlinfaWindow.java +++ b/src/main/java/de/derpandaa/plinfa/PlinfaWindow.java @@ -23,6 +23,7 @@ import com.formdev.flatlaf.extras.FlatSVGIcon.ColorFilter; import de.derpandaa.plinfa.aiprovider.OpenAiProvider; import de.derpandaa.plinfa.dto.ChatDto; +import de.derpandaa.plinfa.projects.GenericProject; public class PlinfaWindow extends JFrame { @@ -132,7 +133,7 @@ public class PlinfaWindow extends JFrame { } OpenAiProvider.API_KEY = props.getProperty("OPENAI_KEY"); - ChatDto.PROJECT_DIR = props.getProperty("PROJECT_DIR"); + GenericProject.PROJECT_DIR = props.getProperty("PROJECT_DIR"); } public static void noOutline(JComponent c) { diff --git a/src/main/java/de/derpandaa/plinfa/dto/ChatDto.java b/src/main/java/de/derpandaa/plinfa/dto/ChatDto.java index 18c8153..c9cb3e7 100644 --- a/src/main/java/de/derpandaa/plinfa/dto/ChatDto.java +++ b/src/main/java/de/derpandaa/plinfa/dto/ChatDto.java @@ -4,22 +4,30 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import de.derpandaa.plinfa.projects.GenericProject; import tools.jackson.core.JacksonException; import tools.jackson.core.type.TypeReference; import tools.jackson.databind.ObjectMapper; public class ChatDto { - public static String PROJECT_DIR; - private String name; + + private GenericProject parent; + List messages; + private ChatDto(GenericProject parent) { + this.parent = parent; + } + public ChatDto() { + this(null); messages = new ArrayList(); } - public ChatDto(File f) { + public ChatDto(File f, GenericProject parent) { + this(parent); loadFromFile(f); } @@ -57,7 +65,7 @@ public class ChatDto { return; } ObjectMapper mapper = new ObjectMapper(); - File f = new File(String.format("%s/%s.json", PROJECT_DIR, name)); + File f = new File(getPath()); mapper.writeValue(f.getAbsoluteFile(), messages); } @@ -65,4 +73,8 @@ public class ChatDto { public String toString() { return name; } + + private String getPath() { + return String.format("%s/%s.json", parent.getFullName(),name); + } } diff --git a/src/main/java/de/derpandaa/plinfa/projects/GenericProject.java b/src/main/java/de/derpandaa/plinfa/projects/GenericProject.java index 22b1a8c..778937a 100644 --- a/src/main/java/de/derpandaa/plinfa/projects/GenericProject.java +++ b/src/main/java/de/derpandaa/plinfa/projects/GenericProject.java @@ -7,12 +7,15 @@ import java.util.List; import de.derpandaa.plinfa.dto.ChatDto; public class GenericProject { + public static String PROJECT_DIR; private String name; + private final GenericProject parent; private List subProjects; private List chats; - public GenericProject(File dir) { + public GenericProject(File dir, GenericProject parent) { this.name = dir.getName(); + this.parent = parent; this.subProjects = new ArrayList<>(); this.chats = new ArrayList<>(); load(dir); @@ -25,9 +28,9 @@ public class GenericProject { for (File f : files) { if (f.isDirectory()) { - subProjects.add(new GenericProject(f)); + subProjects.add(new GenericProject(f, this)); } else if (f.getName().endsWith(".json")) { - chats.add(new ChatDto(f)); + chats.add(new ChatDto(f, this)); } } } @@ -36,6 +39,13 @@ public class GenericProject { return name; } + public String getFullName() { + if (parent == null) { + return PROJECT_DIR; + } + return String.format("%s/%s/", parent.getFullName(), name); + } + public List getSubProjects() { return subProjects; }