1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
package com.gwt.client.Panel;
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.SourcesTableEvents;
import com.google.gwt.user.client.ui.TableListener;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.gwt.client.BDD.RetourBDD;
import com.gwt.client.Utilisateur.Utilisateur;
import com.gwt.client.dialogueBox.FenetreModifier;
import com.gwt.client.dialogueBox.FenetreSupprimer;
public class PanelUtilisateur extends VerticalPanel {
private FlexTable t = new FlexTable();
public static PanelUtilisateur instance;
public String reponsePhp;
public String reponsePhp2;
public RetourBDD str;
private int selectedRow;
private Utilisateur[] utilisateurs;
private int nombreChamps;
private int longueurTotale;
private Button btnModifier;
private Button btnSupprimer;
private HorizontalPanel panelBoutons;
public PanelUtilisateur() {
/* Url de destination */
String url = "http://127.0.0.1/getAllUtilisateurs.php";
boolean good = HTTPRequest.asyncGet(url , new ResponseTextHandler(){
public void onCompletion(String responseText) {
/* Récuperation de la reponse dans reponsePhp */
reponsePhp = responseText;
/* Création des 7 colonnes de la flextable */
t.setTitle("Utilisateur(s)");
t.setText(0, 0,"Login");
t.setText(0, 1,"Mot de Passe");
t.setText(0, 2,"Nom");
t.setText(0, 3,"Prénom");
t.setText(0, 4,"Email");
t.setText(0, 5,"Fonction");
t.setText(0, 6,"Droit");
t.setWidth("100%");
t.setCellSpacing(2);
/* Utilisation du css sur la ligne des titres du tableau */
for (int i = 0; i < 7; i++) {
t.getCellFormatter().addStyleName(0, i, "ajout-panelAjout");
}
/* Création d'un objet RetourBDD avec le retour du HttpRequest */
str = new RetourBDD(reponsePhp, ";");
/* Calcul des longueur totale et le nombre de champs de la chaine */
longueurTotale = reponsePhp.length();
nombreChamps = (str.compteChamps(longueurTotale)-1)/7;
/* Création d'un tableau d'utilisateur */
utilisateurs = new Utilisateur[nombreChamps+1];
/* Appel de la méthode getAllUtilisateurs pour remplir le tableau d'utilisateur */
utilisateurs = Utilisateur.getAllUtilisateurs(nombreChamps,longueurTotale, reponsePhp);
/* Appel de la methode addUtilisateurs pour ajouter les utilisateurs dans le tableau */
for (int i = 0; i <= nombreChamps; i++)
addUtilisateur(utilisateurs[i],i+1);
/* Listenner pour pouvoir cliquer sur une ligne du tableau */
t.addTableListener(new TableListener(){
public void onCellClicked(SourcesTableEvents sender, int row, int cell) {
/* Selection de la ligne cliquée avec -1 pour la ligne de titre */
if (row > 0) {
selectRow(row - 1);
}
}
});
}
});
btnModifier = new Button ("Modifier");
btnSupprimer = new Button ("Supprimer");
btnModifier.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
FenetreModifier fenMod = new FenetreModifier(PanelUtilisateur.this, utilisateurs[selectedRow], selectedRow);
fenMod.show();
fenMod.center();
}
});
btnSupprimer.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
FenetreSupprimer fenMod = new FenetreSupprimer(PanelUtilisateur.this, utilisateurs[selectedRow], selectedRow);
fenMod.show();
fenMod.center();
}
});
panelBoutons = new HorizontalPanel();
panelBoutons.add(btnModifier);
panelBoutons.add(btnSupprimer);
this.add(t);
this.add(panelBoutons);
this.setWidth("75%");
instance=this;
}
private void selectRow(int row) {
styleRow(selectedRow, false);
styleRow(row, true);
selectedRow = row;
}
private void styleRow(int row, boolean selected) {
/* Uilisation du css pour colorer la ligne selectionnée ou retirer la couleur quand elle est deselectionnée */
if (row != -1) {
if (selected) {
t.getRowFormatter().addStyleName(row + 1, "ligneSelectionnee");
} else {
t.getRowFormatter().removeStyleName(row + 1, "ligneSelectionnee");
}
}
}
private void addUtilisateur(Utilisateur utilisateur,int i) {
/* Pour chaque ligne appel des methodes pour avoir les nom , ... puis les ajouter dans le tableau */
t.setText(i, 0,utilisateur.getLogin());
t.setText(i, 1,utilisateur.getPwd());
t.setText(i, 2,utilisateur.getNom());
t.setText(i, 3,utilisateur.getPrenom());
t.setText(i, 4,utilisateur.getEmail());
t.setText(i, 5,utilisateur.getFonction());
t.setText(i, 6,utilisateur.getDroit());
/* Utilisation du css pour changer la couleur 1 ligne sur 2 */
for (int j = 0; j < 7; j++) {
if(i%2==0)
t.getCellFormatter().addStyleName(i, j, "tableauLigne1");
else
t.getCellFormatter().addStyleName(i, j, "tableauLigne2");
}
}
} |