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

Commit

Permalink
Event listeners but still facing async issues & Removed redundant cod…
Browse files Browse the repository at this point in the history
…e areas

# TODO
- fix broken async logic
- improve event listeners
- Many buggy features to fix

Signed-off-by: zhaoxinn <[email protected]>
  • Loading branch information
zxzinn committed Aug 4, 2024
1 parent 365f2e7 commit df4ef8a
Show file tree
Hide file tree
Showing 13 changed files with 101 additions and 204 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@
<shadedArtifactAttached>false</shadedArtifactAttached>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.zxzinn.novelai.gui.MainGUI</mainClass>
<mainClass>com.zxzinn.novelai.gui.ContainerGUI</mainClass>
</transformer>
</transformers>
<filters>
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/com/zxzinn/novelai/Application.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
package com.zxzinn.novelai;

import com.zxzinn.novelai.config.ConfigManager;
import com.zxzinn.novelai.gui.MainGUI;
import com.zxzinn.novelai.gui.ContainerGUI;
import lombok.extern.log4j.Log4j2;

import javax.swing.*;

@Log4j2
public class Application {
private final ConfigManager config;
private final MainGUI mainGUI;
private final ContainerGUI containerGUI;

public Application() {
config = ConfigManager.getInstance();
mainGUI = new MainGUI();
containerGUI = new ContainerGUI();
}

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.Getter;

import java.io.File;
import java.util.EventListener;
import java.util.EventObject;

@Getter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.zxzinn.novelai.GenerationState;
import lombok.Getter;

import java.util.EventListener;
import java.util.EventObject;

@Getter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.Getter;

import java.awt.image.BufferedImage;
import java.util.EventListener;
import java.util.EventObject;

@Getter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import lombok.Getter;

import java.util.EventListener;
import java.util.EventObject;

@Getter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import lombok.Getter;

import java.util.EventListener;
import java.util.EventObject;

@Getter
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public String processPrompt(String input) {
return finalResult;
}

@SuppressWarnings("unchecked")
private String processEmbeds(String input) {
List<EmbedDetector.EmbedTag> embeds = embedDetector.detectEmbeds(input);
StringBuilder result = new StringBuilder(input);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.stream.Collectors;

@Log4j2
@SuppressWarnings("unchecked")
public class TagGroupProcessor {
private final Map<String, Object> group;
private final Random random;
Expand Down
76 changes: 76 additions & 0 deletions src/main/java/com/zxzinn/novelai/gui/ContainerGUI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.zxzinn.novelai.gui;

import com.zxzinn.novelai.config.ConfigManager;
import com.zxzinn.novelai.gui.filewindow.FileManagerTab;
import com.zxzinn.novelai.gui.generation.GenerationGUI;
import com.zxzinn.novelai.utils.I18nManager;
import com.zxzinn.novelai.utils.UIComponent;
import lombok.extern.log4j.Log4j2;

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

@Log4j2
public class ContainerGUI extends JFrame implements UIComponent {
private static final ConfigManager config = ConfigManager.getInstance();
public static final int WINDOW_WIDTH = config.getInteger("ui.window.width");
public static final int WINDOW_HEIGHT = config.getInteger("ui.window.height");

private JTabbedPane mainTabbedPane;
private GenerationGUI generationGUI;
private FileManagerTab fileManagerTab;

public ContainerGUI() {
setTitle(config.getString("application.name") + " v" + config.getString("application.version"));
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

initializeComponents();
layoutComponents();
bindEvents();
setupWindowListener();

log.info("ContainerGUI initialized");
}

@Override
public void initializeComponents() {
mainTabbedPane = new JTabbedPane();
generationGUI = new GenerationGUI();
fileManagerTab = new FileManagerTab();
}

@Override
public void layoutComponents() {
setLayout(new BorderLayout());
mainTabbedPane.addTab(I18nManager.getString("tab.generator"), generationGUI);
mainTabbedPane.addTab(I18nManager.getString("tab.fileManager"), fileManagerTab);
add(mainTabbedPane, BorderLayout.CENTER);
}

@Override
public void bindEvents() {
}

private void setupWindowListener() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
log.info("Application closing");
saveAllCache();
fileManagerTab.shutdownFileWatcher();
generationGUI.shutdown();
log.info("Application closed");
}
});
}

private void saveAllCache() {
generationGUI.saveAllCache();
fileManagerTab.saveWatchedFolders();
log.info("Cache saved");
}
}
Original file line number Diff line number Diff line change
@@ -1,53 +1,40 @@
package com.zxzinn.novelai.gui;
package com.zxzinn.novelai.gui.generation;

