ok
This commit is contained in:
358
src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Model/ModelEtu.java
Normal file
358
src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Model/ModelEtu.java
Normal file
@@ -0,0 +1,358 @@
|
||||
package fr.iutfbleau.projetIHM2022FI2.MP.ETU.Model;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.Set;
|
||||
import java.util.HashSet;
|
||||
import fr.iutfbleau.projetIHM2022FI2.API.AbstractChangementFactory;
|
||||
import fr.iutfbleau.projetIHM2022FI2.API.AbstractGroupeFactory;
|
||||
import fr.iutfbleau.projetIHM2022FI2.API.Changement;
|
||||
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||
import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe;
|
||||
import fr.iutfbleau.projetIHM2022FI2.API.Model;
|
||||
import fr.iutfbleau.projetIHM2022FI2.Permanent.Controller.ObservateurFenetre;
|
||||
import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Chargement;
|
||||
import fr.iutfbleau.projetIHM2022FI2.MP.AbstractChangementFactoryNP;
|
||||
import fr.iutfbleau.projetIHM2022FI2.MP.AbstractGroupeFactoryNP;
|
||||
import fr.iutfbleau.projetIHM2022FI2.MP.ETU.View.FenetreEtudiant;
|
||||
import fr.iutfbleau.projetIHM2022FI2.MP.ETU.View.FenetreGroupe;
|
||||
|
||||
/**
|
||||
* Le Model de L'IHM
|
||||
*/
|
||||
public class ModelEtu implements Model{
|
||||
// le panel qui contient la fenetre de groupe
|
||||
private JPanel panGroupe;
|
||||
// la fenetre de groupe
|
||||
private FenetreGroupe fenGr;
|
||||
//la fenetre d'etudiant
|
||||
private FenetreEtudiant fenEtu;
|
||||
// le groupe courant
|
||||
private AbstractGroupeFactory promo;
|
||||
// le changement courant
|
||||
private AbstractChangementFactory changement;
|
||||
// la fenetre principale
|
||||
private JFrame fenetre;
|
||||
// l'etudiant courant
|
||||
private Etudiant Selected;
|
||||
/**
|
||||
* Constructeur du Model
|
||||
*/
|
||||
public ModelEtu(){
|
||||
this.fenetre=new JFrame();
|
||||
this.fenetre.setSize(1200, 720);
|
||||
this.fenetre.setLocation(100,100);
|
||||
this.fenetre.addWindowListener(new ObservateurFenetre());
|
||||
this.fenetre.setLayout(new GridLayout(1,2));
|
||||
this.fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
||||
this.fenetre.setMinimumSize(this.fenetre.getSize());
|
||||
Chargement ch=new Chargement(this.fenetre);
|
||||
this.promo=new AbstractGroupeFactoryNP(this.fenetre);
|
||||
if(this.promo.getPromotion()==null){
|
||||
this.promo=null;
|
||||
}
|
||||
ch.dispose();
|
||||
this.fenetre.setVisible(true);
|
||||
this.initEtu(null);
|
||||
if(this.promo==null){
|
||||
this.fenGr=new FenetreGroupe(null, this, null);
|
||||
this.fenEtu=new FenetreEtudiant(null, this.Selected, this);
|
||||
this.changement=null;
|
||||
}else{
|
||||
this.changement=new AbstractChangementFactoryNP(promo, this.fenetre);
|
||||
this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this,this.promo.getGroupesOfEtudiant(this.Selected));
|
||||
this.fenEtu=new FenetreEtudiant(this.promo.getPromotion(), this.Selected, this);
|
||||
}
|
||||
this.panGroupe=new JPanel(new GridLayout(1,1));
|
||||
if(this.promo!=null){
|
||||
this.showGroupe(this.promo.getPromotion());
|
||||
}else{
|
||||
this.showGroupe(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
/**
|
||||
* Fonction pour refresh/changer de groupe d'affichage
|
||||
* @param g le groupe a afficher
|
||||
*/
|
||||
public void showGroupe(Groupe g){
|
||||
if(g!=null)
|
||||
g=this.promo .refreshALL(g);
|
||||
this.panGroupe.removeAll();
|
||||
this.fenGr=new FenetreGroupe(g, this, this.promo.getGroupesOfEtudiant(this.Selected));
|
||||
this.fenEtu=new FenetreEtudiant(g, this.Selected, this);
|
||||
this.fenetre.getContentPane().removeAll();
|
||||
this.panGroupe.add(this.fenGr.getPan());
|
||||
this.panGroupe.revalidate();
|
||||
this.fenetre.add(this.panGroupe);
|
||||
JScrollPane scroll=new JScrollPane(this.fenEtu.getPan());
|
||||
scroll.getVerticalScrollBar().setUnitIncrement(15);
|
||||
this.fenetre.add(scroll);
|
||||
this.fenetre.revalidate();
|
||||
}
|
||||
@Override
|
||||
/**
|
||||
* getteur de la fenetre
|
||||
* @return JFrame la fenetre
|
||||
*/
|
||||
public JFrame getFenetre() {
|
||||
return fenetre;
|
||||
}
|
||||
/**
|
||||
* Permet d'obtenir les étudiants du groupe courant.
|
||||
* @return les étudiants du groupe courant
|
||||
*/
|
||||
@Override
|
||||
public Set<Etudiant> getEtudiant(){
|
||||
return this.promo.getPromotion().getEtudiants();
|
||||
}
|
||||
|
||||
private void initEtu(String err){
|
||||
Set<Etudiant> liste=this.promo.getPromotion().getEtudiants();
|
||||
JPanel panel = new JPanel();
|
||||
JPanel myPanel = new JPanel();
|
||||
JTextField idd = new JTextField(15);
|
||||
myPanel.add(new JLabel("Id:"));
|
||||
myPanel.add(idd);
|
||||
if(err!=null){
|
||||
myPanel.add(new JLabel(err, SwingConstants.RIGHT));
|
||||
}
|
||||
panel.add(myPanel);
|
||||
|
||||
if(JOptionPane.showConfirmDialog(this.fenetre, panel, "login", JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION){
|
||||
this.fenetre.dispose();
|
||||
System.exit(0);
|
||||
}else{
|
||||
try{
|
||||
int id=Integer.parseInt(idd.getText());
|
||||
for(Etudiant et:liste){
|
||||
if(et.getId()==id){
|
||||
this.Selected=et;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}catch(NumberFormatException e){
|
||||
this.initEtu("Id incomprhéhensible");
|
||||
}
|
||||
}
|
||||
this.initEtu("Etudiant introuvable");
|
||||
}
|
||||
|
||||
// **************************
|
||||
// FONCTION POUR LES CHANGEMENTS
|
||||
// ******************************
|
||||
/**
|
||||
* Permet de changer de groupe.
|
||||
* @param e l'étudiant qui change de groupe
|
||||
* @param g le groupe dans lequel l'étudiant va
|
||||
*/
|
||||
@Override
|
||||
public void changeGroupe(Etudiant e, Groupe b){
|
||||
if(b==null)
|
||||
return;
|
||||
b=this.promo.refreshALL(b);
|
||||
if(b.getEtudiants()!=null && b.getMax()>b.getEtudiants().size()+1){
|
||||
if(b.getEtudiants().size()>this.fenGr.getG().getEtudiants().size()){
|
||||
JPanel myPanel= new JPanel(new GridLayout(2,1));
|
||||
JTextField xField = new JTextField(100);
|
||||
xField.setMinimumSize(new Dimension(100, 100));
|
||||
xField.setPreferredSize(new Dimension(100,100));
|
||||
myPanel.add(new JLabel("Ce Groupe est plus grand que le votre raison du changement:"));
|
||||
myPanel.add(xField);
|
||||
if(JOptionPane.showConfirmDialog(this.fenetre, myPanel, "Changer dans quel Groupe ?", JOptionPane.OK_CANCEL_OPTION)==JOptionPane.OK_OPTION){
|
||||
//IL faut que l'etudiant detaile un minimun la raison
|
||||
if(xField.getText().length()>5){
|
||||
this.changement.createChangement(this.fenGr.getG(), e, b, xField.getText());
|
||||
}else{
|
||||
JOptionPane.showMessageDialog(this.fenetre, "veuillez detailler votre raison", "erreur", JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
this.changement.createChangement(this.fenGr.getG(), e, b);
|
||||
}
|
||||
}else{
|
||||
JOptionPane.showMessageDialog(this.fenetre, "impossible trop d'etudiant dans l'autre Groupe", "erreur", JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
this.showGroupe(this.fenGr.getG());
|
||||
}
|
||||
/**
|
||||
* pemet d'obtenir les sous groupes du groupe courant.
|
||||
* @return les sous groupes du groupe courant
|
||||
*/
|
||||
@Override
|
||||
public Set<Groupe> getGroupePartition(){
|
||||
this.promo.refreshALL(this.fenGr.getG().getPointPoint());
|
||||
Set<Groupe> retour=new HashSet<>();
|
||||
if(this.fenGr.getG().getPointPoint().getType()!=TypeGroupe.PARTITION)
|
||||
throw new IllegalStateException("impossible de changer un étudiant d'un groupe ne provenant pas d'une partition");
|
||||
for(Groupe sous:this.fenGr.getG().getPointPoint().getSousGroupes()){
|
||||
if(sous.getId()!=this.fenGr.getG().getId()){
|
||||
retour.add(sous);
|
||||
}
|
||||
}
|
||||
return retour;
|
||||
}
|
||||
/**
|
||||
* ajoute un étudiant dans un groupe.
|
||||
* @param e l'étudiant à ajouter
|
||||
* @param g le groupe dans lequel l'étudiant va
|
||||
* @return true si l'ajout a réussi, false sinon
|
||||
*/
|
||||
@Override
|
||||
public boolean addEtudiant(Groupe g, Etudiant e) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* supprime un groupe.
|
||||
* @param g le groupe à supprimer
|
||||
*/
|
||||
@Override
|
||||
public void delete(Groupe g) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* rennome un groupe.
|
||||
* @param g le groupe à renommer
|
||||
* @param nom le nouveau nom du groupe
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public void rename(String name, Groupe g) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction permetant de créer une partition d'un groupe
|
||||
* @param g le groupe a partitionner
|
||||
* @param n le nombre de partition
|
||||
* @param name le nom des partition
|
||||
*/
|
||||
@Override
|
||||
public void partition(Groupe g, int n, String name) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction permettant de créer un sous-groupe d'un groupe
|
||||
* @param g le groupe parent
|
||||
* @param name le nom du sous-groupe
|
||||
* @param min le nombre min d'etudiant
|
||||
* @param max le nombre max d'etudiant
|
||||
* @param ajout la liste des étudiants a ajouter au groupe
|
||||
*/
|
||||
@Override
|
||||
public void free(Groupe g, String name, int min, int max, Set<Etudiant> ajout) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ajoute une nouvelle promotion
|
||||
* @param min le nombre min
|
||||
* @param max le nombre max
|
||||
* @param name le nom
|
||||
* @param ajout les etudiant a ajouter a la promo
|
||||
*/
|
||||
@Override
|
||||
public void addPromo(int min, int max, String name, Set<Etudiant> ajout) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction pour supprimer un etudiant.
|
||||
* @param e l'etudiant a supprimer
|
||||
* @return boolean true si l'etudiant a ete supprimer, false sinon
|
||||
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteEtu(Etudiant e) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction pour afficher une fenetre listnatn les changements
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public void listChange() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction pour effectuer un changement
|
||||
* @param Changement le changement a effecteur
|
||||
*/
|
||||
@Override
|
||||
public void change(Changement change) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction supprimant un changement
|
||||
*
|
||||
* @param to_delete la changement a delete
|
||||
*/
|
||||
@Override
|
||||
public void deleteChange(Changement to_delete) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fonction affichant les raison d'un changement
|
||||
*
|
||||
* @param change le changement
|
||||
*/
|
||||
@Override
|
||||
public void showRaisonChange(Changement change) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction affichant une fentre pour trouver un etudiant et tous ses groupes asociée
|
||||
*/
|
||||
@Override
|
||||
public void findEtu() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fonction pour recuperer les etudiant avec ce nom
|
||||
* @param name le nom de(s) etudiants
|
||||
* @return la liste
|
||||
*/
|
||||
@Override
|
||||
public Set<Etudiant> getEtu(String name) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*affiche les groupe d'un etudiant
|
||||
* @param e l'etudiant
|
||||
*/
|
||||
@Override
|
||||
public void showGroupOfEtudiant(Etudiant e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user