package org.cirdles.topsoil.app.isotope; import javafx.collections.FXCollections; import javafx.scene.control.ChoiceDialog; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** * A simple dialog for selecting the {@code IsotopeType} of a {@code TopsoilDataTable}. * * @author Benjamin Muldrow */ public class IsotopeSelectionDialog extends ChoiceDialog<String> { //*********************** // Constructors //*********************** /** * Constructs a new {@code IsotopeSelectionDialog}. */ public IsotopeSelectionDialog() { super(); // create a list of isotope systems List<String> systems = new ArrayList<String>(); for (IsotopeType isotopeType : IsotopeType.values()) { systems.add(isotopeType.getName()); } // add list to choice dialogue this.getItems().addAll(FXCollections.observableList(systems)); // Set default selected item this.setSelectedItem(IsotopeType.values()[0].getName()); } //*********************** // Methods //*********************** /** * Opens a Dialog for isotope system selection and returns the selected {@code IsotopeType}. * * @param isotopeSelectionDialog an instance of IsotopeSelectionDialog * @return user-selected IsotopeType */ public static IsotopeType selectIsotope(IsotopeSelectionDialog isotopeSelectionDialog) { // display dialogue IsotopeType selection = null; Optional<String> result = isotopeSelectionDialog.showAndWait(); if (result.isPresent()) { // check selection for (IsotopeType isotopeType : IsotopeType.values()) { if (result.get().equals(isotopeType.getName())) { selection = isotopeType; } } } else { // CANCELED selection = null; } return selection; } }