This commit is contained in:
pro.boooooo 2022-11-27 13:10:18 +01:00
parent 7d122608b3
commit 7dd1cbbf33
7 changed files with 119 additions and 51 deletions

View File

@ -44,7 +44,7 @@ public class AdminView extends BFrame {
settings.setPositionY(2); settings.setPositionY(2);
JButton addStudGrup = new JButton("Ajouter un etudiant dans un groupe"); JButton addStudGrup = new JButton("Ajouter un etudiant dans un groupe");
addStudGrup.addActionListener(this.listener); addStudGrup.addActionListener(this.listener);
addStudGrup.setActionCommand("av::AddStudGrup"); addStudGrup.setActionCommand("TODO");
this.add(addStudGrup, settings); this.add(addStudGrup, settings);
this.openBFrame(); this.openBFrame();

View File

@ -7,9 +7,7 @@ package Test;
* 28/09/2022 at 20:35 * 28/09/2022 at 20:35
* */ * */
import javax.swing.JFrame; import javax.swing.*;
import javax.swing.SwingUtilities;
import javax.swing.ImageIcon;
import java.awt.GridBagLayout; import java.awt.GridBagLayout;
import java.awt.GridLayout; import java.awt.GridLayout;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
@ -21,7 +19,7 @@ import java.awt.event.WindowEvent;
*/ */
public class BFrame extends JFrame { public class BFrame extends JFrame {
private final String title; private String title;
private int location_x = 1; private int location_x = 1;
private int location_y = 1; private int location_y = 1;
private int width = 500; private int width = 500;
@ -100,6 +98,30 @@ public class BFrame extends JFrame {
initBFrame(layout, layout_row, layout_col); initBFrame(layout, layout_row, layout_col);
} }
/**
* Pour creer une fenetre modal
*
* @param title Le titre de la fenetre
* @param loca_x La localisation en x de la fenetre
* @param loca_y La localisation en y de la fenetre
* @param size_x La longueur de la fenetre
* @param size_y La largeur de la fenetre
* @param daron La fenetre qui va etre bloquer
* @param content Contenu de la fenetre
* */
public BFrame(String title, int loca_x, int loca_y, int size_x, int size_y, BFrame daron, JPanel content) {
JDialog frame = new JDialog(daron, title, true);
frame.setLocation(loca_x, loca_y);
frame.setSize(size_x, size_y);
frame.getContentPane().add(content);
JScrollPane scrollPane = new JScrollPane();
frame.getContentPane().add(scrollPane);
scrollPane.setViewportView(content);
frame.setVisible(true);
}
/** /**
* Initialiser la fenetre sans Layout par def. * Initialiser la fenetre sans Layout par def.
*/ */

View File

@ -6,17 +6,27 @@ import API.Groupe;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableModel;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Objects; import java.util.Objects;
public class Controller implements ActionListener { //test
import javax.swing.JDialog;
import javax.swing.JPanel;
import java.awt.GridLayout;
public class Controller implements ActionListener, ListSelectionListener {
private final BDatabase db; private final BDatabase db;
private final ProfView pv; private final ProfView pv;
private final AdminView av; private final AdminView av;
private final ArrayList<Etudiant> e; private final ArrayList<Etudiant> e;
private final ArrayList<Groupe> g; private final ArrayList<Groupe> g;
private JTable currentJTableUse;
public Controller(ArrayList<Etudiant> e, ArrayList<Groupe> g) { public Controller(ArrayList<Etudiant> e, ArrayList<Groupe> g) {
this.e = e; this.e = e;
@ -28,6 +38,58 @@ public class Controller implements ActionListener {
System.out.println("[+] Demarrage de la vue Administrateur -> " + av); System.out.println("[+] Demarrage de la vue Administrateur -> " + av);
} }
/**
* 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);
}
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand(); String command = e.getActionCommand();
@ -67,7 +129,7 @@ public class Controller implements ActionListener {
data[i] = info; data[i] = info;
} }
Display(frame, data, titre); Display(frame, this.createJTable(data, titre));
} }
else if(Objects.equals(command, "pv::GetListFiltered")) { else if(Objects.equals(command, "pv::GetListFiltered")) {
@ -109,7 +171,7 @@ public class Controller implements ActionListener {
data_final[x] = data[x]; data_final[x] = data[x];
} }
Display(frame, data_final, titre); Display(frame, this.createJTable(data, titre));
} }
else if(Objects.equals(command, "pv::SearchStudentPer3Letters")) { else if(Objects.equals(command, "pv::SearchStudentPer3Letters")) {
@ -167,67 +229,51 @@ public class Controller implements ActionListener {
}; };
} }
Display(frame, data, titre); Display(frame, this.createJTable(data, titre));
} }
} }
} }
else if(Objects.equals(command, "av::MoveStudGrup")) { else if(Objects.equals(command, "av::MoveStudGrup")) {
BFrame frame = new BFrame( Object[][] data = new Object[this.e.size()][2];
"Deplacer un etudiant",
1,
1,
500,
500,
"GridLayout",
1,
1,
2
);
String[][] data = new String[this.e.size()][3]; String[] titre = {
"Nom",
Object[] titre = { "Prenom",
(String) "Nom", "Groupe"
(String) "Prenom",
(String) "Groupe",
(String) "Action"
}; };
for(int i = 0; i <= this.e.size()-1; i++) { for(int i = 0; i <= this.e.size()-1; i++) {
Object[] info = { Object[] info = {
(String) this.e.get(i).getNom(), this.e.get(i).getNom(),
(String) this.e.get(i).getPrenom(), this.e.get(i).getPrenom(),
(String) String.valueOf(this.e.get(i).getGroupe()), String.valueOf(this.e.get(i).getGroupe()),
(String) "Deplacer"
}; };
data[i] = info; data[i] = info;
} }
Display(frame, data, titre); DisplayWithListner(this.av, "Deplacer un etudiant", this.createJTable(data, titre));
} }
} }
/** @Override
* Pour afficher le JTable public void valueChanged(ListSelectionEvent e) {
* @param frame La fenetre int[] cell;
* @param data Les donnees des colonnes du tableau Object value;
* @param titre Les titres des colonnes if (!e.getValueIsAdjusting())
* */ {
private void Display(BFrame frame, Object[][] data, Object[] titre) { cell = this.currentJTableUse.getSelectedRows();
JTable liste = new JTable(data, titre) { if (cell.length > 0)
public boolean editCellAt(int row, int column, java.util.EventObject e) { {
return false; for (int i=0; i < 3; i++) {
TableModel tm = this.currentJTableUse.getModel();
value = tm.getValueAt(cell[0],i);
System.out.print(value + " ");
} }
};
liste.getTableHeader().setReorderingAllowed(false); System.out.println();
liste.setFillsViewportHeight(true); }
}
JScrollPane scroll = new JScrollPane(liste);
frame.getContentPane().add(scroll);
frame.openBFrame();
} }
} }