All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.panteleyev.fx.dialogs.FileChooserBuilder Maven / Gradle / Ivy

The newest version!
/*
 Copyright © 2024 Petr Panteleyev 
 SPDX-License-Identifier: BSD-2-Clause
 */
package org.panteleyev.fx.dialogs;

import javafx.stage.FileChooser;

import java.io.File;
import java.util.List;
import java.util.function.Consumer;

/**
 * This class implements builder that creates instances of {@link FileChooser}.
 * 
Builder configuration is done using user defined consumer. *
Example: * {@snippet : * var fileChooser = fileChooser("Open File", List.of(), b -> * b.withInitialDirectory(new File("/home/user")) * .withInitialFileName("file.txt")); *} */ public final class FileChooserBuilder { private final FileChooser fileChooser; private File initialDirectory = null; private String initialFileName = null; /** * Creates an instance of {@link FileChooser}. * * @param title title * @param extensionFilters list of extension filters * @param builder builder to set additional parameters * @return new instance of {@link FileChooser} */ public static FileChooser fileChooser( String title, List extensionFilters, Consumer builder ) { var chooser = new FileChooser(); chooser.setTitle(title); chooser.getExtensionFilters().addAll(extensionFilters); var b = new FileChooserBuilder(chooser); builder.accept(b); return b.build(); } /** * Creates an instance of {@link FileChooser}. * * @param title title * @param extensionFilters list of extension filters * @return new instance of {@link FileChooser} */ public static FileChooser fileChooser(String title, List extensionFilters) { return fileChooser(title, extensionFilters, b -> {}); } private FileChooserBuilder(FileChooser fileChooser) { this.fileChooser = fileChooser; } private FileChooser build() { if (initialDirectory != null) { fileChooser.setInitialDirectory(initialDirectory); } if (initialFileName != null) { fileChooser.setInitialFileName(initialFileName); } return fileChooser; } /** * Sets the initial directory for the displayed file dialog. * * @param initialDirectory initial directory * @return this */ public FileChooserBuilder withInitialDirectory(File initialDirectory) { this.initialDirectory = initialDirectory; return this; } /** * Sets the initial file name for the displayed dialog. * * @param initialFileName initial file name * @return this */ public FileChooserBuilder withInitialFileName(String initialFileName) { this.initialFileName = initialFileName; return this; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy