Replaced AWT FileDialog with Swing JFileChooser in GuiFileChooser

This commit is contained in:
CrushedPixel
2015-07-14 01:36:00 +02:00
parent 0d7065d45d
commit 654c2200d5

View File

@@ -3,11 +3,10 @@ package eu.crushedpixel.replaymod.gui.elements;
import eu.crushedpixel.replaymod.gui.elements.listeners.FileChooseListener;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.io.FilenameUtils;
import java.awt.*;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;
@@ -57,41 +56,31 @@ public class GuiFileChooser extends GuiAdvancedButton {
new Thread(new Runnable() {
@Override
public void run() {
Frame frame = new Frame();
FileDialog fileDialog = new FileDialog(frame);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
fileDialog.setMode(save ? FileDialog.SAVE : FileDialog.LOAD);
JFrame frame = new JFrame();
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("Image Files", allowedExtensions));
if(selectedFile != null) {
fileDialog.setDirectory(selectedFile.getParentFile().getAbsolutePath());
fileDialog.setFile(selectedFile.getName());
fileChooser.setCurrentDirectory(selectedFile.getParentFile());
fileChooser.setSelectedFile(selectedFile);
}
fileDialog.setFilenameFilter(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(allowedExtensions == null) return true;
for(String extension : allowedExtensions) {
String[] split = name.split("\\.");
String ext = split[split.length - 1];
if(extension.equalsIgnoreCase(ext)) return true;
}
fileChooser.setFileSelectionMode(save ? JFileChooser.SAVE_DIALOG : JFileChooser.OPEN_DIALOG);
fileChooser.setVisible(true);
fileChooser.grabFocus();
fileChooser.showOpenDialog(frame);
return false;
}
});
File file = fileChooser.getSelectedFile();
fileDialog.setVisible(true);
String filename = fileDialog.getFile();
if(filename != null && FilenameUtils.getExtension(filename).isEmpty() && allowedExtensions.length > 0) {
filename += "."+allowedExtensions[0];
}
String directory = fileDialog.getDirectory();
if(filename != null) {
selectedFile = new File(directory, filename);
if(file != null) {
selectedFile = file;
updateDisplayString();