diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiFileChooser.java b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiFileChooser.java index f620d1e1..1f88897b 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiFileChooser.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/elements/GuiFileChooser.java @@ -3,6 +3,7 @@ package eu.crushedpixel.replaymod.gui.elements; import eu.crushedpixel.replaymod.gui.elements.listeners.FileChooseListener; import lombok.Getter; import lombok.Setter; +import net.minecraft.client.Minecraft; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; @@ -12,6 +13,10 @@ import java.util.List; public class GuiFileChooser extends GuiAdvancedButton { + private final Minecraft mc = Minecraft.getMinecraft(); + + private final JFrame jFrame = new JFrame(); + @Getter private File selectedFile; @@ -62,35 +67,48 @@ public class GuiFileChooser extends GuiAdvancedButton { e.printStackTrace(); } - JFrame frame = new JFrame(); + if(mc.isFullScreen()) mc.toggleFullscreen(); - JFileChooser fileChooser = new JFileChooser(); - fileChooser.setFileFilter(new FileNameExtensionFilter("Image Files", allowedExtensions)); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + JFileChooser fileChooser = new JFileChooser(); - if(selectedFile != null) { - fileChooser.setCurrentDirectory(selectedFile.getParentFile()); - fileChooser.setSelectedFile(selectedFile); - } + fileChooser.setFileFilter(new FileNameExtensionFilter(null, allowedExtensions)); - fileChooser.setFileSelectionMode(save ? JFileChooser.SAVE_DIALOG : JFileChooser.OPEN_DIALOG); - fileChooser.setVisible(true); - fileChooser.grabFocus(); - fileChooser.showOpenDialog(frame); + if(selectedFile != null) { + fileChooser.setCurrentDirectory(selectedFile.getParentFile()); + fileChooser.setSelectedFile(selectedFile); + } - File file = fileChooser.getSelectedFile(); + fileChooser.setFileSelectionMode(save ? JFileChooser.SAVE_DIALOG : JFileChooser.OPEN_DIALOG); + fileChooser.setVisible(true); + //fileChooser.grabFocus(); + fileChooser.showOpenDialog(jFrame); - if(file != null) { - selectedFile = file; + File file = fileChooser.getSelectedFile(); - updateDisplayString(); + if(file != null) { + selectedFile = file; - for(FileChooseListener listener : listeners) { - listener.onFileChosen(selectedFile); + updateDisplayString(); + + for(FileChooseListener listener : listeners) { + listener.onFileChosen(selectedFile); + } + } + + fileChooser.invalidate(); } - } + }); - frame.dispose(); } }, "replaymod-file-chooser").start(); } + + @Override + protected void finalize() throws Throwable { + jFrame.dispose(); + super.finalize(); + } }