package Controllers.Client; import Controllers.Traitement.MyWindow; import Models.Client.Client; import Models.Client.ClientDB; import com.gluonhq.charm.glisten.control.ProgressBar; 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.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.Scene; import javafx.scene.control.Button; import javafx.scene.control.ChoiceBox; import javafx.scene.control.DatePicker; import javafx.scene.control.Label; import javafx.scene.control.RadioButton; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.StackPane; import javafx.scene.text.Text; import javafx.stage.Stage; /** * FXML Controller class * @author Maher Ben Tili */ public class RechercherClientPersonneController implements Initializable { @FXML public AnchorPane AnchoreClientPerson ; @FXML public StackPane StackpaneClient ; @FXML private ProgressBar ProgressBarClientPersonne; @FXML private Button ButtonSearchClientPersonne; @FXML public RadioButton cltEntreprise ; @FXML public RadioButton cltPersonne ; @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 ; @FXML private TableView TableViewListeClient ; @FXML private TableColumn codeclient; @FXML private TableColumn cin; @FXML private TableColumn nomcomplet; @FXML private TableColumn nom; @FXML private TableColumn prenom; @FXML private TableColumn tele; @FXML public TableColumn Action ; @FXML private TextField GestionClientcode; @FXML private TextField GestionClientcin; @FXML private TextField GestionClientnomcomplet; @FXML private TextField GestionClientnom; @FXML private TextField GestionClientprenom; @FXML private DatePicker DatePickerNaissance; public Node nodeFxml ; Client client = new Client(); 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; public Object[] ArrayObjectDataSave = new Object[10]; private Service ThreadSearchRerchecheClientPersonne; public RechercherClientPersonneController() { try { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Client/RechercherClientPersonne.fxml")); fxmlLoader.setController(this); nodeFxml = (Node) fxmlLoader.load(); } catch (IOException ex) { Logger.getLogger(RechercherClientPersonneController.class.getName()).log(Level.SEVERE, null, ex); } } @Override public void initialize(URL url, ResourceBundle rb) { NbrLigne.setItems(cursors); NbrLigne.getSelectionModel().selectFirst(); codeclient.setCellValueFactory(new PropertyValueFactory("code")); cin.setCellValueFactory(new PropertyValueFactory("cin")); nomcomplet.setCellValueFactory(new PropertyValueFactory("nomcomplet")); nom.setCellValueFactory(new PropertyValueFactory("nom")); prenom.setCellValueFactory(new PropertyValueFactory("prenom")); tele.setCellValueFactory(new PropertyValueFactory("tele")); Action.setStyle( "-fx-alignment: CENTER;"); Action.getStyleClass().add("Center"); ButtonSearchClientPersonne.setOnMouseClicked(new EventHandler() { public void handle(MouseEvent me) { SearchClientPersonne(); } }); AnchoreClientPerson.setOnKeyPressed(new EventHandler() { @Override public void handle(KeyEvent ke) { if (ke.getCode().equals(KeyCode.ENTER)) { SearchClientPersonne(); } } }); GestionSearchClientPersonne(); } @FXML private void QuiterButtonAction(ActionEvent event) throws IOException { AnchoreClientPerson.setVisible(false); } public void ShowDialg() { StackPane Sp = new StackPane(); Scene scene = new Scene(Sp); Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); Sp.getChildren().add(MyWindow.myParent); Sp.getChildren().add(nodeFxml); Stage stage = MyWindow.myStage; stage.setScene(scene); stage.show(); cltPersonne.setSelected(true); } /****************************************************************************** * * * * Methode last Next TableView * * * * ******************************************************************************/ private void SearchClientPersonne() { ProgressBarClientPersonne.setVisible(true); ButtonSearchClientPersonne.setDisable(true); ThreadSearchRerchecheClientPersonne = new Service(){ @Override protected Task createTask(){ return new Task(){ @Override protected Void call() throws Exception{ position = 0; actuellepage = 1; String DateNaissance = ""; if(DatePickerNaissance.getValue() != null){ DateNaissance = DatePickerNaissance.getValue().toString(); } ObservableList ListeCltPersonne = new ClientDB().SearchCltPersonneGestion( position, nbrligne, GestionClientcode.getText(), GestionClientcin.getText(), GestionClientnomcomplet.getText(), GestionClientnom.getText(), GestionClientprenom.getText(), DateNaissance); TableViewListeClient.setItems(ListeCltPersonne); totalcount = new ClientDB().nbrCltPersonneGestion(GestionClientcode.getText(), GestionClientcin.getText(), GestionClientnomcomplet.getText(), GestionClientnom.getText(), GestionClientprenom.getText(), DateNaissance); 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; } }; } }; ThreadSearchRerchecheClientPersonne.setOnSucceeded(new EventHandler(){ @Override public void handle(WorkerStateEvent event){ ProgressBarClientPersonne.setVisible(false); ButtonSearchClientPersonne.setDisable(false); LabelCount.setText(totalcount.toString()); } }); ThreadSearchRerchecheClientPersonne.start(); } private void NextLastSearchClientPersonne(Integer ParmPosition, Integer ParamNbrligne) { ProgressBarClientPersonne.setVisible(true); ButtonSearchClientPersonne.setDisable(true); ThreadSearchRerchecheClientPersonne = new Service(){ @Override protected Task createTask(){ return new Task(){ @Override protected Void call() throws Exception{ String DateNaissance = ""; if(DatePickerNaissance.getValue() != null){ DateNaissance = DatePickerNaissance.getValue().toString(); } ObservableList ListeCltPersonne = new ClientDB().SearchCltPersonneGestion( ParmPosition, ParamNbrligne, GestionClientcode.getText(), GestionClientcin.getText(), GestionClientnomcomplet.getText(), GestionClientnom.getText(), GestionClientprenom.getText(), DateNaissance); TableViewListeClient.setItems(ListeCltPersonne); return null; } }; } }; ThreadSearchRerchecheClientPersonne.setOnSucceeded(new EventHandler(){ @Override public void handle(WorkerStateEvent event){ ProgressBarClientPersonne.setVisible(false); ButtonSearchClientPersonne.setDisable(false); } }); ThreadSearchRerchecheClientPersonne.start(); } private void GestionSearchClientPersonne() { 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; NextLastSearchClientPersonne(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; NextLastSearchClientPersonne(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; NextLastSearchClientPersonne(position, nbrligne); actuellepage=actuellepage-3 ; ActuellePage.setText(Integer.toString(actuellepage)); } } }); } }