public class NativeDirectoryChooser extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private java.util.function.Supplier<javafx.stage.DirectoryChooser> |
directoryChooserFactory |
Constructor and Description |
---|
NativeDirectoryChooser(java.util.function.Supplier<javafx.stage.DirectoryChooser> directoryChooserFactory)
Constructs a new directory chooser that will use the provided factory.
|
Modifier and Type | Method and Description |
---|---|
<T> T |
showDialog(java.util.function.Function<javafx.stage.DirectoryChooser,T> method)
Shows a
DirectoryChooser dialog by calling the provided method. |
<T> T |
showDialog(java.util.function.Function<javafx.stage.DirectoryChooser,T> method,
long timeout,
java.util.concurrent.TimeUnit unit)
Shows the
DirectoryChooser dialog by calling the provided
method. |
java.io.File |
showOpenDialog()
Shows a
DirectoryChooser using
DirectoryChooser.showDialog(Window) . |
private final java.util.function.Supplier<javafx.stage.DirectoryChooser> directoryChooserFactory
public NativeDirectoryChooser(java.util.function.Supplier<javafx.stage.DirectoryChooser> directoryChooserFactory)
showDialog(Function)
function can be used to provide custom
initialization.directoryChooserFactory
- Function used to construct new choosers.public <T> T showDialog(java.util.function.Function<javafx.stage.DirectoryChooser,T> method)
DirectoryChooser
dialog by calling the provided method.
Waits for one second for the dialog-showing task to start in the JavaFX event thread, then throws an IllegalStateException if it didn't start.
T
- the return type of the method, usually File or List<File>method
- a function calling one of the dialog-showing methodsshowDialog(java.util.function.Function, long, java.util.concurrent.TimeUnit)
public <T> T showDialog(java.util.function.Function<javafx.stage.DirectoryChooser,T> method, long timeout, java.util.concurrent.TimeUnit unit)
DirectoryChooser
dialog by calling the provided
method. The dialog is created by the factory supplied to the
constructor, then it is shown by calling the provided method on it,
then the result is returned.
Everything happens in the right threads thanks to
SynchronousJFXCaller
. The task performed in the JavaFX thread
consists of two steps: construct a chooser using the provided factory
and invoke the provided method on it. Any exception thrown during these
steps will be rethrown in the calling thread, which shouldn't
normally happen unless the factory throws an unchecked exception.
If the calling thread is interrupted during either the wait for the task to start or for its result, then null is returned and the Thread interrupted status is set.
T
- return type (usually File or List<File>)method
- a function that calls the desired FileChooser methodtimeout
- time to wait for Platform.runLater() to start
the dialog-showing task (once started, it is allowed to run as long
as needed)unit
- the time unit of the timeout argumentjava.lang.IllegalStateException
- if Platform.runLater() fails to start
the dialog-showing task within the given timeoutpublic java.io.File showOpenDialog()
DirectoryChooser
using
DirectoryChooser.showDialog(Window)
.DirectoryChooser.showOpenDialog()
.showDialog(java.util.function.Function, long, java.util.concurrent.TimeUnit)