import com.zxzinn.novelai.GenerationState;
import com.zxzinn.novelai.api.GenerationRequest;
import com.zxzinn.novelai.api.GenerationRequestBuilder;
import com.zxzinn.novelai.api.NAIConstants;
import com.zxzinn.novelai.config.ConfigManager;
import com.zxzinn.novelai.event.ImageReceivedEvent;
import com.zxzinn.novelai.event.ImageReceivedListener;
import com.zxzinn.novelai.event.PromptUpdateEvent;
import com.zxzinn.novelai.event.PromptUpdateListener;
import com.zxzinn.novelai.gui.common.ImagePreviewPanel;
import com.zxzinn.novelai.gui.filewindow.FileManagerTab;
import com.zxzinn.novelai.gui.generation.*;
import com.zxzinn.novelai.service.ImageGenerationService;
import com.zxzinn.novelai.utils.Cache;
import com.zxzinn.novelai.utils.I18nManager;
import com.zxzinn.novelai.utils.UIComponent;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.log4j.Log4j2;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.util.concurrent.CompletableFuture;

@Log4j2
@Getter
@Setter
public class MainGUI extends JFrame implements UIComponent , ImageReceivedListener , PromptUpdateListener {
private static final ConfigManager config = ConfigManager.getInstance();
public static final int WINDOW_WIDTH = config.getInteger("ui.window.width");
public static final int WINDOW_HEIGHT = config.getInteger("ui.window.height");

public class GenerationGUI extends JPanel implements UIComponent, ImageReceivedListener, PromptUpdateListener {
private volatile boolean isGenerating = false;
private final Object generationLock = new Object();

private JTabbedPane mainTabbedPane;
private PromptPanel promptPanel;
private AbstractParametersPanel currentParametersPanel;
private GenerationParametersPanel generationParametersPanel;
private Img2ImgParametersPanel img2ImgParametersPanel;
private ImagePreviewPanel imagePreviewPanel;
private HistoryPanel historyPanel;
private GenerationControlPanel generationControlPanel;
private FileManagerTab fileManagerTab;

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

private final Cache cache;

private final ImageGenerationService imageGenerationService;

private PromptPanel.PromptResult currentPromptResult;

public MainGUI() {
public GenerationGUI() {
this.cache = Cache.getInstance();

setTitle(config.getString("application.name") + " v" + config.getString("application.version"));
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

imageGenerationService = new ImageGenerationService();
this.imageGenerationService = new ImageGenerationService();

initializeComponents();
layoutComponents();
bindEvents();
setupWindowListener();

log.info("MainGUI initialized");
log.info("GenerationGUI initialized");
}

@Override
public void initializeComponents() {
mainTabbedPane = new JTabbedPane();

promptPanel = new PromptPanel();
promptPanel.addPromptUpdateListener(this);

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

generationControlPanel = new GenerationControlPanel();

fileManagerTab = new FileManagerTab();

leftPanel = new JPanel(new BorderLayout());
parameterPanel = new JPanel(new BorderLayout());
cardLayout = new CardLayout();
Expand Down Expand Up @@ -125,14 +98,8 @@ public void layoutComponents() {
generatorPanel.add(new JScrollPane(imagePreviewPanel), BorderLayout.CENTER);
generatorPanel.add(historyPanel, BorderLayout.EAST);

JPanel mainGeneratorPanel = new JPanel(new BorderLayout());
mainGeneratorPanel.add(generatorPanel, BorderLayout.CENTER);
mainGeneratorPanel.add(leftPanel, BorderLayout.WEST);

mainTabbedPane.addTab(I18nManager.getString("tab.generator"), mainGeneratorPanel);
mainTabbedPane.addTab(I18nManager.getString("tab.fileManager"), fileManagerTab);

add(mainTabbedPane, BorderLayout.CENTER);
add(generatorPanel, BorderLayout.CENTER);
add(leftPanel, BorderLayout.WEST);
}

@Override
Expand All @@ -144,7 +111,7 @@ public void bindEvents() {

private void startImageGeneration() {
if (isGenerating) {
log.info("已經在生成圖像中,忽略新的請求");
log.info("已經在生成圖像中忽略新的請求");
return;
}

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

log.info("圖像處理完成");
if (!promptPanel.isLocked()){
if (!promptPanel.isLocked()) {
refreshPromptPreview();
}

Expand Down Expand Up @@ -273,26 +240,17 @@ private void switchPanel(AbstractParametersPanel newPanel, String cardName) {
repaint();
}

private void setupWindowListener() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
log.info("Application closing");
saveAllCache();
fileManagerTab.shutdownFileWatcher();
promptPanel.getPreviewManager().shutdown();
log.info("Application closed");
}
});
}

private void saveAllCache() {
public void saveAllCache() {
promptPanel.saveToCache();
currentParametersPanel.saveToCache();
fileManagerTab.saveWatchedFolders();
cache.setParameter("action", (String) actionComboBox.getSelectedItem());
cache.saveCache();
log.info("Cache saved");
log.info("Generation GUI cache saved");
}

public void shutdown() {
promptPanel.getPreviewManager().shutdown();
log.info("Generation GUI shutdown completed");
}

@Override
Expand Down
Loading

0 comments on commit df4ef8a

Please sign in to comment.