Skip to content

Commit

Permalink
Cleanup imports and add some missing javadoc
Browse files Browse the repository at this point in the history
  • Loading branch information
besidev committed Feb 18, 2025
1 parent c8d0e9e commit b17cb4e
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@

import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.WeakChangeListener;
import javafx.collections.ListChangeListener;
import javafx.collections.WeakListChangeListener;
import javafx.scene.Node;
import javafx.scene.control.SelectionMode;
import javafx.scene.input.MouseEvent;
Expand All @@ -28,14 +22,16 @@
/**
* Represents a {@link FileOpenPicker} implementation for JavaFX desktop/mobile
* applications. This class specializes for selecting and opening files from
* the native file system.
* the native file system. Depending on the configuration (e.g. extension filters and
* selection mode), it will display either a {@link FileChooser} or a {@link DirectoryChooser}.
*
* @author Besmir Beqiri
* @author Indrit Beqiri
* @author Florian Kirmaier
*/
public class NativeFileOpenPicker extends BaseFileOpenPicker {
private static final Logger logger = LoggerFactory.getLogger(NativeFileOpenPicker.class);

private static final Logger LOGGER = LoggerFactory.getLogger(NativeFileOpenPicker.class);

private List<NativeFileSource> nativeFileSources = List.of();

Expand All @@ -50,18 +46,19 @@ public NativeFileOpenPicker(Node node) {
// Define the action that should be performed when the user clicks on the node.
NodeUtils.addEventHandler(node, MouseEvent.MOUSE_CLICKED, actionEvent -> {
Window window = node.getScene().getWindow();
var useDirectory = getExtensionFilters().stream().anyMatch(x -> x.allowDirectory());
var hasFilesTypes = getExtensionFilters().stream().anyMatch(x -> x.extensions().size() > 0);
var useDirectory = getExtensionFilters().stream().anyMatch(ExtensionFilter::allowDirectory);
var hasFilesTypes = getExtensionFilters().stream().anyMatch(x -> !x.extensions().isEmpty());

if (useDirectory && hasFilesTypes) {
logger.warn("You can't use directory and file types at the same time. Directory will be used.");
LOGGER.warn("You can't use directory and file types at the same time. Directory will be used.");
}
if (useDirectory) {
DirectoryChooser directoryChooser = createDirectoryChooser();
final File file = directoryChooser.showDialog(window);
if (file != null) {
// Create a list of native file sources from the selected file.
nativeFileSources = List.of(new NativeFileSource(file));

// Invoke the onFilesSelected consumer.
Consumer<List<? extends FileSource>> onFilesSelectedConsumer = getOnFilesSelected();
if (onFilesSelectedConsumer != null) {
Expand Down Expand Up @@ -106,17 +103,27 @@ public final ObjectProperty<SelectionMode> selectionModeProperty() {
return selectionMode;
}

FileChooser createFileChooser() {
FileChooser fileChooser = new FileChooser();
/**
* Creates and configures a {@link FileChooser} based on the current extension filters and title.
*
* @return a configured {@code FileChooser} instance.
*/
private FileChooser createFileChooser() {
final FileChooser fileChooser = new FileChooser();
fileChooser.getExtensionFilters().addAll(getExtensionFilters().stream()
.map(ExtensionFilter::toJavaFXExtensionFilter)
.toList());
fileChooser.titleProperty().bind(titleProperty());
return fileChooser;
}

/**
* Creates and configures a {@link DirectoryChooser} based on the current title property.
*
* @return a configured {@code DirectoryChooser} instance.
*/
private DirectoryChooser createDirectoryChooser() {
DirectoryChooser directoryChooser = new DirectoryChooser();
final DirectoryChooser directoryChooser = new DirectoryChooser();
directoryChooser.titleProperty().bind(titleProperty());
return directoryChooser;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
package one.jpro.platform.file.picker;

import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.WeakChangeListener;
import javafx.collections.ListChangeListener;
import javafx.collections.WeakListChangeListener;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser;
import javafx.stage.Window;
import one.jpro.platform.file.ExtensionFilter;
Expand All @@ -27,13 +19,18 @@
*/
public class NativeFileSavePicker extends BaseFileSavePicker {

/**
* Constructs a new {@link NativeFileSavePicker} associated with the given JavaFX node.
*
* @param node the JavaFX node that will trigger the file save dialog.
*/
public NativeFileSavePicker(Node node) {
super(node);
}

@Override
final void showDialog() {
var fileChooser = createFileChooser();
final var fileChooser = createFileChooser();
// Basic configuration
fileChooser.setTitle("Save file as...");

Expand All @@ -57,8 +54,15 @@ final void showDialog() {
}
}

/**
* Creates and configures a {@link FileChooser} for saving files.
* <p>
* This method sets up the file chooser with the extension filters defined in the base class.
*
* @return a configured {@link FileChooser} instance.
*/
private FileChooser createFileChooser() {
FileChooser fileChooser = new FileChooser();
final FileChooser fileChooser = new FileChooser();
fileChooser.getExtensionFilters().addAll(getExtensionFilters().stream()
.map(ExtensionFilter::toJavaFXExtensionFilter)
.toList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import com.jpro.webapi.WebAPI;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.ListChangeListener;
import javafx.collections.WeakListChangeListener;
import javafx.scene.Node;
Expand All @@ -14,7 +12,6 @@
import one.jpro.platform.file.WebFileSource;
import one.jpro.platform.file.util.NodeUtils;

import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import javafx.application.Platform;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Node;
import one.jpro.platform.file.ExtensionFilter;
import one.jpro.platform.file.FileStorage;
Expand Down

0 comments on commit b17cb4e

Please sign in to comment.