2022-11-26 19:46:16 +01:00
|
|
|
package Test;
|
|
|
|
|
|
|
|
import API.Etudiant;
|
|
|
|
import API.Groupe;
|
|
|
|
|
|
|
|
import javax.swing.JTable;
|
|
|
|
import javax.swing.JScrollPane;
|
|
|
|
import javax.swing.JOptionPane;
|
2022-11-27 13:10:18 +01:00
|
|
|
import javax.swing.event.ListSelectionEvent;
|
|
|
|
import javax.swing.ListSelectionModel;
|
|
|
|
import javax.swing.event.ListSelectionListener;
|
|
|
|
import javax.swing.table.TableModel;
|
2022-11-26 19:46:16 +01:00
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import java.awt.event.ActionListener;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Objects;
|
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
//test
|
|
|
|
import javax.swing.JDialog;
|
|
|
|
import javax.swing.JPanel;
|
|
|
|
import java.awt.GridLayout;
|
|
|
|
|
|
|
|
public class Controller implements ActionListener, ListSelectionListener {
|
2022-11-26 19:46:16 +01:00
|
|
|
private final BDatabase db;
|
|
|
|
private final ProfView pv;
|
|
|
|
private final AdminView av;
|
|
|
|
private final ArrayList<Etudiant> e;
|
|
|
|
private final ArrayList<Groupe> g;
|
2022-11-27 13:10:18 +01:00
|
|
|
private JTable currentJTableUse;
|
2022-11-26 19:46:16 +01:00
|
|
|
|
|
|
|
public Controller(ArrayList<Etudiant> e, ArrayList<Groupe> g) {
|
|
|
|
this.e = e;
|
|
|
|
this.g = g;
|
|
|
|
this.db = new BDatabase();
|
|
|
|
this.pv = new ProfView(e, g, this);
|
|
|
|
System.out.println("[+] Demarrage de la vue professeur -> " + pv);
|
|
|
|
this.av = new AdminView(e, g, this);
|
|
|
|
System.out.println("[+] Demarrage de la vue Administrateur -> " + av);
|
|
|
|
}
|
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
/**
|
|
|
|
* Pour creer une JTable
|
|
|
|
* @param data Les donnees
|
|
|
|
* @param title Les titres
|
|
|
|
* */
|
|
|
|
private JTable createJTable(Object[][] data, String[] title) {
|
|
|
|
return new JTable(data, title) {
|
|
|
|
public boolean editCellAt(int row, int column, java.util.EventObject e) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pour afficher une JTable
|
|
|
|
* @param frame La fenetre
|
|
|
|
* @param liste La JTable
|
|
|
|
* */
|
|
|
|
private void Display(BFrame frame, JTable liste) {
|
|
|
|
liste.getTableHeader().setReorderingAllowed(false);
|
|
|
|
liste.setFillsViewportHeight(true);
|
|
|
|
|
|
|
|
this.currentJTableUse = liste;
|
|
|
|
|
|
|
|
JScrollPane scroll = new JScrollPane(liste);
|
|
|
|
frame.getContentPane().add(scroll);
|
|
|
|
|
|
|
|
frame.openBFrame();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pour afficher une JTable contenant un listener
|
|
|
|
* @param frameTitle La fenetre
|
|
|
|
* @param liste La JTable
|
|
|
|
* */
|
|
|
|
private void DisplayWithListner(BFrame parent, String frameTitle, JTable liste) {
|
|
|
|
JPanel forModal = new JPanel();
|
|
|
|
|
|
|
|
ListSelectionModel lsm = liste.getSelectionModel();
|
|
|
|
lsm.addListSelectionListener(this);
|
|
|
|
liste.getTableHeader().setReorderingAllowed(false);
|
|
|
|
liste.setFillsViewportHeight(true);
|
|
|
|
|
|
|
|
this.currentJTableUse = liste;
|
|
|
|
|
|
|
|
forModal.add(liste);
|
|
|
|
|
|
|
|
// BETA
|
|
|
|
// TODO: Manque les colonnes et prends toute la surface
|
|
|
|
BFrame frame = new BFrame(frameTitle, 1, 1, 500, 500, parent, forModal);
|
|
|
|
}
|
|
|
|
|
2022-11-26 19:46:16 +01:00
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
String command = e.getActionCommand();
|
|
|
|
|
|
|
|
String groupeOption = this.pv.getComboSelection();
|
|
|
|
int groupeIndex = this.pv.getComboSelectionIndex();
|
|
|
|
String text = this.pv.getSearchStud();
|
|
|
|
|
2022-11-26 20:34:37 +01:00
|
|
|
if(Objects.equals(command, "pv::GetStudList")) {
|
2022-11-26 19:46:16 +01:00
|
|
|
BFrame frame = new BFrame(
|
|
|
|
"Liste des eleves",
|
|
|
|
1,
|
|
|
|
1,
|
|
|
|
500,
|
|
|
|
500,
|
|
|
|
"GridLayout",
|
|
|
|
1,
|
|
|
|
1,
|
|
|
|
2
|
|
|
|
);
|
|
|
|
|
|
|
|
String[][] data = new String[this.e.size()][2];
|
|
|
|
|
|
|
|
String[] titre = {
|
|
|
|
"Nom",
|
|
|
|
"Prenom",
|
|
|
|
"Groupe"
|
|
|
|
};
|
|
|
|
|
|
|
|
for(int i = 0; i <= this.e.size()-1; i++) {
|
|
|
|
String[] info = {
|
|
|
|
this.e.get(i).getNom(),
|
|
|
|
this.e.get(i).getPrenom(),
|
|
|
|
String.valueOf(this.e.get(i).getGroupe())
|
|
|
|
};
|
|
|
|
|
|
|
|
data[i] = info;
|
|
|
|
}
|
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
Display(frame, this.createJTable(data, titre));
|
2022-11-26 19:46:16 +01:00
|
|
|
}
|
|
|
|
|
2022-11-26 20:34:37 +01:00
|
|
|
else if(Objects.equals(command, "pv::GetListFiltered")) {
|
2022-11-26 19:46:16 +01:00
|
|
|
BFrame frame = new BFrame(
|
|
|
|
"Liste des eleves du " + groupeOption,
|
|
|
|
1,
|
|
|
|
1,
|
|
|
|
500,
|
|
|
|
500,
|
|
|
|
"GridLayout",
|
|
|
|
1,
|
|
|
|
1,
|
|
|
|
2
|
|
|
|
);
|
|
|
|
|
|
|
|
String[][] data = new String[this.e.size()][1];
|
|
|
|
|
|
|
|
String[] titre = {
|
|
|
|
"Nom",
|
|
|
|
"Prenom"
|
|
|
|
};
|
|
|
|
|
|
|
|
int i, j;
|
|
|
|
|
|
|
|
for(i = 0, j = 0; i <= this.e.size()-1; i++) {
|
|
|
|
if(this.e.get(i).getGroupe() == groupeIndex) {
|
|
|
|
String[] info = {
|
|
|
|
this.e.get(i).getNom(),
|
|
|
|
this.e.get(i).getPrenom()
|
|
|
|
};
|
|
|
|
|
|
|
|
data[j] = info;
|
|
|
|
j++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
String[][] data_final = new String[j][1];
|
|
|
|
for(int x = 0; x <= j-1; x++) {
|
|
|
|
data_final[x] = data[x];
|
|
|
|
}
|
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
Display(frame, this.createJTable(data, titre));
|
2022-11-26 19:46:16 +01:00
|
|
|
}
|
|
|
|
|
2022-11-26 20:34:37 +01:00
|
|
|
else if(Objects.equals(command, "pv::SearchStudentPer3Letters")) {
|
2022-11-26 19:46:16 +01:00
|
|
|
if(text.length() < 3 || text == null) {
|
|
|
|
JOptionPane.showMessageDialog(
|
|
|
|
this.pv,
|
|
|
|
"Veuillez ecrire 3 lettres",
|
|
|
|
"Erreur.",
|
|
|
|
JOptionPane.ERROR_MESSAGE
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
char[] beg = text.toCharArray();
|
|
|
|
|
|
|
|
BFrame frame = new BFrame(
|
|
|
|
"Liste d'eleves d'ou les noms commence par " + beg[0] + beg[1] + beg[2],
|
|
|
|
1,
|
|
|
|
1,
|
|
|
|
500,
|
|
|
|
500,
|
|
|
|
"GridLayout",
|
|
|
|
1,
|
|
|
|
1,
|
|
|
|
2
|
|
|
|
);
|
|
|
|
|
|
|
|
ArrayList<String> filtreEleveNom = db.fetchAll("SELECT nom FROM fi_eleves WHERE nom LIKE '" + beg[0] + beg[1] + beg[2] + "%'");
|
|
|
|
ArrayList<String> filtreElevePrenom = db.fetchAll("SELECT prenom FROM fi_eleves WHERE nom LIKE '" + beg[0] + beg[1] + beg[2] + "%'");
|
|
|
|
ArrayList<String> filtreEleveGroupe = db.fetchAll("SELECT groupe FROM fi_eleves WHERE nom LIKE '" + beg[0] + beg[1] + beg[2] + "%'");
|
|
|
|
|
|
|
|
System.out.println(filtreEleveGroupe.size() + filtreElevePrenom.size() + filtreEleveGroupe.size());
|
|
|
|
|
|
|
|
if(filtreEleveGroupe.size() == 0 || filtreEleveNom.size() == 0 || filtreElevePrenom.size() == 0) {
|
|
|
|
JOptionPane.showMessageDialog(
|
|
|
|
this.pv,
|
|
|
|
"Eleve introuvable !",
|
|
|
|
"Erreur.",
|
|
|
|
JOptionPane.ERROR_MESSAGE
|
|
|
|
);
|
|
|
|
|
|
|
|
frame.closeBFrame();
|
|
|
|
} else {
|
|
|
|
String[] titre = {
|
|
|
|
"Nom",
|
|
|
|
"Prenom",
|
|
|
|
"Groupe"
|
|
|
|
};
|
|
|
|
|
|
|
|
String[][] data = new String[filtreEleveNom.size()][2];
|
|
|
|
|
|
|
|
for(int i = 0; i <= filtreEleveNom.size()-1; i++){
|
|
|
|
data[i] = new String[]{
|
|
|
|
filtreEleveNom.get(i),
|
|
|
|
filtreElevePrenom.get(i),
|
|
|
|
String.valueOf(filtreEleveGroupe.get(i))
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
Display(frame, this.createJTable(data, titre));
|
2022-11-26 19:46:16 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-11-26 20:34:37 +01:00
|
|
|
|
2022-11-26 22:30:18 +01:00
|
|
|
else if(Objects.equals(command, "av::MoveStudGrup")) {
|
2022-11-27 13:10:18 +01:00
|
|
|
Object[][] data = new Object[this.e.size()][2];
|
2022-11-26 22:30:18 +01:00
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
String[] titre = {
|
|
|
|
"Nom",
|
|
|
|
"Prenom",
|
|
|
|
"Groupe"
|
2022-11-26 22:30:18 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
for(int i = 0; i <= this.e.size()-1; i++) {
|
|
|
|
Object[] info = {
|
2022-11-27 13:10:18 +01:00
|
|
|
this.e.get(i).getNom(),
|
|
|
|
this.e.get(i).getPrenom(),
|
|
|
|
String.valueOf(this.e.get(i).getGroupe()),
|
2022-11-26 22:30:18 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
data[i] = info;
|
|
|
|
}
|
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
DisplayWithListner(this.av, "Deplacer un etudiant", this.createJTable(data, titre));
|
2022-11-26 20:34:37 +01:00
|
|
|
}
|
2022-11-26 19:46:16 +01:00
|
|
|
}
|
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
@Override
|
|
|
|
public void valueChanged(ListSelectionEvent e) {
|
|
|
|
int[] cell;
|
|
|
|
Object value;
|
|
|
|
if (!e.getValueIsAdjusting())
|
|
|
|
{
|
|
|
|
cell = this.currentJTableUse.getSelectedRows();
|
|
|
|
if (cell.length > 0)
|
|
|
|
{
|
|
|
|
for (int i=0; i < 3; i++) {
|
|
|
|
TableModel tm = this.currentJTableUse.getModel();
|
|
|
|
value = tm.getValueAt(cell[0],i);
|
|
|
|
System.out.print(value + " ");
|
|
|
|
}
|
2022-11-26 19:46:16 +01:00
|
|
|
|
2022-11-27 13:10:18 +01:00
|
|
|
System.out.println();
|
|
|
|
}
|
|
|
|
}
|
2022-11-26 19:46:16 +01:00
|
|
|
}
|
|
|
|
}
|