package com.megatim.fdxgenerator.forms; import com.megatimfx.common.annontations.Champ; import com.megatim.fdxgenerator.App; import static com.megatim.fdxgenerator.App.FORMATS_DATE; import com.megatim.fdxgenerator.enums.TypeDonnee; import com.megatim.fdxgenerator.pojo.Delimiteur; import java.net.URL; import java.util.ResourceBundle; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; public class StructureLigneEditFormController implements Initializable { private ObservableList list = FXCollections.observableArrayList(); // @FXML // private VBox formFieldContainer; // // @FXML // private HBox dateFormatContainer; @FXML @Champ(mappedBy = "position", type = Integer.class) private ComboBox positionComboBox; @FXML @Champ(mappedBy = "typeDonnee", type = TypeDonnee.class) private ComboBox typeDonneeComboBox; @FXML @Champ(mappedBy = "code", type = String.class) private TextField codeTextField; @FXML @Champ(mappedBy = "designation", type = String.class) private TextField designationTextField; @FXML @Champ(mappedBy = "taille", type = Integer.class) private TextField tailleTextField; @FXML @Champ(mappedBy = "taillePartieDecimal", type = Integer.class) private TextField taillePartieDecimalTextField; @FXML @Champ(mappedBy = "formatDate", type = String.class) private ComboBox formatDateComboBox; @FXML @Champ(mappedBy = "delimiteurDate",type = Delimiteur.class) private ComboBox delimiteurDateComboBox; @FXML @Champ(mappedBy = "delimiteurDecimal",type = Delimiteur.class) private ComboBox delimiteurDecimalComboBox; private Integer initialUpdateSelection; @Override public void initialize(URL url, ResourceBundle rb) { formatDateComboBox.setDisable(true); formatDateComboBox.setPromptText("Sélectionnez un élément dans la liste"); formatDateComboBox.setItems(FXCollections.observableArrayList( FORMATS_DATE )); delimiteurDateComboBox.setDisable(true); delimiteurDateComboBox.setPromptText("Sélectionnez un élément dans la liste"); delimiteurDateComboBox.setItems(FXCollections.observableArrayList( App.SEPARATEURS_DATE.values() )); taillePartieDecimalTextField.setDisable(true); delimiteurDecimalComboBox.setDisable(true); delimiteurDecimalComboBox.setPromptText("Sélectionnez un élément dans la liste"); delimiteurDecimalComboBox.setItems(FXCollections.observableArrayList( App.SEPARATEURS_DECIMAUX.values() )); positionComboBox.setItems(list); typeDonneeComboBox.setItems(FXCollections.observableArrayList(TypeDonnee.values())); typeDonneeComboBox.getSelectionModel().selectFirst(); tailleTextField.textProperty().addListener((observable, oldValue, newValue) -> { if (!newValue.matches("\\d*")) { tailleTextField.setText(oldValue); } }); typeDonneeComboBox.setOnAction(event -> { if (typeDonneeComboBox.getValue().equals(TypeDonnee.DATE)) { formatDateComboBox.setDisable(false); delimiteurDateComboBox.setDisable(false); } else { formatDateComboBox.setDisable(true); delimiteurDateComboBox.setDisable(true); } if (typeDonneeComboBox.getValue().equals(TypeDonnee.DECIMAL)) { taillePartieDecimalTextField.setDisable(false); delimiteurDecimalComboBox.setDisable(false); } else { taillePartieDecimalTextField.setDisable(true); delimiteurDecimalComboBox.setDisable(true); } }); } public void populatePositionComboBox(int positionNumber) { list.clear(); for (int i = 1; i <= positionNumber; i++) { list.add(i); } } public ComboBox getFormatDateComboBox() { return formatDateComboBox; } public ComboBox getTypeDonneeComboBox() { return typeDonneeComboBox; } public ObservableList getList() { return list; } public ComboBox getPositionComboBox() { return positionComboBox; } public void setInitialUpateSelection() { initialUpdateSelection = positionComboBox.getSelectionModel().getSelectedItem(); } public Integer getInitialUpdateSelection() { return initialUpdateSelection; } public ComboBox getDelimiteurDateComboBox() { return delimiteurDateComboBox; } public ComboBox getDelimiteurDecimalComboBox() { return delimiteurDecimalComboBox; } }