Executes JFileChooser activities in Swing Thread

If Minecraft is fullscreen, exit fullscreen when using GuiFileChooser
This commit is contained in:
CrushedPixel
2015-07-14 02:07:24 +02:00
parent 654c2200d5
commit 534007b9c8

View File

@@ -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,10 +67,14 @@ public class GuiFileChooser extends GuiAdvancedButton {
e.printStackTrace();
}
JFrame frame = new JFrame();
if(mc.isFullScreen()) mc.toggleFullscreen();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("Image Files", allowedExtensions));
fileChooser.setFileFilter(new FileNameExtensionFilter(null, allowedExtensions));
if(selectedFile != null) {
fileChooser.setCurrentDirectory(selectedFile.getParentFile());
@@ -74,8 +83,8 @@ public class GuiFileChooser extends GuiAdvancedButton {
fileChooser.setFileSelectionMode(save ? JFileChooser.SAVE_DIALOG : JFileChooser.OPEN_DIALOG);
fileChooser.setVisible(true);
fileChooser.grabFocus();
fileChooser.showOpenDialog(frame);
//fileChooser.grabFocus();
fileChooser.showOpenDialog(jFrame);
File file = fileChooser.getSelectedFile();
@@ -89,8 +98,17 @@ public class GuiFileChooser extends GuiAdvancedButton {
}
}
frame.dispose();
fileChooser.invalidate();
}
});
}
}, "replaymod-file-chooser").start();
}
@Override
protected void finalize() throws Throwable {
jFrame.dispose();
super.finalize();
}
}