package Controllers.Fournisseur; import Models.Fournisseur.FournisseurDB; import Models.Fournisseur.FournisseurGestionList; import javafx.scene.control.ProgressBar; import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; import org.apache.log4j.Logger; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.concurrent.Service; import javafx.concurrent.Task; import javafx.concurrent.WorkerStateEvent; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.control.Label; import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.text.Text; import javafx.util.Callback; /** * FXML Controller class * @author Maher Ben Tili */ public class FournisseurGestionController implements Initializable { Logger logger = Logger.getLogger(FournisseurGestionController.class.getName()); @FXML private AnchorPane PaneFournisseurGestion ; @FXML private ProgressBar ProgressBarFournisseurGestion; @FXML public TableView TableViewFournisseurGestion; @FXML public TableColumn TabColCodeFournisseur; @FXML public TableColumn TabColNomFournisseur; @FXML public TableColumn TabColTele1Fournisseur; @FXML public TableColumn TabColTele2Fournisseur; @FXML public TableColumn TabColFaxFournisseur; @FXML public TableColumn TabColMailFournisseur; @FXML public TableColumn TabColAdresseFournisseur; @FXML public TableColumnTabColDetail ; @FXML public TextField TextFieldCodeFournisseur ; @FXML public TextField TextFieldNomFournisseur ; @FXML public TextField TextFieldAdresseFournisseur ; @FXML public TextField TextFieldTeleFournisseur ; @FXML public TextField TextFieldFaxFournisseur ; @FXML public TextField TextFieldMailFournisseur ; @FXML private Button ButtonSearchFournisseurGestion; @FXML private Text ActuellePage ; @FXML private Text NbrPage ; @FXML private Group nextgroupe ; @FXML private Group avancergroupe ; @FXML private Group lastgroupe ; @FXML private Group retourgroupe ; @FXML private Label LabelCount ; @FXML private ChoiceBox NbrLigne ; ObservableList cursors = FXCollections.observableArrayList("10","15","20"); private Integer nbrligne = 10 ; private Integer totalcount = 0; private Integer nbrpage = 0; private Integer actuellepage = 1; Integer position = 0; private Service ThreadSearchFournisseurGestion; /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { //comboboxnombre des lignes tableview NbrLigne.setItems(cursors); NbrLigne.getSelectionModel().selectFirst(); TableViewFournisseurGestion.setEditable(true); TabColCodeFournisseur.setStyle( "-fx-alignment: CENTER;");TabColCodeFournisseur.getStyleClass().add("Center"); TabColCodeFournisseur.setCellValueFactory(new PropertyValueFactory("Code")); TabColNomFournisseur.setStyle( "-fx-alignment: CENTER;");TabColNomFournisseur.getStyleClass().add("Center"); TabColNomFournisseur.setCellValueFactory(new PropertyValueFactory("Nom")); TabColTele1Fournisseur.setStyle( "-fx-alignment: CENTER;");TabColTele1Fournisseur.getStyleClass().add("Center"); TabColTele1Fournisseur.setCellValueFactory(new PropertyValueFactory("Tele1")); TabColTele2Fournisseur.setStyle( "-fx-alignment: CENTER;");TabColTele2Fournisseur.getStyleClass().add("Center"); TabColTele2Fournisseur.setCellValueFactory(new PropertyValueFactory("Tele2")); TabColFaxFournisseur.setStyle( "-fx-alignment: CENTER;");TabColFaxFournisseur.getStyleClass().add("Center"); TabColFaxFournisseur.setCellValueFactory(new PropertyValueFactory("Fax")); TabColMailFournisseur.setStyle( "-fx-alignment: CENTER;");TabColMailFournisseur.getStyleClass().add("Center"); TabColMailFournisseur.setCellValueFactory(new PropertyValueFactory("Mail")); TabColAdresseFournisseur.setStyle( "-fx-alignment: CENTER;");TabColAdresseFournisseur.getStyleClass().add("Center"); TabColAdresseFournisseur.setCellValueFactory(new PropertyValueFactory("Adresse")); TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); TabColDetail.setCellFactory(new Callback, TableCell>() { @Override public TableCell call(TableColumn personBooleanTableColumn) { return new ButtonCell(); } }); ButtonSearchFournisseurGestion.setOnMouseClicked(new EventHandler() { public void handle(MouseEvent me) { SearchFournisseurGestion(); } }); PaneFournisseurGestion.setOnKeyPressed(new EventHandler() { @Override public void handle(KeyEvent ke) { if (ke.getCode().equals(KeyCode.ENTER)) { SearchFournisseurGestion(); } } }); SearchFournisseurGestion(); GestionSearchFournisseur(); } private class ButtonCell extends TableCell { final Button cellButton = new Button(); ButtonCell(){ cellButton.getStyleClass().add("btn-icon-primary"); Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); ImageView buttonGraphic = new ImageView(); buttonGraphic.setImage(coffeeImage); cellButton.setGraphic(buttonGraphic); cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed @Override public void handle(ActionEvent t) { try { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Fournisseur/FournisseurGerer.fxml")); Parent ParentFxmlFournisseur = (Parent)fxmlLoader.load(); FournisseurGererController FournisseurGerer = fxmlLoader.getController(); FournisseurGestionList FournisseurList = ((FournisseurGestionList)getTableRow().getItem()); FournisseurGerer.SetDataFournissuer(FournisseurList.getCode()); PaneFournisseurGestion.getChildren().clear(); PaneFournisseurGestion.getChildren().add(ParentFxmlFournisseur); } catch (IOException ex) { logger.error("FournisseurGestionController : FournisseurGerer.fxml :" + ex.getMessage()); } } }); } //Display button if the row is not empty @Override protected void updateItem(Boolean t, boolean empty) { if(!empty){ setGraphic(cellButton); } else { setGraphic(null); } } } @FXML private void FournisseurAjouterButtonAction(ActionEvent event) throws IOException { PaneFournisseurGestion.getChildren().clear(); PaneFournisseurGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Fournisseur/FournisseurGerer.fxml"))); } /****************************************************************************** * * * * Methode last Next TableView * * * * ******************************************************************************/ private void SearchFournisseurGestion() { ProgressBarFournisseurGestion.setVisible(true); ButtonSearchFournisseurGestion.setDisable(true); ThreadSearchFournisseurGestion = new Service(){ @Override protected Task createTask(){ return new Task(){ @Override protected Void call() throws Exception{ position = 0; actuellepage = 1; ObservableList ListFournisseurGestions = new FournisseurDB().SearchFournisseurGestion( position, nbrligne, TextFieldCodeFournisseur.getText(), TextFieldNomFournisseur.getText(), TextFieldAdresseFournisseur.getText(), TextFieldTeleFournisseur.getText(), TextFieldFaxFournisseur.getText(), TextFieldMailFournisseur.getText()); TableViewFournisseurGestion.setItems(ListFournisseurGestions); totalcount = new FournisseurDB().nbrFournisseurGestion(TextFieldCodeFournisseur.getText(), TextFieldNomFournisseur.getText(), TextFieldAdresseFournisseur.getText(), TextFieldTeleFournisseur.getText(), TextFieldFaxFournisseur.getText(), TextFieldMailFournisseur.getText()); if(totalcount > 0){ ActuellePage.setText("1"); }else{ ActuellePage.setText("0"); } if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ; } else{ nbrpage = (totalcount / nbrligne) + 1 ; } NbrPage.setText(Integer.toString(nbrpage)); return null; } }; } }; ThreadSearchFournisseurGestion.setOnSucceeded(new EventHandler(){ @Override public void handle(WorkerStateEvent event){ ProgressBarFournisseurGestion.setVisible(false); ButtonSearchFournisseurGestion.setDisable(false); LabelCount.setText(totalcount.toString()); } }); ThreadSearchFournisseurGestion.start(); } private void NextLastSearchFournisseurGestion(Integer ParmPosition, Integer ParamNbrligne) { ProgressBarFournisseurGestion.setVisible(true); ButtonSearchFournisseurGestion.setDisable(true); ThreadSearchFournisseurGestion = new Service(){ @Override protected Task createTask(){ return new Task(){ @Override protected Void call() throws Exception{ ObservableList ListFournisseurGestions = new FournisseurDB().SearchFournisseurGestion(ParmPosition, ParamNbrligne, TextFieldCodeFournisseur.getText(), TextFieldNomFournisseur.getText(), TextFieldAdresseFournisseur.getText(), TextFieldTeleFournisseur.getText(), TextFieldFaxFournisseur.getText(), TextFieldMailFournisseur.getText()); TableViewFournisseurGestion.setItems(ListFournisseurGestions); return null; } }; } }; ThreadSearchFournisseurGestion.setOnSucceeded(new EventHandler(){ @Override public void handle(WorkerStateEvent event){ ProgressBarFournisseurGestion.setVisible(false); ButtonSearchFournisseurGestion.setDisable(false); } }); ThreadSearchFournisseurGestion.start(); } private void GestionSearchFournisseur() { NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { public void changed(ObservableValue ov, Number value, Number new_value) { nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} else{ nbrpage = (totalcount / nbrligne) + 1 ; } NbrPage.setText(Integer.toString(nbrpage)); position=0; ActuellePage.setText("1"); actuellepage=1; NextLastSearchFournisseurGestion(position, nbrligne); } }); if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} else{ nbrpage = (totalcount / nbrligne) + 1 ; } NbrPage.setText(Integer.toString(nbrpage)); //next page nextgroupe.setOnMousePressed(new EventHandler(){ @Override public void handle(MouseEvent event) { if(actuellepage(){ @Override public void handle(MouseEvent event) { if(actuellepage>1) { position=position-nbrligne; NextLastSearchFournisseurGestion(position, nbrligne); actuellepage=actuellepage-1 ; ActuellePage.setText(Integer.toString(actuellepage)); } } }); //next page avec pas de 5 avancergroupe.setOnMousePressed(new EventHandler(){ @Override public void handle(MouseEvent event) { if(actuellepage+3(){ @Override public void handle(MouseEvent event) { if(actuellepage-3>1){ position=(position-4)-nbrligne; NextLastSearchFournisseurGestion(position, nbrligne); actuellepage=actuellepage-3 ; ActuellePage.setText(Integer.toString(actuellepage)); } } }); } }