This commit is contained in:
martins 2022-11-03 21:34:31 +01:00
parent bca98479f6
commit fcf32a2ec0
5 changed files with 112 additions and 88 deletions

View File

@ -95,8 +95,12 @@ ${BUILD}/MNP/AbstractChangementFactoryNP.class : ${SRC}/MNP/AbstractChangementFa
## Graphic ##
## View ##
${BUILD}/Graphic/View/PaintGroupe.class : ${SRC}/Graphic/View/PaintGroupe.java
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/PaintGroupe.java
${BUILD}/Graphic/View/Mafenetre.class : ${SRC}/Graphic/View/MaFenetre.java \
${BUILD}/Graphic/Controller/ObservateurFenetre.class
${BUILD}/Graphic/Controller/ObservateurFenetre.class \
${BUILD}/Graphic/View/PaintGroupe.class
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/MaFenetre.java
## Controller ##

View File

@ -4,72 +4,39 @@ import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.util.LinkedList;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import fr.iutfbleau.projetIHM2022FI2.API.*;
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ObservateurFenetre;
public class MaFenetre extends JFrame{
private LinkedList<Groupe> tabGroupe=new LinkedList<Groupe>();
private JPanel Left;
private JPanel Right;
private PaintGroupe paint;
public MaFenetre(){
super();
this.setSize(1000,720);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.getContentPane().setBackground(new Color(230, 230, 255, 255));
this.addWindowListener(new ObservateurFenetre());
this.setLayout(new GridBagLayout());
this.Left=new JPanel();
this.setLayout(new GridLayout(1,2));
this.Left=new JPanel(new GridLayout(2,1));
this.Right=new JPanel();
this.paint=new PaintGroupe();
GridBagConstraints gc=new GridBagConstraints();
gc.gridx=1;
gc.gridy=1;
gc.anchor=GridBagConstraints.CENTER;
gc.gridheight=1;
gc.gridwidth=1;
gc.fill=GridBagConstraints.BOTH;
this.add(this.Left, gc);
gc.gridx=2;
gc.gridy=1;
gc.anchor=GridBagConstraints.CENTER;
gc.gridheight=1;
gc.gridwidth=1;
gc.fill=GridBagConstraints.BOTH;
this.add(this.Right, gc);
this.Left.setBackground(Color.RED);
this.Left.add(this.paint);
this.add(this.Left);
this.Right.setBackground(Color.BLUE);
this.add(this.Right);
}
public void addGroupe(Groupe g){
this.tabGroupe.add(g);
}
public boolean removeGroupe(Groupe g){
int i=this.tabGroupe.indexOf(g);
if(i==-1){
return false;
}else{
this.tabGroupe.remove(i);
}
return true;
}
private void GroupeDraw(){
}
private GridBagConstraints getConstraints(int index){
GridBagConstraints gc=new GridBagConstraints();
gc.gridx=1;
gc.gridy=index;
gc.anchor=GridBagConstraints.BASELINE;
gc.gridheight=1;
gc.gridwidth=1;
gc.insets=null;
gc.fill=GridBagConstraints.HORIZONTAL;
return gc;
this.paint.addGroupe(g);
}
}

View File

@ -0,0 +1,51 @@
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
import fr.iutfbleau.projetIHM2022FI2.API.*;
import javax.swing.JComponent;
import java.awt.Graphics;
import java.util.LinkedList;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
public class PaintGroupe extends JComponent {
private LinkedList<Groupe> tabGroupe=new LinkedList<Groupe>();
public PaintGroupe(){}
@Override
protected void paintComponent(Graphics pinceau) {
// obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard
Graphics secondPinceau = pinceau.create();
// obligatoire : si le composant n'est pas censé être transparent
if (this.isOpaque()) {
// obligatoire : on repeint toute la surface avec la couleur de fond
secondPinceau.setColor(this.getBackground());
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
}
// maintenant on dessine ce que l'on veut
secondPinceau.setColor(this.getForeground());
int y=100;
for(Groupe g: this.tabGroupe){
secondPinceau.setColor(Color.BLACK);
secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, this.getWidth()/10));
FontMetrics metrics = secondPinceau.getFontMetrics(secondPinceau.getFont());
secondPinceau.drawString(g.getName().toUpperCase(), (this.getWidth()/2-metrics.stringWidth(g.getName().toUpperCase())/2), (y-metrics.getAscent()));
g.getName();
}
}
public void addGroupe(Groupe g){
this.tabGroupe.add(g);
this.repaint();
}
public boolean removeGroupe(Groupe g){
int i=this.tabGroupe.indexOf(g);
if(i==-1){
return false;
}else{
this.tabGroupe.remove(i);
}
this.repaint();
return true;
}
}

