45 lines
1.4 KiB
Java
45 lines
1.4 KiB
Java
package com.boydti.fawe.installer;
|
|
|
|
import com.boydti.fawe.Fawe;
|
|
import java.awt.event.ActionEvent;
|
|
import java.io.File;
|
|
import java.util.prefs.Preferences;
|
|
import javafx.application.Platform;
|
|
import javafx.embed.swing.JFXPanel;
|
|
import javafx.stage.DirectoryChooser;
|
|
|
|
public abstract class BrowseButton extends InteractiveButton {
|
|
private final String id;
|
|
|
|
public BrowseButton(String id) {
|
|
super("Browse");
|
|
this.id = id;
|
|
}
|
|
|
|
public abstract void onSelect(File folder);
|
|
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
Preferences prefs = Preferences.userRoot().node(Fawe.class.getName());
|
|
String lastUsed = prefs.get("LAST_USED_FOLDER", null);
|
|
final File lastFile = lastUsed == null ? null : new File(lastUsed).getParentFile();
|
|
browse(lastFile);
|
|
}
|
|
|
|
public void browse(File from) {
|
|
DirectoryChooser folderChooser = new DirectoryChooser();
|
|
folderChooser.setInitialDirectory(from);
|
|
|
|
new JFXPanel(); // Init JFX Platform
|
|
Platform.runLater(() -> {
|
|
File file = folderChooser.showDialog(null);
|
|
if (file != null && file.exists()) {
|
|
File parent = file.getParentFile();
|
|
if (parent == null) parent = file;
|
|
Preferences.userRoot().node(Fawe.class.getName()).put("LAST_USED_FOLDER" + id, parent.getPath());
|
|
onSelect(file);
|
|
}
|
|
});
|
|
}
|
|
}
|