@Override public Optional<ProjectFolder> showCreateFolderDialog(Window window, ProjectFolder parent) { return NewFolderPane.showAndWaitDialog(window, parent); } }
private NewFolderPane(Function<String, F> folderCreator, Predicate<String> folderUnique) { this.folderCreator = Objects.requireNonNull(folderCreator); setVgap(5); setHgap(5); ColumnConstraints column0 = new ColumnConstraints(); ColumnConstraints column1 = new ColumnConstraints(); column1.setHgrow(Priority.ALWAYS); getColumnConstraints().addAll(column0, column1); add(new Label(RESOURCE_BUNDLE.getString("Name")), 0, 0); add(nameTextField, 1, 0); add(fileAlreadyExistLabel, 0, 1, 2, 1); fileAlreadyExistLabel.setTextFill(Color.RED); nameTextField.textProperty().addListener((observable, oldName, newName) -> uniqueName.setValue(newName == null || folderUnique.test(newName))); uniqueName.addListener((observable, oldUnique, newUnique) -> { if (newUnique) { fileAlreadyExistLabel.setText(""); } else { fileAlreadyExistLabel.setText(MessageFormat.format(RESOURCE_BUNDLE.getString("FileAlreadyExistsInThisFolder"), nameTextField.getText())); } }); Platform.runLater(nameTextField::requestFocus); }
public static <F> Optional<F> showAndWaitDialog(Window window, F parent, Function<String, F> folderCreator, Predicate<String> folderUnique) { Objects.requireNonNull(window); Objects.requireNonNull(parent); Objects.requireNonNull(folderCreator); Objects.requireNonNull(folderUnique); Dialog<F> dialog = new Dialog<>(); try { dialog.setTitle(RESOURCE_BUNDLE.getString("NewFolder")); dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL); NewFolderPane<F> newProjectPane = new NewFolderPane<>(folderCreator, folderUnique); newProjectPane.setPrefSize(350, 100); dialog.getDialogPane().lookupButton(ButtonType.OK).disableProperty().bind(newProjectPane.validatedProperty().not()); dialog.getDialogPane().setContent(newProjectPane); dialog.setResizable(true); dialog.initOwner(window); dialog.setResultConverter(buttonType -> buttonType == ButtonType.OK ? newProjectPane.createFolder() : null); return dialog.showAndWait(); } finally { dialog.close(); } } }
@Override public Optional<Folder> showCreateFolderDialog(Window window, Folder parent) { return NewFolderPane.showAndWaitDialog(window, parent); } }
public static Optional<Folder> showAndWaitDialog(Window window, Folder parent) { return showAndWaitDialog(window, parent, parent::createFolder, name -> !parent.getChild(name).isPresent()); }
public static Optional<ProjectFolder> showAndWaitDialog(Window window, ProjectFolder parent) { return showAndWaitDialog(window, parent, parent::createFolder, name -> !parent.getChild(name).isPresent()); }