/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package com.megatim.fdxconvert.forms; import com.megatimfx.common.abstracts.AbstractEditDialogController; import com.megatimfx.common.abstracts.context.AbstractViewContext; import com.megatimfx.common.annontations.Champ; import com.megatimfx.common.enums.TypeOperation; import com.megatim.fdxconvert.controller.MainController; import com.megatim.fdxconvert.controller.StructureChampJsonEditDialogController; import com.megatim.fdxconvert.model.StructureChampJson; import com.megatim.fdxconvert.model.SubObject; import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import javafx.beans.property.Property; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.Event; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.TableColumn; import javafx.scene.control.TableRow; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.StageStyle; /** * * @author ASUS */ public class SubObjectEditFormController implements Initializable { @FXML @Champ(mappedBy = "subObjectName") private TextField subObjectNameTextField; @FXML private Button addFieldButton; @FXML private Button updateFieldButton; @FXML private Button deleteFieldButton; @FXML private TableColumn fieldNameTableColumn; @FXML private TableColumn dataTypeTableColumn; @FXML private TableColumn isListeTableColumn; @FXML private TableColumn formatDateTableColumn; @FXML private TableColumn separateurDateTableColumn; @FXML private TableView subObjectsFieldsTableView; private ObservableList subStructureJsonListe = FXCollections.observableArrayList(); private Property> subChampListeProperty = new SimpleObjectProperty<>(subStructureJsonListe); private ObservableList currentSubObjectsListe; @Override public void initialize(URL url, ResourceBundle rb) { initSubObjectsFieldsTableView(); subObjectNameTextField.setText(""); addFieldButton.setOnMouseClicked(event -> { openStructureChampJsonDialog(event, new StructureChampJson(), TypeOperation.ADD); }); updateFieldButton.setOnMouseClicked(event -> { updateStructureJson(event); }); subObjectsFieldsTableView.setRowFactory(rf -> { TableRow row = new TableRow<>(); row.setOnMouseClicked(event -> { if (event.getClickCount() == 2 && (!row.isEmpty())) { StructureChampJson rowData = row.getItem(); openStructureChampJsonDialog(event, rowData, TypeOperation.VIEW); } }); return row; }); } public ObservableList getSubStructureJsonListe() { return subStructureJsonListe; } public void setCurrentSubObjectsListe(ObservableList currentSubObjectsListe) { this.currentSubObjectsListe = currentSubObjectsListe; } public TextField getSubObjectNameTextField() { return subObjectNameTextField; } public Button getAddFieldButton() { return addFieldButton; } public Button getUpdateFieldButton() { return updateFieldButton; } public Button getDeleteFieldButton() { return deleteFieldButton; } public TableView getSubObjectsFieldsTableView() { return subObjectsFieldsTableView; } private void initSubObjectsFieldsTableView() { subObjectsFieldsTableView.itemsProperty().bind(subChampListeProperty); separateurDateTableColumn.setCellValueFactory(new PropertyValueFactory("delimiteurDate")); formatDateTableColumn.setCellValueFactory(new PropertyValueFactory("formatDate")); isListeTableColumn.setCellValueFactory(c -> { if (c.getValue().isListe()) { return new SimpleStringProperty("Oui"); } else { return new SimpleStringProperty("Non"); } }); dataTypeTableColumn.setCellValueFactory(new PropertyValueFactory("typeDonnee")); fieldNameTableColumn.setCellValueFactory(new PropertyValueFactory("libelle")); } private void updateStructureJson(Event event) { Object selectedItem = subObjectsFieldsTableView.getSelectionModel().getSelectedItem(); if (selectedItem != null) { StructureChampJson structureToBeUpdated = (StructureChampJson) selectedItem; openStructureChampJsonDialog(event, structureToBeUpdated, TypeOperation.UPDATE); } } private void openStructureChampJsonDialog(Event event, StructureChampJson structureJson, TypeOperation typeOperation) { try { FXMLLoader loader = new FXMLLoader( (AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() == null) ? AbstractEditDialogController.class.getResource("AbstractEditDialog.fxml") : AbstractViewContext.getInstance().getAbstractEditDialogControllerURL() ); StructureChampJsonEditDialogController controller = new StructureChampJsonEditDialogController(); controller.setSubObjectEditFormController(this); controller.setSubObjectsList(currentSubObjectsListe); loader.setControllerFactory(param -> controller); Parent root = loader.load(); Node source = (Node) event.getSource(); Stage parentStage = (Stage) source.getScene().getWindow(); controller.initData(parentStage, typeOperation, structureJson, null, subStructureJsonListe, true); setStage(root); } catch (IOException ex) { Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); } } private void setStage(Parent root) { Scene scene = new Scene(root); Stage stage = new Stage(); stage.setScene(scene); stage.initStyle(StageStyle.UNDECORATED); stage.initModality(Modality.APPLICATION_MODAL); stage.show(); } }