Executes JFileChooser activities in Swing Thread
If Minecraft is fullscreen, exit fullscreen when using GuiFileChooser
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user