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