Files
PowerPME_maven/src/main/java/Controllers/Client/RechercherClientPersonneController.java
2025-10-30 13:23:53 +01:00

397 lines
15 KiB
Java

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<ListeClient> TableViewListeClient ;
@FXML private TableColumn<ListeClient ,String> codeclient;
@FXML private TableColumn<ListeClient ,Integer> cin;
@FXML private TableColumn<ListeClient ,String> nomcomplet;
@FXML private TableColumn<ListeClient ,String> nom;
@FXML private TableColumn<ListeClient ,String> prenom;
@FXML private TableColumn<ListeClient ,String> tele;
@FXML public TableColumn<ListeClient, String> 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<Void> 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<ListeClient, String>("code"));
cin.setCellValueFactory(new PropertyValueFactory<ListeClient, Integer>("cin"));
nomcomplet.setCellValueFactory(new PropertyValueFactory<ListeClient, String>("nomcomplet"));
nom.setCellValueFactory(new PropertyValueFactory<ListeClient, String>("nom"));
prenom.setCellValueFactory(new PropertyValueFactory<ListeClient, String>("prenom"));
tele.setCellValueFactory(new PropertyValueFactory<ListeClient, String>("tele"));
Action.setStyle( "-fx-alignment: CENTER;");
Action.getStyleClass().add("Center");
ButtonSearchClientPersonne.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent me) {
SearchClientPersonne();
}
});
AnchoreClientPerson.setOnKeyPressed(new EventHandler<KeyEvent>() {
@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<Void>(){
@Override
protected Task<Void> createTask(){
return new Task<Void>(){
@Override
protected Void call() throws Exception{
position = 0;
actuellepage = 1;
String DateNaissance = "";
if(DatePickerNaissance.getValue() != null){
DateNaissance = DatePickerNaissance.getValue().toString();
}
ObservableList<ListeClient> 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<WorkerStateEvent>(){
@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<Void>(){
@Override
protected Task<Void> createTask(){
return new Task<Void>(){
@Override
protected Void call() throws Exception{
String DateNaissance = "";
if(DatePickerNaissance.getValue() != null){
DateNaissance = DatePickerNaissance.getValue().toString();
}
ObservableList<ListeClient> 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<WorkerStateEvent>(){
@Override
public void handle(WorkerStateEvent event){
ProgressBarClientPersonne.setVisible(false);
ButtonSearchClientPersonne.setDisable(false);
}
});
ThreadSearchRerchecheClientPersonne.start();
}
private void GestionSearchClientPersonne()
{
NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
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<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
if(actuellepage<nbrpage)
{
position=position+nbrligne;
NextLastSearchClientPersonne(position, nbrligne);
actuellepage=actuellepage+1 ;
ActuellePage.setText(Integer.toString(actuellepage));
}
}
});
//last page
lastgroupe.setOnMousePressed(new EventHandler<MouseEvent>(){
@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<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
if(actuellepage+3<nbrpage)
{
position=(position+4)+nbrligne;
NextLastSearchClientPersonne(position, nbrligne);
actuellepage=actuellepage+3 ;
ActuellePage.setText(Integer.toString(actuellepage));
}
}
});
//last page avec un pas de -5
retourgroupe.setOnMousePressed(new EventHandler<MouseEvent>(){
@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));
}
}
});
}
}