View File

@ -17,8 +17,8 @@ public class TestTexteMNP{
// i.e. entre les versions non persistantes (qui terminent par NP) et votre implémentation éventuelle persistante, le seul changement de comportement devrait être la persistance.
//
System.out.println("Test de l\'API");
System.out.print("Création des étudiants");
////System.out.println("Test de l\'API");
//System.out.print("Création des étudiants");
MaFenetre fenetre=new MaFenetre();
fenetre.setVisible(true);
Etudiant e1=new EtudiantNP("césar","lycurgus");
@ -32,7 +32,7 @@ public class TestTexteMNP{
Etudiant e9=new EtudiantNP("renard","elikapeka");
Etudiant e10=new EtudiantNP("achille","haukea");
System.out.print(".");
//System.out.print(".");
Etudiant e11=new EtudiantNP("agathe","iakopa");
Etudiant e12=new EtudiantNP("sabine","spartacus");
@ -45,7 +45,7 @@ public class TestTexteMNP{
Etudiant e19=new EtudiantNP("diane","ladislas");
Etudiant e20=new EtudiantNP("christine","mahatma");
System.out.print(".");
//System.out.print(".");
Etudiant e21=new EtudiantNP("francine","napoleon");
Etudiant e22=new EtudiantNP("louise","lalita");
@ -58,7 +58,7 @@ public class TestTexteMNP{
Etudiant e29=new EtudiantNP("jacqueline","madhav");
Etudiant e30=new EtudiantNP("denise","turlough");
System.out.print(".");
//System.out.print(".");
Etudiant e31=new EtudiantNP("gabrielle","uaithne");
Etudiant e32=new EtudiantNP("julie","uilleag");
@ -71,7 +71,7 @@ public class TestTexteMNP{
Etudiant e39=new EtudiantNP("jeanine","javed");
Etudiant e40=new EtudiantNP("roxane","naveed");
System.out.print(".");
//System.out.print(".");
Etudiant e41=new EtudiantNP("adeline","shahnaz");
Etudiant e42=new EtudiantNP("dion","ardashir");
@ -84,7 +84,7 @@ public class TestTexteMNP{
Etudiant e49=new EtudiantNP("natalie","marcellino");
Etudiant e50=new EtudiantNP("aline","mariangela");
System.out.print(".");
//System.out.print(".");
Etudiant e51=new EtudiantNP("prosper","marzio");
Etudiant e52=new EtudiantNP("mirabelle","massimiliano");
@ -94,17 +94,17 @@ public class TestTexteMNP{
Etudiant e56=new EtudiantNP("evette","michela");
Etudiant e57=new EtudiantNP("gisselle","michelangela");
System.out.println("terminé.");
////System.out.println("terminé.");
System.out.print("Création de l\'usine à groupe");
//System.out.print("Création de l\'usine à groupe");
AbstractGroupeFactory agf = new AbstractGroupeFactoryNP("BUT2 FI", 15, 92);
System.out.println("terminé.");
////System.out.println("terminé.");
System.out.print("Création de l\'usine à changement");
//System.out.print("Création de l\'usine à changement");
AbstractChangementFactory acf = new AbstractChangementFactoryNP(agf);
System.out.println("terminé.");
////System.out.println("terminé.");
System.out.print("Ajout des étudiants dans le groupe de la promotion racine");
//System.out.print("Ajout des étudiants dans le groupe de la promotion racine");
agf.addToGroupe(agf.getPromotion(),e1);
agf.addToGroupe(agf.getPromotion(),e2);
@ -117,7 +117,7 @@ public class TestTexteMNP{
agf.addToGroupe(agf.getPromotion(),e9);
agf.addToGroupe(agf.getPromotion(),e10);
System.out.print(".");
////System.out.print(".");
agf.addToGroupe(agf.getPromotion(),e11);
agf.addToGroupe(agf.getPromotion(),e12);
@ -130,7 +130,7 @@ public class TestTexteMNP{
agf.addToGroupe(agf.getPromotion(),e19);
agf.addToGroupe(agf.getPromotion(),e20);
System.out.print(".");
//System.out.print(".");
agf.addToGroupe(agf.getPromotion(),e21);
agf.addToGroupe(agf.getPromotion(),e22);
@ -152,7 +152,7 @@ public class TestTexteMNP{
agf.addToGroupe(agf.getPromotion(),e38);
agf.addToGroupe(agf.getPromotion(),e39);
System.out.print(".");
//System.out.print(".");
agf.addToGroupe(agf.getPromotion(),e40);
agf.addToGroupe(agf.getPromotion(),e41);
@ -172,49 +172,51 @@ public class TestTexteMNP{
agf.addToGroupe(agf.getPromotion(),e55);
agf.addToGroupe(agf.getPromotion(),e56);
agf.addToGroupe(agf.getPromotion(),e57);
System.out.println("terminé.");
////System.out.println("terminé.");
System.out.println("Initialisation complète.");
////System.out.println("Initialisation complète.");
System.out.println("==========================");
System.out.println("Le groupe promotion");
System.out.println(agf.getPromotion().monPrint());
////System.out.println("==========================");
////System.out.println("Le groupe promotion");
////System.out.println(agf.getPromotion().monPrint());
System.out.println("==========================");
System.out.println("Partition du groupe racine en 3 groupes TD.");
////System.out.println("==========================");
////System.out.println("Partition du groupe racine en 3 groupes TD.");
agf.createPartition(agf.getPromotion(), "TD",4);
//System.out.println(agf.getPromotion().monPrint());
//////System.out.println(agf.getPromotion().monPrint());
Groupe racineDeLaPartition = agf.getPromotion().getSousGroupes().iterator().next();
System.out.println(racineDeLaPartition.monPrint());
////System.out.println(racineDeLaPartition.monPrint());
System.out.println("== Cette version ajoute les étudiants automatiquement pour une partition ");
////System.out.println("== Cette version ajoute les étudiants automatiquement pour une partition ");
for(Groupe g : racineDeLaPartition.getSousGroupes()){
System.out.println(g.monPrint());
////System.out.println(g.monPrint());
}
System.out.println("==========================");
System.out.println("Création d'un changement");
////System.out.println("==========================");
////System.out.println("Création d'un changement");
Iterator<Groupe> itgr = racineDeLaPartition.getSousGroupes().iterator();
Groupe A = itgr.next(); // premier sous-groupe
Groupe B = itgr.next(); // second sous-groupe
fenetre.addGroupe(B);
System.out.println(B.getName());
B = itgr.next(); // troisième sous-groupe
Etudiant e = A.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe.
acf.createChangement(A,e,B);
System.out.println("Récupération des changements (en fait un seul pour l'instant)");
////System.out.println("Récupération des changements (en fait un seul pour l'instant)");
Iterator<Changement> itch = acf.getAllChangements().iterator();
Changement c = itch.next();
System.out.println(c.monPrint());
System.out.println("Application du changement");
////System.out.println(c.monPrint());
////System.out.println("Application du changement");
acf.applyChangement(c);
System.out.println("==========================");
System.out.println("== nouveau contenu des groupes de la partition ");
////System.out.println("==========================");
////System.out.println("== nouveau contenu des groupes de la partition ");
for(Groupe g : racineDeLaPartition.getSousGroupes()){
System.out.println(g.monPrint());
////System.out.println(g.monPrint());
}
System.out.println("==========================");
System.out.println("Création de 2 changements");
////System.out.println("==========================");
////System.out.println("Création de 2 changements");
itgr = racineDeLaPartition.getSousGroupes().iterator();
A = itgr.next(); // premier sous-groupe
B = itgr.next(); // second sous-groupe
@ -224,14 +226,14 @@ public class TestTexteMNP{
acf.createChangement(B,etu2,A);
// Impression des changements.
for (Changement cgt : acf.getAllChangements()){
System.out.println(cgt.monPrint());
////System.out.println(cgt.monPrint());
}
itch = acf.getAllChangements().iterator();
c = itch.next();
System.out.println("Suppression d'un changement. Il reste :");
////System.out.println("Suppression d'un changement. Il reste :");
acf.deleteChangement(itch.next());
for (Changement cgt : acf.getAllChangements()){
System.out.println(cgt.monPrint());
////System.out.println(cgt.monPrint());
}
}