maj V1.0.6
This commit is contained in:
parent
c06e565122
commit
0706a9114f
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -164,6 +164,10 @@ public class importInscriptionXLS {
|
|||||||
nFormation.setAttribut("Verouillage_Groupe_Projet", "false");
|
nFormation.setAttribut("Verouillage_Groupe_Projet", "false");
|
||||||
nFormation.setAttribut("Verouillage_Tous_Les_Groupes", "false");
|
nFormation.setAttribut("Verouillage_Tous_Les_Groupes", "false");
|
||||||
|
|
||||||
|
nFormation.setAttribut("pattern_Groupe_Principal", "grp @");
|
||||||
|
nFormation.setAttribut("nombre_Student_Groupe_Principal", "30");
|
||||||
|
nFormation.setAttribut("aleatoire_Groupe_Principal", "false");
|
||||||
|
|
||||||
nYear.addChild(nFormation);
|
nYear.addChild(nFormation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
412
src/Windows/Window_genere_groupe.java
Normal file
412
src/Windows/Window_genere_groupe.java
Normal file
@ -0,0 +1,412 @@
|
|||||||
|
package Windows;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.Image;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import javax.swing.Icon;
|
||||||
|
import javax.swing.ImageIcon;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JRadioButton;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
import javax.swing.SwingConstants;
|
||||||
|
import javax.swing.border.EmptyBorder;
|
||||||
|
import javax.swing.event.DocumentEvent;
|
||||||
|
import javax.swing.event.DocumentListener;
|
||||||
|
|
||||||
|
import base.sauvegardeXMLBase;
|
||||||
|
import base.sauvegardeXMLBase.saveType;
|
||||||
|
import outils.commandes;
|
||||||
|
import outils.noeud;
|
||||||
|
|
||||||
|
public class Window_genere_groupe extends JFrame {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
private JPanel contentPane = new JPanel();
|
||||||
|
private JTextField textPattern_Groupe;
|
||||||
|
private JTextField textNombre_Etudiant_Groupe;
|
||||||
|
private int nombreEtudiantDansGroupe = 30;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the frame.
|
||||||
|
*/
|
||||||
|
public Window_genere_groupe(noeud table, String nameGroupe, Window_gestionnaire instance) {
|
||||||
|
initialize(table, nameGroupe, instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void initialize(noeud table, String nameGroupe,Window_gestionnaire instance) {
|
||||||
|
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
|
setBounds(0, 0, 863, 534);
|
||||||
|
setTitle("Générer des groupes");
|
||||||
|
setLocationRelativeTo(null); // Centre la fenêtre à l'écran
|
||||||
|
|
||||||
|
|
||||||
|
ImageIcon img = new ImageIcon(Window_demarre.class.getResource("/resources/logo.png"));
|
||||||
|
setIconImage(img.getImage());
|
||||||
|
|
||||||
|
|
||||||
|
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||||
|
contentPane.setLayout(null);
|
||||||
|
getContentPane().setLayout(null);
|
||||||
|
|
||||||
|
noeud nFormation = commandes.nBase.getChild(table.getAttributes("Formation"));
|
||||||
|
|
||||||
|
boolean verrouillageGroupe = (Boolean.valueOf(nFormation.getAttributes("Verouillage_"+nameGroupe))
|
||||||
|
|| Boolean.valueOf(nFormation.getAttributes("Verouillage_Tous_Les_Groupes"))) ;
|
||||||
|
|
||||||
|
|
||||||
|
JLabel lblInformation = new JLabel("<html><p>La formation est : "+ table.getAttributes("Formation")+"<br>"
|
||||||
|
+ "Le groupe sélectionné est : " + nameGroupe +"<br><hr>"
|
||||||
|
+ "<b>Les groupes sont verrouillés</b>.<br>"
|
||||||
|
+ "Ce qui signifie que seul les étudiants qui ne sont pas dans des groupes seront placés dans un groupe.</p>\r\n</html>");
|
||||||
|
lblInformation.setVerticalAlignment(SwingConstants.TOP);
|
||||||
|
|
||||||
|
if(!verrouillageGroupe) {
|
||||||
|
lblInformation = new JLabel("<html><p>La formation est : "+ table.getAttributes("Formation")+"<br>"
|
||||||
|
+ "Le groupe sélectionné est : " + nameGroupe +"<br><hr>"
|
||||||
|
+ "<b><u>AVERTISSEMENT</u> : Les groupes ne sont pas verrouillés</b>.<br>"
|
||||||
|
+ "Ce qui signifie que tous les étudiants auront une attribution dans un groupe.<br>"
|
||||||
|
+ "Y compris ce qui sont déjà dans un groupe.</p>\r\n</html>");
|
||||||
|
}
|
||||||
|
|
||||||
|
lblInformation.setFont(new Font("Tahoma", Font.BOLD, 14));
|
||||||
|
lblInformation.setBounds(10, 261, 467, 132);
|
||||||
|
getContentPane().add(lblInformation);
|
||||||
|
|
||||||
|
JButton btnGenere_Groupe = new JButton("Générer les groupes");
|
||||||
|
btnGenere_Groupe.setFont(new Font("Arial", Font.BOLD, 14));
|
||||||
|
btnGenere_Groupe.setBounds(493, 396, 344, 80);
|
||||||
|
getContentPane().add(btnGenere_Groupe);
|
||||||
|
|
||||||
|
textPattern_Groupe = new JTextField();
|
||||||
|
textPattern_Groupe.setFont(new Font("Arial", Font.BOLD, 14));
|
||||||
|
textPattern_Groupe.setBounds(660, 262, 177, 34);
|
||||||
|
getContentPane().add(textPattern_Groupe);
|
||||||
|
textPattern_Groupe.setColumns(12);
|
||||||
|
textPattern_Groupe.setText(commandes.nBase.getChild(table.getAttributes("Formation")).getAttributes("pattern_"+nameGroupe));
|
||||||
|
|
||||||
|
JLabel lblNewLabel = new JLabel("Pattern du groupe (1)");
|
||||||
|
lblNewLabel.setFont(new Font("Arial", Font.BOLD, 14));
|
||||||
|
lblNewLabel.setBounds(487, 261, 163, 34);
|
||||||
|
getContentPane().add(lblNewLabel);
|
||||||
|
|
||||||
|
textNombre_Etudiant_Groupe = new JTextField();
|
||||||
|
textNombre_Etudiant_Groupe.setFont(new Font("Arial", Font.BOLD, 14));
|
||||||
|
textNombre_Etudiant_Groupe.setBounds(724, 307, 113, 34);
|
||||||
|
getContentPane().add(textNombre_Etudiant_Groupe);
|
||||||
|
textNombre_Etudiant_Groupe.setColumns(6);
|
||||||
|
textNombre_Etudiant_Groupe.setText(nFormation.getAttributes("nombre_Student_" + nameGroupe));
|
||||||
|
textNombre_Etudiant_Groupe.getDocument().addDocumentListener(new DocumentListener() {
|
||||||
|
@Override
|
||||||
|
public void insertUpdate(DocumentEvent e) {
|
||||||
|
checkIsNumber();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeUpdate(DocumentEvent e) {
|
||||||
|
checkIsNumber();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void changedUpdate(DocumentEvent e) {
|
||||||
|
checkIsNumber();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkIsNumber() {
|
||||||
|
String inputText = textNombre_Etudiant_Groupe.getText().trim();
|
||||||
|
|
||||||
|
if (inputText.isEmpty()) {
|
||||||
|
System.out.println("Le champ est vide.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inputText.matches("\\d+")) {
|
||||||
|
nombreEtudiantDansGroupe = Integer.parseInt(inputText);
|
||||||
|
System.out.println("Le texte est un nombre : " + nombreEtudiantDansGroupe);
|
||||||
|
} else {
|
||||||
|
JOptionPane.showMessageDialog(null, "Ce n'est pas un nombre entier.", "Erreur", JOptionPane.ERROR_MESSAGE);
|
||||||
|
textNombre_Etudiant_Groupe.setText(nFormation.getAttributes("nombre_Student_"+nameGroupe));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
JLabel lblNombre_Etudiant_Groupe = new JLabel("<html>Nombre maximum d'étudiants<br>dans un groupe</html>");
|
||||||
|
lblNombre_Etudiant_Groupe.setVerticalAlignment(SwingConstants.TOP);
|
||||||
|
lblNombre_Etudiant_Groupe.setFont(new Font("Arial", Font.BOLD, 14));
|
||||||
|
lblNombre_Etudiant_Groupe.setBounds(487, 305, 248, 40);
|
||||||
|
getContentPane().add(lblNombre_Etudiant_Groupe);
|
||||||
|
|
||||||
|
JLabel lblNewLabel_1 = new JLabel("<html>(1) - Si le caractère @ ou # n'est pas présent alors pattern fixe.<br><br>@ : correspond à une lettre de A à Z<br># : correspond à un nombre de 1 à 100</html>");
|
||||||
|
lblNewLabel_1.setForeground(Color.BLUE);
|
||||||
|
lblNewLabel_1.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 14));
|
||||||
|
lblNewLabel_1.setVerticalAlignment(SwingConstants.TOP);
|
||||||
|
lblNewLabel_1.setBounds(10, 396, 441, 100);
|
||||||
|
getContentPane().add(lblNewLabel_1);
|
||||||
|
|
||||||
|
|
||||||
|
Random random = new Random();
|
||||||
|
int randomNumber = random.nextInt(commandes.nombreImage) + 1;
|
||||||
|
|
||||||
|
ImageIcon imageIcon = new ImageIcon(Window_demarre.class.getResource("/resources/Sans titre_"+ String.valueOf(randomNumber) +".jpg"));
|
||||||
|
|
||||||
|
Image image = imageIcon.getImage();
|
||||||
|
|
||||||
|
// Détermination de la taille souhaitée pour l'image
|
||||||
|
int newWidth = getWidth();
|
||||||
|
int newHeight = getHeight()-100;
|
||||||
|
|
||||||
|
// Redimensionnement de l'image pour qu'elle s'adapte à la taille souhaitée
|
||||||
|
Image resizedImage = image.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH);
|
||||||
|
|
||||||
|
|
||||||
|
JLabel lblImage = new JLabel("");
|
||||||
|
lblImage.setIcon(new ImageIcon(resizedImage));
|
||||||
|
lblImage.setBounds(0, 0, 847, 260);
|
||||||
|
getContentPane().add(lblImage);
|
||||||
|
|
||||||
|
JRadioButton rdbtnAleatoire = new JRadioButton("Aléatoire");
|
||||||
|
rdbtnAleatoire.setFont(new Font("Arial", Font.BOLD, 14));
|
||||||
|
rdbtnAleatoire.setSelected(true);
|
||||||
|
rdbtnAleatoire.setBounds(483, 352, 109, 23);
|
||||||
|
getContentPane().add(rdbtnAleatoire);
|
||||||
|
|
||||||
|
|
||||||
|
JRadioButton rdbtnAlphabetique = new JRadioButton("Alphabétique");
|
||||||
|
rdbtnAlphabetique.setFont(new Font("Arial", Font.BOLD, 14));
|
||||||
|
rdbtnAlphabetique.setBounds(594, 352, 143, 23);
|
||||||
|
getContentPane().add(rdbtnAlphabetique);
|
||||||
|
rdbtnAlphabetique.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
rdbtnAleatoire.setEnabled(!rdbtnAlphabetique.isSelected());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
rdbtnAleatoire.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
rdbtnAlphabetique.setEnabled(!rdbtnAleatoire.isSelected());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
btnGenere_Groupe.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if(!verrouillageGroupe) {
|
||||||
|
int choice = showCustomDialog();
|
||||||
|
if (choice == JOptionPane.YES_OPTION) {
|
||||||
|
if(rdbtnAleatoire.isSelected()) generateAleatoireGroupe(table, nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()));
|
||||||
|
if(rdbtnAlphabetique.isSelected()) generateAlphabetiqueGroupe(table, nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()));
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
if(rdbtnAleatoire.isSelected()) generateAleatoireGroupe(table, nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()));
|
||||||
|
if(rdbtnAlphabetique.isSelected()) generateAlphabetiqueGroupe(table, nameGroupe, instance, textPattern_Groupe.getText(), Integer.parseInt(textNombre_Etudiant_Groupe.getText()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setVisible(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Génération aléatoire des groupes en suivant un pattern.
|
||||||
|
* @param table
|
||||||
|
* @param nameGroupe
|
||||||
|
* @param instance
|
||||||
|
* @param patternGroupe
|
||||||
|
* @param tailleDesGroupes
|
||||||
|
*/
|
||||||
|
private static void generateAleatoireGroupe(noeud table, String nameGroupe,Window_gestionnaire instance, String patternGroupe, Integer tailleDesGroupes) {
|
||||||
|
noeud nFormation = commandes.nBase.getChild(table.getAttributes("Formation"));
|
||||||
|
|
||||||
|
List<noeud> tableChild = table.getChildren();
|
||||||
|
|
||||||
|
int totalElements = tableChild.size();
|
||||||
|
int nombreDeGroupes = (int) Math.ceil((double) totalElements / tailleDesGroupes);
|
||||||
|
|
||||||
|
boolean verrouillageGroupe = (Boolean.valueOf(nFormation.getAttributes("Verouillage_"+nameGroupe))
|
||||||
|
|| Boolean.valueOf(nFormation.getAttributes("Verouillage_Tous_Les_Groupes"))) ;
|
||||||
|
|
||||||
|
|
||||||
|
nFormation.setAttribut("pattern_"+nameGroupe, patternGroupe);
|
||||||
|
nFormation.setAttribut("nombre_Student_"+nameGroupe,String.valueOf(tailleDesGroupes));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
tailleDesGroupes = tailleDesGroupes-1;
|
||||||
|
|
||||||
|
if(patternGroupe.contains("@")) {
|
||||||
|
patternGroupe = patternGroupe.replaceAll("@", "");
|
||||||
|
Random random = new Random();
|
||||||
|
String str = "";
|
||||||
|
for (noeud child : tableChild) {
|
||||||
|
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
|
||||||
|
do {
|
||||||
|
char randomChar = (char) ('A' + random.nextInt(nombreDeGroupes));
|
||||||
|
str = patternGroupe + randomChar;
|
||||||
|
}while(nFormation.getNumberAttribut(nameGroupe, str)>tailleDesGroupes);
|
||||||
|
nFormation.getChild(child.getName()).setAttribut(nameGroupe, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null);
|
||||||
|
instance.majFiltres();
|
||||||
|
}else if (patternGroupe.contains("#")) {
|
||||||
|
patternGroupe = patternGroupe.replaceAll("#", "");
|
||||||
|
Random random = new Random();
|
||||||
|
String str = "";
|
||||||
|
for (noeud child : tableChild) {
|
||||||
|
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
|
||||||
|
do {
|
||||||
|
int randomInteger = (1 + random.nextInt(nombreDeGroupes));
|
||||||
|
str = patternGroupe + String.valueOf(randomInteger);
|
||||||
|
}while(nFormation.getNumberAttribut(nameGroupe, str)>tailleDesGroupes);
|
||||||
|
nFormation.getChild(child.getName()).setAttribut(nameGroupe, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null);
|
||||||
|
instance.majFiltres();
|
||||||
|
}else {
|
||||||
|
for (noeud child : tableChild) {
|
||||||
|
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
|
||||||
|
if(nFormation.getNumberAttribut(nameGroupe, patternGroupe)<=tailleDesGroupes+1) {
|
||||||
|
nFormation.getChild(child.getName()).setAttribut(nameGroupe, patternGroupe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null);
|
||||||
|
instance.majFiltres();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void generateAlphabetiqueGroupe(noeud table, String nameGroupe, Window_gestionnaire instance, String patternGroupe, Integer tailleDesGroupes) {
|
||||||
|
noeud nFormation = commandes.nBase.getChild(table.getAttributes("Formation"));
|
||||||
|
|
||||||
|
List<noeud> tableChild = table.getChildren();
|
||||||
|
|
||||||
|
boolean verrouillageGroupe = (Boolean.valueOf(nFormation.getAttributes("Verouillage_"+nameGroupe))
|
||||||
|
|| Boolean.valueOf(nFormation.getAttributes("Verouillage_Tous_Les_Groupes"))) ;
|
||||||
|
|
||||||
|
|
||||||
|
nFormation.setAttribut("pattern_"+nameGroupe, patternGroupe);
|
||||||
|
nFormation.setAttribut("nombre_Student_"+nameGroupe,String.valueOf(tailleDesGroupes));
|
||||||
|
|
||||||
|
|
||||||
|
if(patternGroupe.contains("@")) {
|
||||||
|
patternGroupe = patternGroupe.replaceAll("@", "");
|
||||||
|
int nombreDeGroupes=0;
|
||||||
|
char randomChar = (char) ('A' + nombreDeGroupes);
|
||||||
|
String str = patternGroupe + randomChar;
|
||||||
|
for (noeud child : tableChild) {
|
||||||
|
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
|
||||||
|
int nombreGroupeDejaPresent = nFormation.getNumberAttribut(nameGroupe, str);
|
||||||
|
|
||||||
|
if(nombreGroupeDejaPresent>=tailleDesGroupes) {
|
||||||
|
do {
|
||||||
|
nombreDeGroupes++;
|
||||||
|
randomChar = (char) ('A' + nombreDeGroupes);
|
||||||
|
str = patternGroupe + randomChar;
|
||||||
|
}while(nFormation.getNumberAttribut(nameGroupe, str)<tailleDesGroupes);
|
||||||
|
}
|
||||||
|
|
||||||
|
nFormation.getChild(child.getName()).setAttribut(nameGroupe, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null);
|
||||||
|
instance.majFiltres();
|
||||||
|
}else if (patternGroupe.contains("#")) {
|
||||||
|
patternGroupe = patternGroupe.replaceAll("#", "");
|
||||||
|
int nombreDeGroupes = 1;
|
||||||
|
String str = patternGroupe + String.valueOf(nombreDeGroupes);
|
||||||
|
for (noeud child : tableChild) {
|
||||||
|
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
|
||||||
|
if(nFormation.getNumberAttribut(nameGroupe, str)<=tailleDesGroupes) {
|
||||||
|
nombreDeGroupes++;
|
||||||
|
str = patternGroupe + String.valueOf(nombreDeGroupes);
|
||||||
|
};
|
||||||
|
nFormation.getChild(child.getName()).setAttribut(nameGroupe, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null);
|
||||||
|
instance.majFiltres();
|
||||||
|
}else {
|
||||||
|
for (noeud child : tableChild) {
|
||||||
|
if(!verrouillageGroupe || child.getAttributes(nameGroupe).isEmpty()) {
|
||||||
|
if(nFormation.getNumberAttribut(nameGroupe, patternGroupe)<=tailleDesGroupes+1) {
|
||||||
|
nFormation.getChild(child.getName()).setAttribut(nameGroupe, patternGroupe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sauvegardeXMLBase.save(commandes.nBase,saveType.SANS_MESSAGE,null);
|
||||||
|
instance.majFiltres();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Map<String, Integer> listeDesGroupesPresents(noeud nFormation, String nameGroupe){
|
||||||
|
Map<String, Integer> dictionary = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for(noeud student : nFormation.getChildren()) {
|
||||||
|
String groupe = student.getAttributes(nameGroupe);
|
||||||
|
if(dictionary.containsKey(groupe)) {
|
||||||
|
int nombre = dictionary.get(groupe) + 1;
|
||||||
|
dictionary.put(groupe, nombre);
|
||||||
|
}else {
|
||||||
|
dictionary.put(groupe, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dictionary;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static String retourneLeGroupeAvecLeMoinsEtudiant(noeud nFormation, String nameGroupe) {
|
||||||
|
String groupe = null;
|
||||||
|
int taille = 10000;
|
||||||
|
Map<String, Integer> TouslesGroupes = listeDesGroupesPresents(nFormation,nameGroupe);
|
||||||
|
for(Entry<String,Integer> entry : TouslesGroupes.entrySet()) {
|
||||||
|
if(entry.getValue()<taille) {
|
||||||
|
groupe = entry.getKey();
|
||||||
|
taille = entry.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return groupe;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Boite de dialogue personnalisable avec une image de danger.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private static int showCustomDialog() {
|
||||||
|
String message = "<html>Quelques étudiants peuvent être déjà placés dans des groupes.<br>"
|
||||||
|
+ "Ces étudiants vont se retrouver dans d'autres groupes.<br>"
|
||||||
|
+ "Il serait peut-être préférable de verrouiller le groupe avant de poursuivre !<br><br>"
|
||||||
|
+ "<b>Cependant, voulez-vous poursuivre et placer tous les étudiants<br>dans des nouveaux groupes ?</b></html>";
|
||||||
|
String title = "Confirmation";
|
||||||
|
int optionType = JOptionPane.YES_NO_OPTION;
|
||||||
|
Icon icon = new ImageIcon(Window_demarre.class.getResource("/resources/Danger.png"));
|
||||||
|
|
||||||
|
return JOptionPane.showOptionDialog(null, message, title, optionType, JOptionPane.QUESTION_MESSAGE, icon, null, null);
|
||||||
|
}
|
||||||
|
}
|
@ -92,6 +92,7 @@ public class Window_gestionnaire extends JFrame {
|
|||||||
private JComboBox<String> cGroupePrincipal;
|
private JComboBox<String> cGroupePrincipal;
|
||||||
private JComboBox<String> cGroupeProjet;
|
private JComboBox<String> cGroupeProjet;
|
||||||
private JComboBox<String> cRegime;
|
private JComboBox<String> cRegime;
|
||||||
|
|
||||||
private JCheckBoxMenuItem chckToutesLesColonnes = new JCheckBoxMenuItem("Affiche toutes les colonnes");
|
private JCheckBoxMenuItem chckToutesLesColonnes = new JCheckBoxMenuItem("Affiche toutes les colonnes");
|
||||||
private JCheckBoxMenuItem chckGroupeTD = new JCheckBoxMenuItem("Groupe TD");
|
private JCheckBoxMenuItem chckGroupeTD = new JCheckBoxMenuItem("Groupe TD");
|
||||||
private JCheckBoxMenuItem chckGroupeLV1 = new JCheckBoxMenuItem("Groupe LV1");
|
private JCheckBoxMenuItem chckGroupeLV1 = new JCheckBoxMenuItem("Groupe LV1");
|
||||||
@ -142,6 +143,7 @@ public class Window_gestionnaire extends JFrame {
|
|||||||
|
|
||||||
List<String> prefereAffichage = new ArrayList<>();
|
List<String> prefereAffichage = new ArrayList<>();
|
||||||
|
|
||||||
|
Window_gestionnaire instance = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -154,7 +156,7 @@ public class Window_gestionnaire extends JFrame {
|
|||||||
commandes.nBase = recupeBases.recupeLaBase();
|
commandes.nBase = recupeBases.recupeLaBase();
|
||||||
}
|
}
|
||||||
initialize();
|
initialize();
|
||||||
|
instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -795,7 +797,6 @@ public class Window_gestionnaire extends JFrame {
|
|||||||
|
|
||||||
chckVerouillage_Tous_Les_Groupes.setFont(new Font("Arial", Font.BOLD, 16));
|
chckVerouillage_Tous_Les_Groupes.setFont(new Font("Arial", Font.BOLD, 16));
|
||||||
menuGroupe.add(chckVerouillage_Tous_Les_Groupes);
|
menuGroupe.add(chckVerouillage_Tous_Les_Groupes);
|
||||||
|
|
||||||
chckVerouillage_Tous_Les_Groupes.addItemListener(new ItemListener() {
|
chckVerouillage_Tous_Les_Groupes.addItemListener(new ItemListener() {
|
||||||
public void itemStateChanged(ItemEvent e) {
|
public void itemStateChanged(ItemEvent e) {
|
||||||
if(!ignoreItemStateChange) {
|
if(!ignoreItemStateChange) {
|
||||||
@ -904,6 +905,20 @@ public class Window_gestionnaire extends JFrame {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
JMenu menuGenerer_Groupe = new JMenu("Générer des groupes");
|
||||||
|
menuGenerer_Groupe.setFont(new Font("Arial", Font.BOLD, 16));
|
||||||
|
menuBar.add(menuGenerer_Groupe);
|
||||||
|
|
||||||
|
JMenuItem menuGroupe_Principal = new JMenuItem("Groupe Principal");
|
||||||
|
menuGroupe_Principal.setFont(new Font("Arial", Font.BOLD, 16));
|
||||||
|
menuGenerer_Groupe.add(menuGroupe_Principal);
|
||||||
|
menuGroupe_Principal.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
new Window_genere_groupe(nTable, "Groupe_Principal",instance);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JScrollPane scrollPaneFiltre = new JScrollPane(panelFiltre);
|
JScrollPane scrollPaneFiltre = new JScrollPane(panelFiltre);
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@ public class sauvegardeXMLBase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sauvegarde dans le répertoire base de l'application de la base de données.
|
* Sauvegarde dans le répertoire base de l'application de la base de données.
|
||||||
* @param nBase : le noeud base de la base de données.
|
* @param nBase : Le noeud base de la base de données.
|
||||||
* @param type : le type de massage.
|
* @param type : Le type de message (SANS_MESSAGE, WITH_DEFAULT_MESSAGE, WITH_MESSAGE)
|
||||||
* @param message : le message de la sauvegarde.
|
* @param message : Le message de la sauvegarde.
|
||||||
*/
|
*/
|
||||||
public static void save(noeud nBase, saveType type, String message) {
|
public static void save(noeud nBase, saveType type, String message) {
|
||||||
|
|
||||||
|
@ -420,6 +420,12 @@ public class VersionChecker {
|
|||||||
nFormation.setAttribut("Verouillage_Groupe_Documentation", "false");
|
nFormation.setAttribut("Verouillage_Groupe_Documentation", "false");
|
||||||
nFormation.setAttribut("Verouillage_Groupe_Projet", "false");
|
nFormation.setAttribut("Verouillage_Groupe_Projet", "false");
|
||||||
nFormation.setAttribut("Verouillage_Tous_Les_Groupes", "false");
|
nFormation.setAttribut("Verouillage_Tous_Les_Groupes", "false");
|
||||||
|
|
||||||
|
nFormation.setAttribut("pattern_Groupe_Principal", "grp @");
|
||||||
|
nFormation.setAttribut("nombre_Student_Groupe_Principal", "30");
|
||||||
|
nFormation.setAttribut("aleatoire_Groupe_Principal", "false");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return nBase;
|
return nBase;
|
||||||
}
|
}
|
||||||
|
BIN
src/resources/Danger.png
Normal file
BIN
src/resources/Danger.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
Loading…
Reference in New Issue
Block a user