Skip to content
This repository was archived by the owner on Sep 12, 2024. It is now read-only.

Commit df4ef8a

Browse files
committed
Event listeners but still facing async issues & Removed redundant code areas
# TODO - fix broken async logic - improve event listeners - Many buggy features to fix Signed-off-by: zhaoxinn <[email protected]>
1 parent 365f2e7 commit df4ef8a

13 files changed

+101
-204
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
<shadedArtifactAttached>false</shadedArtifactAttached>
115115
<transformers>
116116
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
117-
<mainClass>com.zxzinn.novelai.gui.MainGUI</mainClass>
117+
<mainClass>com.zxzinn.novelai.gui.ContainerGUI</mainClass>
118118
</transformer>
119119
</transformers>
120120
<filters>

src/main/java/com/zxzinn/novelai/Application.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
package com.zxzinn.novelai;
22

33
import com.zxzinn.novelai.config.ConfigManager;
4-
import com.zxzinn.novelai.gui.MainGUI;
4+
import com.zxzinn.novelai.gui.ContainerGUI;
55
import lombok.extern.log4j.Log4j2;
66

77
import javax.swing.*;
88

99
@Log4j2
1010
public class Application {
1111
private final ConfigManager config;
12-
private final MainGUI mainGUI;
12+
private final ContainerGUI containerGUI;
1313

1414
public Application() {
1515
config = ConfigManager.getInstance();
16-
mainGUI = new MainGUI();
16+
containerGUI = new ContainerGUI();
1717
}
1818

1919
public void start() {
2020
SwingUtilities.invokeLater(() -> {
2121
try {
2222
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
2323
} catch (Exception e) {
24-
log.error("Error setting Look and Feel", e);
24+
log.error("設置外觀和感覺時出錯", e);
2525
}
26-
mainGUI.setVisible(true);
27-
log.info("Application started");
26+
containerGUI.setVisible(true);
27+
log.info("應用程序已啟動");
2828
});
2929
}
3030

src/main/java/com/zxzinn/novelai/event/FileOperationEvent.java

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import lombok.Getter;
44

55
import java.io.File;
6-
import java.util.EventListener;
76
import java.util.EventObject;
87

98
@Getter

src/main/java/com/zxzinn/novelai/event/GenerationStateChangeEvent.java

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.zxzinn.novelai.GenerationState;
44
import lombok.Getter;
55

6-
import java.util.EventListener;
76
import java.util.EventObject;
87

98
@Getter

src/main/java/com/zxzinn/novelai/event/ImageReceivedEvent.java

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import lombok.Getter;
44

55
import java.awt.image.BufferedImage;
6-
import java.util.EventListener;
76
import java.util.EventObject;
87

98
@Getter

src/main/java/com/zxzinn/novelai/event/ParameterChangeEvent.java

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import lombok.Getter;
44

5-
import java.util.EventListener;
65
import java.util.EventObject;
76

87
@Getter

src/main/java/com/zxzinn/novelai/event/PromptUpdateEvent.java

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import lombok.Getter;
44

5-
import java.util.EventListener;
65
import java.util.EventObject;
76

87
@Getter

src/main/java/com/zxzinn/novelai/generation/GenerationStrategy.java

-4
This file was deleted.

src/main/java/com/zxzinn/novelai/generation/prompt/embed/EmbedProcessor.java

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public String processPrompt(String input) {
2929
return finalResult;
3030
}
3131

32+
@SuppressWarnings("unchecked")
3233
private String processEmbeds(String input) {
3334
List<EmbedDetector.EmbedTag> embeds = embedDetector.detectEmbeds(input);
3435
StringBuilder result = new StringBuilder(input);

src/main/java/com/zxzinn/novelai/generation/prompt/embed/TagGroupProcessor.java

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.stream.Collectors;
77

88
@Log4j2
9+
@SuppressWarnings("unchecked")
910
public class TagGroupProcessor {
1011
private final Map<String, Object> group;
1112
private final Random random;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.zxzinn.novelai.gui;
2+
3+
import com.zxzinn.novelai.config.ConfigManager;
4+
import com.zxzinn.novelai.gui.filewindow.FileManagerTab;
5+
import com.zxzinn.novelai.gui.generation.GenerationGUI;
6+
import com.zxzinn.novelai.utils.I18nManager;
7+
import com.zxzinn.novelai.utils.UIComponent;
8+
import lombok.extern.log4j.Log4j2;
9+
10+
import javax.swing.*;
11+
import java.awt.*;
12+
import java.awt.event.WindowAdapter;
13+
import java.awt.event.WindowEvent;
14+
15+
@Log4j2
16+
public class ContainerGUI extends JFrame implements UIComponent {
17+
private static final ConfigManager config = ConfigManager.getInstance();
18+
public static final int WINDOW_WIDTH = config.getInteger("ui.window.width");
19+
public static final int WINDOW_HEIGHT = config.getInteger("ui.window.height");
20+
21+
private JTabbedPane mainTabbedPane;
22+
private GenerationGUI generationGUI;
23+
private FileManagerTab fileManagerTab;
24+
25+
public ContainerGUI() {
26+
setTitle(config.getString("application.name") + " v" + config.getString("application.version"));
27+
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
28+
setLocationRelativeTo(null);
29+
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
30+
31+
initializeComponents();
32+
layoutComponents();
33+
bindEvents();
34+
setupWindowListener();
35+
36+
log.info("ContainerGUI initialized");
37+
}
38+
39+
@Override
40+
public void initializeComponents() {
41+
mainTabbedPane = new JTabbedPane();
42+
generationGUI = new GenerationGUI();
43+
fileManagerTab = new FileManagerTab();
44+
}
45+
46+
@Override
47+
public void layoutComponents() {
48+
setLayout(new BorderLayout());
49+
mainTabbedPane.addTab(I18nManager.getString("tab.generator"), generationGUI);
50+
mainTabbedPane.addTab(I18nManager.getString("tab.fileManager"), fileManagerTab);
51+
add(mainTabbedPane, BorderLayout.CENTER);
52+
}
53+
54+
@Override
55+
public void bindEvents() {
56+
}
57+
58+
private void setupWindowListener() {
59+
addWindowListener(new WindowAdapter() {
60+
@Override
61+
public void windowClosing(WindowEvent e) {
62+
log.info("Application closing");
63+
saveAllCache();
64+
fileManagerTab.shutdownFileWatcher();
65+
generationGUI.shutdown();
66+
log.info("Application closed");
67+
}
68+
});
69+
}
70+
71+
private void saveAllCache() {
72+
generationGUI.saveAllCache();
73+
fileManagerTab.saveWatchedFolders();
74+
log.info("Cache saved");
75+
}
76+
}

src/main/java/com/zxzinn/novelai/gui/MainGUI.java src/main/java/com/zxzinn/novelai/gui/generation/GenerationGUI.java

+16-58
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,40 @@
1-
package com.zxzinn.novelai.gui;
1+
package com.zxzinn.novelai.gui.generation;
22

33
import com.zxzinn.novelai.GenerationState;
44
import com.zxzinn.novelai.api.GenerationRequest;
55
import com.zxzinn.novelai.api.GenerationRequestBuilder;
66
import com.zxzinn.novelai.api.NAIConstants;
7-
import com.zxzinn.novelai.config.ConfigManager;
87
import com.zxzinn.novelai.event.ImageReceivedEvent;
98
import com.zxzinn.novelai.event.ImageReceivedListener;
109
import com.zxzinn.novelai.event.PromptUpdateEvent;
1110
import com.zxzinn.novelai.event.PromptUpdateListener;
1211
import com.zxzinn.novelai.gui.common.ImagePreviewPanel;
13-
import com.zxzinn.novelai.gui.filewindow.FileManagerTab;
14-
import com.zxzinn.novelai.gui.generation.*;
1512
import com.zxzinn.novelai.service.ImageGenerationService;
1613
import com.zxzinn.novelai.utils.Cache;
1714
import com.zxzinn.novelai.utils.I18nManager;
1815
import com.zxzinn.novelai.utils.UIComponent;
1916
import lombok.Getter;
20-
import lombok.Setter;
2117
import lombok.extern.log4j.Log4j2;
2218

2319
import javax.swing.*;
2420
import javax.swing.border.EmptyBorder;
2521
import java.awt.*;
26-
import java.awt.event.WindowAdapter;
27-
import java.awt.event.WindowEvent;
2822
import java.awt.image.BufferedImage;
2923
import java.util.concurrent.CompletableFuture;
3024

3125
@Log4j2
3226
@Getter
33-
@Setter
34-
public class MainGUI extends JFrame implements UIComponent , ImageReceivedListener , PromptUpdateListener {
35-
private static final ConfigManager config = ConfigManager.getInstance();
36-
public static final int WINDOW_WIDTH = config.getInteger("ui.window.width");
37-
public static final int WINDOW_HEIGHT = config.getInteger("ui.window.height");
38-
27+
public class GenerationGUI extends JPanel implements UIComponent, ImageReceivedListener, PromptUpdateListener {
3928
private volatile boolean isGenerating = false;
4029
private final Object generationLock = new Object();
4130

42-
private JTabbedPane mainTabbedPane;
4331
private PromptPanel promptPanel;
4432
private AbstractParametersPanel currentParametersPanel;
4533
private GenerationParametersPanel generationParametersPanel;
4634
private Img2ImgParametersPanel img2ImgParametersPanel;
4735
private ImagePreviewPanel imagePreviewPanel;
4836
private HistoryPanel historyPanel;
4937
private GenerationControlPanel generationControlPanel;
50-
private FileManagerTab fileManagerTab;
5138

5239
private JPanel leftPanel;
5340
private JPanel parameterPanel;
@@ -56,34 +43,22 @@ public class MainGUI extends JFrame implements UIComponent , ImageReceivedListen
5643
private JComboBox<String> actionComboBox;
5744

5845
private final Cache cache;
59-
6046
private final ImageGenerationService imageGenerationService;
61-
6247
private PromptPanel.PromptResult currentPromptResult;
6348

64-
public MainGUI() {
49+
public GenerationGUI() {
6550
this.cache = Cache.getInstance();
66-
67-
setTitle(config.getString("application.name") + " v" + config.getString("application.version"));
68-
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
69-
setLocationRelativeTo(null);
70-
71-
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
72-
73-
imageGenerationService = new ImageGenerationService();
51+
this.imageGenerationService = new ImageGenerationService();
7452

7553
initializeComponents();
7654
layoutComponents();
7755
bindEvents();
78-
setupWindowListener();
7956

80-
log.info("MainGUI initialized");
57+
log.info("GenerationGUI initialized");
8158
}
8259

8360
@Override
8461
public void initializeComponents() {
85-
mainTabbedPane = new JTabbedPane();
86-
8762
promptPanel = new PromptPanel();
8863
promptPanel.addPromptUpdateListener(this);
8964

@@ -96,8 +71,6 @@ public void initializeComponents() {
9671

9772
generationControlPanel = new GenerationControlPanel();
9873

99-
fileManagerTab = new FileManagerTab();
100-
10174
leftPanel = new JPanel(new BorderLayout());
10275
parameterPanel = new JPanel(new BorderLayout());
10376
cardLayout = new CardLayout();
@@ -125,14 +98,8 @@ public void layoutComponents() {
12598
generatorPanel.add(new JScrollPane(imagePreviewPanel), BorderLayout.CENTER);
12699
generatorPanel.add(historyPanel, BorderLayout.EAST);
127100

128-
JPanel mainGeneratorPanel = new JPanel(new BorderLayout());
129-
mainGeneratorPanel.add(generatorPanel, BorderLayout.CENTER);
130-
mainGeneratorPanel.add(leftPanel, BorderLayout.WEST);
131-
132-
mainTabbedPane.addTab(I18nManager.getString("tab.generator"), mainGeneratorPanel);
133-
mainTabbedPane.addTab(I18nManager.getString("tab.fileManager"), fileManagerTab);
134-
135-
add(mainTabbedPane, BorderLayout.CENTER);
101+
add(generatorPanel, BorderLayout.CENTER);
102+
add(leftPanel, BorderLayout.WEST);
136103
}
137104

138105
@Override
@@ -144,7 +111,7 @@ public void bindEvents() {
144111

145112
private void startImageGeneration() {
146113
if (isGenerating) {
147-
log.info("已經在生成圖像中,忽略新的請求");
114+
log.info("已經在生成圖像中忽略新的請求");
148115
return;
149116
}
150117

@@ -224,7 +191,7 @@ public void onImageReceived(ImageReceivedEvent event) {
224191
imageGenerationService.saveImage(image, outputDir);
225192

226193
log.info("圖像處理完成");
227-
if (!promptPanel.isLocked()){
194+
if (!promptPanel.isLocked()) {
228195
refreshPromptPreview();
229196
}
230197

@@ -273,26 +240,17 @@ private void switchPanel(AbstractParametersPanel newPanel, String cardName) {
273240
repaint();
274241
}
275242

276-
private void setupWindowListener() {
277-
addWindowListener(new WindowAdapter() {
278-
@Override
279-
public void windowClosing(WindowEvent e) {
280-
log.info("Application closing");
281-
saveAllCache();
282-
fileManagerTab.shutdownFileWatcher();
283-
promptPanel.getPreviewManager().shutdown();
284-
log.info("Application closed");
285-
}
286-
});
287-
}
288-
289-
private void saveAllCache() {
243+
public void saveAllCache() {
290244
promptPanel.saveToCache();
291245
currentParametersPanel.saveToCache();
292-
fileManagerTab.saveWatchedFolders();
293246
cache.setParameter("action", (String) actionComboBox.getSelectedItem());
294247
cache.saveCache();
295-
log.info("Cache saved");
248+
log.info("Generation GUI cache saved");
249+
}
250+
251+
public void shutdown() {
252+
promptPanel.getPreviewManager().shutdown();
253+
log.info("Generation GUI shutdown completed");
296254
}
297255

298256
@Override

0 commit comments

Comments
 (0)