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 ## ## Graphic ##
## View ## ## 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/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 ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/MaFenetre.java
## Controller ## ## Controller ##

View File

@ -4,72 +4,39 @@ import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.awt.*; import java.awt.*;
import java.util.LinkedList;
import java.awt.GridBagLayout; import java.awt.GridBagLayout;
import java.awt.GridBagConstraints; import java.awt.GridBagConstraints;
import fr.iutfbleau.projetIHM2022FI2.API.*;
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ObservateurFenetre; import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ObservateurFenetre;
public class MaFenetre extends JFrame{ public class MaFenetre extends JFrame{
private LinkedList<Groupe> tabGroupe=new LinkedList<Groupe>();
private JPanel Left; private JPanel Left;
private JPanel Right; private JPanel Right;
private PaintGroupe paint;
public MaFenetre(){ public MaFenetre(){
super(); super();
this.setSize(1000,720); this.setSize(1000,720);
this.setLocation(200,200); this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.getContentPane().setBackground(new Color(230, 230, 255, 255));
this.addWindowListener(new ObservateurFenetre()); this.addWindowListener(new ObservateurFenetre());
this.setLayout(new GridBagLayout()); this.setLayout(new GridLayout(1,2));
this.Left=new JPanel();
this.Left=new JPanel(new GridLayout(2,1));
this.Right=new JPanel(); this.Right=new JPanel();
this.paint=new PaintGroupe();
GridBagConstraints gc=new GridBagConstraints(); this.Left.setBackground(Color.RED);
gc.gridx=1; this.Left.add(this.paint);
gc.gridy=1; this.add(this.Left);
gc.anchor=GridBagConstraints.CENTER;
gc.gridheight=1; this.Right.setBackground(Color.BLUE);
gc.gridwidth=1; this.add(this.Right);
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);
} }
public void addGroupe(Groupe g){ public void addGroupe(Groupe g){
this.tabGroupe.add(g); this.paint.addGroupe(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;
} }
} }

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. // 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.println("Test de l\'API");
System.out.print("Création des étudiants"); //System.out.print("Création des étudiants");
MaFenetre fenetre=new MaFenetre(); MaFenetre fenetre=new MaFenetre();
fenetre.setVisible(true); fenetre.setVisible(true);
Etudiant e1=new EtudiantNP("césar","lycurgus"); Etudiant e1=new EtudiantNP("césar","lycurgus");
@ -32,7 +32,7 @@ public class TestTexteMNP{
Etudiant e9=new EtudiantNP("renard","elikapeka"); Etudiant e9=new EtudiantNP("renard","elikapeka");
Etudiant e10=new EtudiantNP("achille","haukea"); Etudiant e10=new EtudiantNP("achille","haukea");
System.out.print("."); //System.out.print(".");
Etudiant e11=new EtudiantNP("agathe","iakopa"); Etudiant e11=new EtudiantNP("agathe","iakopa");
Etudiant e12=new EtudiantNP("sabine","spartacus"); Etudiant e12=new EtudiantNP("sabine","spartacus");
@ -45,7 +45,7 @@ public class TestTexteMNP{
Etudiant e19=new EtudiantNP("diane","ladislas"); Etudiant e19=new EtudiantNP("diane","ladislas");
Etudiant e20=new EtudiantNP("christine","mahatma"); Etudiant e20=new EtudiantNP("christine","mahatma");
System.out.print("."); //System.out.print(".");
Etudiant e21=new EtudiantNP("francine","napoleon"); Etudiant e21=new EtudiantNP("francine","napoleon");
Etudiant e22=new EtudiantNP("louise","lalita"); Etudiant e22=new EtudiantNP("louise","lalita");
@ -58,7 +58,7 @@ public class TestTexteMNP{
Etudiant e29=new EtudiantNP("jacqueline","madhav"); Etudiant e29=new EtudiantNP("jacqueline","madhav");
Etudiant e30=new EtudiantNP("denise","turlough"); Etudiant e30=new EtudiantNP("denise","turlough");
System.out.print("."); //System.out.print(".");
Etudiant e31=new EtudiantNP("gabrielle","uaithne"); Etudiant e31=new EtudiantNP("gabrielle","uaithne");
Etudiant e32=new EtudiantNP("julie","uilleag"); Etudiant e32=new EtudiantNP("julie","uilleag");
@ -71,7 +71,7 @@ public class TestTexteMNP{
Etudiant e39=new EtudiantNP("jeanine","javed"); Etudiant e39=new EtudiantNP("jeanine","javed");
Etudiant e40=new EtudiantNP("roxane","naveed"); Etudiant e40=new EtudiantNP("roxane","naveed");
System.out.print("."); //System.out.print(".");
Etudiant e41=new EtudiantNP("adeline","shahnaz"); Etudiant e41=new EtudiantNP("adeline","shahnaz");
Etudiant e42=new EtudiantNP("dion","ardashir"); Etudiant e42=new EtudiantNP("dion","ardashir");
@ -84,7 +84,7 @@ public class TestTexteMNP{
Etudiant e49=new EtudiantNP("natalie","marcellino"); Etudiant e49=new EtudiantNP("natalie","marcellino");
Etudiant e50=new EtudiantNP("aline","mariangela"); Etudiant e50=new EtudiantNP("aline","mariangela");
System.out.print("."); //System.out.print(".");
Etudiant e51=new EtudiantNP("prosper","marzio"); Etudiant e51=new EtudiantNP("prosper","marzio");
Etudiant e52=new EtudiantNP("mirabelle","massimiliano"); Etudiant e52=new EtudiantNP("mirabelle","massimiliano");
@ -94,17 +94,17 @@ public class TestTexteMNP{
Etudiant e56=new EtudiantNP("evette","michela"); Etudiant e56=new EtudiantNP("evette","michela");
Etudiant e57=new EtudiantNP("gisselle","michelangela"); 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); 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); 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(),e1);
agf.addToGroupe(agf.getPromotion(),e2); agf.addToGroupe(agf.getPromotion(),e2);
@ -117,7 +117,7 @@ public class TestTexteMNP{
agf.addToGroupe(agf.getPromotion(),e9); agf.addToGroupe(agf.getPromotion(),e9);
agf.addToGroupe(agf.getPromotion(),e10); agf.addToGroupe(agf.getPromotion(),e10);
System.out.print("."); ////System.out.print(".");
agf.addToGroupe(agf.getPromotion(),e11); agf.addToGroupe(agf.getPromotion(),e11);
agf.addToGroupe(agf.getPromotion(),e12); agf.addToGroupe(agf.getPromotion(),e12);
@ -130,7 +130,7 @@ public class TestTexteMNP{
agf.addToGroupe(agf.getPromotion(),e19); agf.addToGroupe(agf.getPromotion(),e19);
agf.addToGroupe(agf.getPromotion(),e20); agf.addToGroupe(agf.getPromotion(),e20);
System.out.print("."); //System.out.print(".");
agf.addToGroupe(agf.getPromotion(),e21); agf.addToGroupe(agf.getPromotion(),e21);
agf.addToGroupe(agf.getPromotion(),e22); agf.addToGroupe(agf.getPromotion(),e22);
@ -152,7 +152,7 @@ public class TestTexteMNP{
agf.addToGroupe(agf.getPromotion(),e38); agf.addToGroupe(agf.getPromotion(),e38);
agf.addToGroupe(agf.getPromotion(),e39); agf.addToGroupe(agf.getPromotion(),e39);
System.out.print("."); //System.out.print(".");
agf.addToGroupe(agf.getPromotion(),e40); agf.addToGroupe(agf.getPromotion(),e40);
agf.addToGroupe(agf.getPromotion(),e41); agf.addToGroupe(agf.getPromotion(),e41);
@ -172,49 +172,51 @@ public class TestTexteMNP{
agf.addToGroupe(agf.getPromotion(),e55); agf.addToGroupe(agf.getPromotion(),e55);
agf.addToGroupe(agf.getPromotion(),e56); agf.addToGroupe(agf.getPromotion(),e56);
agf.addToGroupe(agf.getPromotion(),e57); 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("==========================");
System.out.println("Le groupe promotion"); ////System.out.println("Le groupe promotion");
System.out.println(agf.getPromotion().monPrint()); ////System.out.println(agf.getPromotion().monPrint());
System.out.println("=========================="); ////System.out.println("==========================");
System.out.println("Partition du groupe racine en 3 groupes TD."); ////System.out.println("Partition du groupe racine en 3 groupes TD.");
agf.createPartition(agf.getPromotion(), "TD",4); 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(); 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()){ for(Groupe g : racineDeLaPartition.getSousGroupes()){
System.out.println(g.monPrint()); ////System.out.println(g.monPrint());
} }
System.out.println("=========================="); ////System.out.println("==========================");
System.out.println("Création d'un changement"); ////System.out.println("Création d'un changement");
Iterator<Groupe> itgr = racineDeLaPartition.getSousGroupes().iterator(); Iterator<Groupe> itgr = racineDeLaPartition.getSousGroupes().iterator();
Groupe A = itgr.next(); // premier sous-groupe Groupe A = itgr.next(); // premier sous-groupe
Groupe B = itgr.next(); // second sous-groupe Groupe B = itgr.next(); // second sous-groupe
fenetre.addGroupe(B);
System.out.println(B.getName());
B = itgr.next(); // troisième sous-groupe B = itgr.next(); // troisième sous-groupe
Etudiant e = A.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe. Etudiant e = A.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe.
acf.createChangement(A,e,B); 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(); Iterator<Changement> itch = acf.getAllChangements().iterator();
Changement c = itch.next(); Changement c = itch.next();
System.out.println(c.monPrint()); ////System.out.println(c.monPrint());
System.out.println("Application du changement"); ////System.out.println("Application du changement");
acf.applyChangement(c); acf.applyChangement(c);
System.out.println("=========================="); ////System.out.println("==========================");
System.out.println("== nouveau contenu des groupes de la partition "); ////System.out.println("== nouveau contenu des groupes de la partition ");
for(Groupe g : racineDeLaPartition.getSousGroupes()){ for(Groupe g : racineDeLaPartition.getSousGroupes()){
System.out.println(g.monPrint()); ////System.out.println(g.monPrint());
} }
System.out.println("=========================="); ////System.out.println("==========================");
System.out.println("Création de 2 changements"); ////System.out.println("Création de 2 changements");
itgr = racineDeLaPartition.getSousGroupes().iterator(); itgr = racineDeLaPartition.getSousGroupes().iterator();
A = itgr.next(); // premier sous-groupe A = itgr.next(); // premier sous-groupe
B = itgr.next(); // second sous-groupe B = itgr.next(); // second sous-groupe
@ -224,14 +226,14 @@ public class TestTexteMNP{
acf.createChangement(B,etu2,A); acf.createChangement(B,etu2,A);
// Impression des changements. // Impression des changements.
for (Changement cgt : acf.getAllChangements()){ for (Changement cgt : acf.getAllChangements()){
System.out.println(cgt.monPrint()); ////System.out.println(cgt.monPrint());
} }
itch = acf.getAllChangements().iterator(); itch = acf.getAllChangements().iterator();
c = itch.next(); 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()); acf.deleteChangement(itch.next());
for (Changement cgt : acf.getAllChangements()){ for (Changement cgt : acf.getAllChangements()){
System.out.println(cgt.monPrint()); ////System.out.println(cgt.monPrint());
} }
} }