gytebot/src/main/java/org/ui/UIAccess.java

96 lines
2.7 KiB
Java

package org.ui;
import com.formdev.flatlaf.FlatDarkLaf;
import org.renderer.PostProcessConfig;
import org.ui.editors.code.CodeEditor;
import org.ui.editors.map.MapEditor;
import org.ui.icons.IconLoader;
import org.world.World;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
public class UIAccess
implements AutoCloseable {
private JFrame startUpWindow;
private JProgressBar infoLog;
private Documentation docs;
private MapEditor mapEditor;
private CodeEditor codeEditor;
private BufferedImage windowIcon;
public UIAccess() {
try {
this.windowIcon = IconLoader.loadWindowIcon();
if (!FlatDarkLaf.setup()) {
}
this.infoLog = new JProgressBar(0, 0, 100);
this.infoLog.setStringPainted(true);
this.startUpWindow = new JFrame("RTX-GYTEBOT");
this.startUpWindow.setIconImage(this.windowIcon);
this.startUpWindow.setUndecorated(true);
this.startUpWindow.setDefaultCloseOperation(0);
this.startUpWindow.getContentPane().setLayout(new BorderLayout());
this.startUpWindow.getContentPane().add(new JLabel(new ImageIcon(ImageIO.read(getClass().getResourceAsStream("/data/icons/startup.png")))), "Center");
this.startUpWindow.getContentPane().add(this.infoLog, "South");
this.startUpWindow.pack();
this.startUpWindow.setLocationRelativeTo(null);
this.startUpWindow.setVisible(true);
} catch (IOException | NullPointerException e) {
this.startUpWindow.dispose();
throw new AssertionError("Unable to load or find startup image");
}
}
public final boolean windowCloseRequest() {
return !(!this.mapEditor.getWindowCloseRequest() && !this.codeEditor.getWindowCloseRequest());
}
public final void apply(World world, PostProcessConfig postProcessConfig) {
this.mapEditor = new MapEditor(world);
this.mapEditor.setIconImage(this.windowIcon);
this.codeEditor = new CodeEditor(world, postProcessConfig);
this.codeEditor.setIconImage(this.windowIcon);
}
public final void openDocs() {
this.docs = new Documentation();
}
public void putInfoLoadingMessage(String message, int progress) {
this.infoLog.setString(message);
this.infoLog.setValue(progress);
}
public final void close() {
this.startUpWindow.setVisible(false);
this.startUpWindow.dispose();
}
public BufferedImage getWindowIcon() {
return this.windowIcon;
}
}