analyseWriter/src/app/setting.java

1079 lines
50 KiB
Java

package app;
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
import MEPTL.commandes;
import MEPTL.verificationFichierAnalyse;
import cXML.Run;
import cXML.node;
import javax.swing.JTabbedPane;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Font;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.awt.event.ActionEvent;
import java.awt.GridLayout;
import java.awt.Color;
import javax.swing.UIManager;
public class setting extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField textFieldNomEtudiant;
private JTextField textFieldPrenomEtudiant;
private JTextField textFieldEmail;
private JTextField textFieldIDEtudiant;
private JComboBox<String> comboBoxSeparateur;
private JComboBox<String> comboBoxEncodage;
private JButton btnValiderModifications;
private JButton btnReinit;
private JButton btnTestCouleur;
private JTextField textFieldSize;
private JTextField textFieldNameZIP;
private JTextField textFieldMiniCorrespondance;
private JTextField textFieldNbrMiniModification;
private JTextField textFieldMaxiModificationSimul;
private JTextField textFieldTextSimilitude;
private JTextField textFieldRouge;
private JTextField textFieldVert;
private JTextField textFieldBleu;
private JTextField textFieldTestCouleur;
private JButton btnExtraire;
// Bouton couleur de test
JButton btnCouleurInitTest;
JButton btnRougeMax;
JButton btnRougeMini;
JButton btnVertMax;
JButton btnVertMini;
JButton btnBleuMini;
JButton btnBleuMax;
JButton btnCouleurMiniTotal;
JButton btnCouleurMaxiTotal;
JButton btnAjouterVosTraductions;
/**
* Create the frame.
*/
public setting() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 742, 642);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
contentPane.add(tabbedPane, BorderLayout.CENTER);
ImageIcon img = new ImageIcon(getClass().getResource("/evalwriter.png") );
setIconImage(img.getImage());
setTitle(commandes.Titre + commandes.version + " - Les paramètres pour l'évaluation");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
int screenWidth = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getWidth();
int screenHeight = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight();
setLocation(( (screenWidth) - getWidth()) / 2, (screenHeight - getHeight()) / 2);
ImageIcon img1 = new ImageIcon(getClass().getResource("/resources/fichierCSV.png") );
ImageIcon img2 = new ImageIcon(getClass().getResource("/resources/zip.png") );
ImageIcon img3 = new ImageIcon(getClass().getResource("/resources/triche.png") );
ImageIcon img4 = new ImageIcon(getClass().getResource("/resources/similitude.png") );
ImageIcon img5 = new ImageIcon(getClass().getResource("/resources/couleur.png") );
ImageIcon img6 = new ImageIcon(getClass().getResource("/resources/traduction.png") );
//*********************************************************
//** CSV **
//*********************************************************
JPanel panelCSV = new JPanel();
tabbedPane.addTab("CSV", img1, panelCSV, null);
panelCSV.setLayout(null);
node nodCSV = commandes.sujet.retourneFirstEnfantsByName("csv");
if(nodCSV==null) {
JOptionPane.showMessageDialog(null, "Problème avec le fichier d'analyse.<br>Le node csv n'est pas dans le fichier.");
dispose();
return;
}
JLabel lblNewLabel = new JLabel("<html>Les paramètres du fichier CSV permettent, d'écrire et d'importer les notes des étudiants dans le CMS moodle.<br>\r\nCes paramètres seront enregistrés dans le fichier d'analyse.</html>");
lblNewLabel.setVerticalAlignment(SwingConstants.TOP);
lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT);
lblNewLabel.setBounds(10, 10, 691, 46);
panelCSV.add(lblNewLabel);
JLabel lblEncodage = new JLabel("Encodage");
lblEncodage.setFont(new Font("Tahoma", Font.BOLD, 12));
lblEncodage.setBounds(42, 74, 86, 20);
panelCSV.add(lblEncodage);
comboBoxEncodage = new JComboBox<String>();
comboBoxEncodage.setModel(new DefaultComboBoxModel<String>(new String[] {"UTF-8", "US-ASCII", "ISO-8859-1", "UTF-16BE", "UTF-16LE", "UTF-16"}));
comboBoxEncodage.setSelectedItem(nodCSV.getAttributs().get("encoding"));
comboBoxEncodage.setBounds(138, 74, 159, 22);
panelCSV.add(comboBoxEncodage);
JLabel lblSeparateur = new JLabel("Séparateur");
lblSeparateur.setFont(new Font("Tahoma", Font.BOLD, 12));
lblSeparateur.setBounds(370, 74, 86, 20);
panelCSV.add(lblSeparateur);
comboBoxSeparateur = new JComboBox<String>();
comboBoxSeparateur.setModel(new DefaultComboBoxModel<String>(new String[] {"point virgule", "virgule", "espace", "tabulation", ""}));
if(nodCSV.getAttributs().get("separator").equals(";")) comboBoxSeparateur.setSelectedItem("point virgule");
if(nodCSV.getAttributs().get("separator").equals(",")) comboBoxSeparateur.setSelectedItem("virgule");
if(nodCSV.getAttributs().get("separator").equals(" ")) comboBoxSeparateur.setSelectedItem("espace");
if(nodCSV.getAttributs().get("separator").equals("\t")) comboBoxSeparateur.setSelectedItem("tabulation");
comboBoxSeparateur.setBounds(457, 74, 159, 22);
panelCSV.add(comboBoxSeparateur);
JLabel lblveuillezSaisirLes = new JLabel("<html><b>Veuillez saisir des quatre noms des champs.</b><br>\r\nSi vous exportez le fichier depuis moodle, faite correspondre les noms des 4 champs ci-dessous avec celui de votre fichier.</html>");
lblveuillezSaisirLes.setVerticalAlignment(SwingConstants.TOP);
lblveuillezSaisirLes.setHorizontalAlignment(SwingConstants.LEFT);
lblveuillezSaisirLes.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblveuillezSaisirLes.setBounds(10, 120, 691, 60);
panelCSV.add(lblveuillezSaisirLes);
JLabel lblNewLabel_3 = new JLabel("Champ, nom de l'étudiant");
lblNewLabel_3.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNewLabel_3.setBounds(42, 210, 186, 20);
panelCSV.add(lblNewLabel_3);
node nodImportMoodle = nodCSV.retourneFirstEnfantsByName("import_moodle");
if(nodImportMoodle==null) {
JOptionPane.showMessageDialog(null, "Problème avec le fichier d'analyse.<br>le node import_moodle n'est pas dans le fichier d'analyse.");
}
textFieldNomEtudiant = new JTextField();
textFieldNomEtudiant.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldNomEtudiant.setColumns(10);
textFieldNomEtudiant.setBounds(233, 210, 200, 22);
textFieldNomEtudiant.setText(nodImportMoodle.getAttributs().get("name"));
panelCSV.add(textFieldNomEtudiant);
JLabel lblNewLabel_3_1 = new JLabel("Champ, prénom de l'étudiant");
lblNewLabel_3_1.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNewLabel_3_1.setBounds(42, 260, 186, 20);
panelCSV.add(lblNewLabel_3_1);
textFieldPrenomEtudiant = new JTextField();
textFieldPrenomEtudiant.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldPrenomEtudiant.setColumns(10);
textFieldPrenomEtudiant.setBounds(233, 260, 200, 22);
textFieldPrenomEtudiant.setText(nodImportMoodle.getAttributs().get("firstname"));
panelCSV.add(textFieldPrenomEtudiant);
JLabel lblNewLabel_3_1_1 = new JLabel("Champ, email de l'étudiant");
lblNewLabel_3_1_1.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNewLabel_3_1_1.setBounds(42, 310, 186, 20);
panelCSV.add(lblNewLabel_3_1_1);
textFieldEmail = new JTextField();
textFieldEmail.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldEmail.setColumns(10);
textFieldEmail.setBounds(233, 310, 200, 22);
textFieldEmail.setText(nodImportMoodle.getAttributs().get("email"));
panelCSV.add(textFieldEmail);
JLabel lblNewLabel_3_1_1_1 = new JLabel("Champ,numéro de l'étudiant");
lblNewLabel_3_1_1_1.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNewLabel_3_1_1_1.setBounds(42, 360, 186, 20);
panelCSV.add(lblNewLabel_3_1_1_1);
textFieldIDEtudiant = new JTextField();
textFieldIDEtudiant.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldIDEtudiant.setColumns(10);
textFieldIDEtudiant.setBounds(233, 360, 200, 22);
textFieldIDEtudiant.setText(nodImportMoodle.getAttributs().get("id"));
panelCSV.add(textFieldIDEtudiant);
//*********************************************************
//** ZIP **
//*********************************************************
JPanel panelZip = new JPanel();
panelZip.setLayout(null);
tabbedPane.addTab("ZIP", img2, panelZip, null);
node nodZIP = commandes.sujet.retourneFirstEnfantsByName("zip");
if(nodZIP==null) {
JOptionPane.showMessageDialog(null, "Problème avec le fichier d'analyse.<br>Le node zip n'est pas dans le fichier.");
dispose();
return;
}
JLabel lblZIP = new JLabel("<html>Ces paramètres permettent de réaliser les archives au format ZIP contenant les feedbacks des étudiants.<br>\r\nCes paramètres sont enregistrés dans le fichier d'analyse.</html>");
lblZIP.setHorizontalAlignment(SwingConstants.LEFT);
lblZIP.setVerticalAlignment(SwingConstants.TOP);
lblZIP.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblZIP.setBounds(10, 10, 691, 46);
panelZip.add(lblZIP);
JLabel lblSize = new JLabel("Taille maximale (Mo)");
lblSize.setFont(new Font("Tahoma", Font.BOLD, 12));
lblSize.setBounds(60, 96, 134, 20);
panelZip.add(lblSize);
textFieldSize = new JTextField();
textFieldSize.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldSize.setBounds(198, 94, 86, 22);
Integer size = 0;
try {
size = Integer.valueOf(nodZIP.getAttributs().get("size"));
size = size/1000000;
size = size + 2;
}catch (Exception e) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec la taille de l'archive dans le fichier d'analyse.");
dispose();
return;
}
textFieldSize.setText(String.valueOf(size));
textFieldSize.setColumns(10);
panelZip.add(textFieldSize);
JLabel lblNewLabel_1_1 = new JLabel("Nom de l'archive");
lblNewLabel_1_1.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNewLabel_1_1.setBounds(60, 164, 134, 20);
panelZip.add(lblNewLabel_1_1);
textFieldNameZIP = new JTextField();
textFieldNameZIP.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldNameZIP.setColumns(10);
textFieldNameZIP.setBounds(198, 164, 187, 22);
textFieldNameZIP.setText(nodZIP.getAttributs().get("nameZip"));
panelZip.add(textFieldNameZIP);
JLabel lblNewLabel_1 = new JLabel("La taille maximale sur moodle est limitée à 50Mo.");
lblNewLabel_1.setBounds(311, 97, 349, 20);
panelZip.add(lblNewLabel_1);
JLabel lblNewLabel_1_2 = new JLabel("Ne saisissez pas de caractère spéciaux.");
lblNewLabel_1_2.setBounds(406, 165, 254, 20);
panelZip.add(lblNewLabel_1_2);
//*********************************************************
//** TRICHE **
//*********************************************************
JPanel panelPlagiarism = new JPanel();
panelPlagiarism.setLayout(null);
tabbedPane.addTab("Triche", img3, panelPlagiarism, null);
node nodTriche = commandes.sujet.retourneFirstEnfantsByName("plagiarism");
if(nodTriche==null) {
JOptionPane.showMessageDialog(null, "Problème avec le fichier d'analyse.<br>Le node plagiarism n'est pas dans le fichier.");
dispose();
return;
}
JLabel lbldurantVosContrles = new JLabel("<html><b><u>Pour vérifier d'éventuelles triches, les fichiers des étudiants doivent enregistrer les modifications</u>.</b><br><br>"
+ "Durant vos contrôles, des étudiants peuvent transmettre leurs fichiers à d'autres étudiants. Ils peuvent aussi réaliser des copiés et collés entre les fichiers.<br><br>"
+ "Pour limiter les risques, remettez à vos étudiants un fichier avec <b><u>le mode suivi des modifications activé et protégé</u></b> par un mot de passe.<br><br>"
+ "Si vous avez oublié de demander, dans vos consignes, de changer dans les options le nom et le prénom de l'auteur."
+ " Alors, il est possible (mais très peu probable) qu'une modification <u>identique</u> se produise dans deux fichiers.<br><br>"
+ "Les paramètres ci-dessous permettent d'avoir une tolérances sur le signalement d'une éventuelle triche.</html>");
lbldurantVosContrles.setVerticalAlignment(SwingConstants.TOP);
lbldurantVosContrles.setHorizontalAlignment(SwingConstants.LEFT);
lbldurantVosContrles.setFont(new Font("Tahoma", Font.PLAIN, 14));
lbldurantVosContrles.setBounds(10, 10, 691, 226);
panelPlagiarism.add(lbldurantVosContrles);
JLabel lblNbrCorrespondanceMinimale = new JLabel("Nombre minimale de correspondance entre fichier");
lblNbrCorrespondanceMinimale.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNbrCorrespondanceMinimale.setBounds(40, 247, 313, 20);
panelPlagiarism.add(lblNbrCorrespondanceMinimale);
textFieldMiniCorrespondance = new JTextField();
textFieldMiniCorrespondance.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldMiniCorrespondance.setColumns(10);
textFieldMiniCorrespondance.setBounds(364, 247, 56, 22);
textFieldMiniCorrespondance.setText(nodTriche.getAttributs().get("number_match"));
panelPlagiarism.add(textFieldMiniCorrespondance);
JLabel lblNbrMiniModification = new JLabel("Nombre minimale de modification");
lblNbrMiniModification.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNbrMiniModification.setBounds(43, 293, 239, 20);
panelPlagiarism.add(lblNbrMiniModification);
textFieldNbrMiniModification = new JTextField();
textFieldNbrMiniModification.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldNbrMiniModification.setColumns(10);
textFieldNbrMiniModification.setBounds(364, 293, 56, 22);
textFieldNbrMiniModification.setText(nodTriche.getAttributs().get("mini_number_modification"));
panelPlagiarism.add(textFieldNbrMiniModification);
JLabel lblNewLabel_2 = new JLabel("<html>L'étudiants n'a pas réaliser assez de travaux.<br>"
+ "si valuer = -1 alors n'est pas pris en compte.</html>");
lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_2.setVerticalAlignment(SwingConstants.TOP);
lblNewLabel_2.setBounds(430, 297, 239, 41);
panelPlagiarism.add(lblNewLabel_2);
JLabel lblNewLabel_2_1 = new JLabel("Zéro = aucune tolérance");
lblNewLabel_2_1.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_2_1.setBounds(430, 247, 239, 20);
panelPlagiarism.add(lblNewLabel_2_1);
JLabel lblNbrMaxiModificationSimul = new JLabel("Nombre maximale de modification simultanée");
lblNbrMaxiModificationSimul.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNbrMaxiModificationSimul.setBounds(40, 373, 313, 20);
panelPlagiarism.add(lblNbrMaxiModificationSimul);
textFieldMaxiModificationSimul = new JTextField();
textFieldMaxiModificationSimul.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldMaxiModificationSimul.setColumns(10);
textFieldMaxiModificationSimul.setBounds(364, 373, 56, 22);
textFieldMaxiModificationSimul.setText(nodTriche.getAttributs().get("nombres_modifications_simultané_maxi"));
panelPlagiarism.add(textFieldMaxiModificationSimul);
JLabel lblNewLabel_2_2 = new JLabel("<html>Evite le copié collé de tout l'exercice,<br>ou d'une partie de l'exercice.<br>"
+ "Cette valeur dépend de votre exercice.</html>");
lblNewLabel_2_2.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_2_2.setVerticalAlignment(SwingConstants.TOP);
lblNewLabel_2_2.setBounds(430, 377, 239, 83);
panelPlagiarism.add(lblNewLabel_2_2);
//*********************************************************
//** SIMILITUDE **
//*********************************************************
JPanel panelTextSimilarity = new JPanel();
panelTextSimilarity.setLayout(null);
tabbedPane.addTab("Textes", img4, panelTextSimilarity, null);
node nodSimilitude = commandes.sujet.retourneFirstEnfantsByName("text:similarity");
if(nodSimilitude==null) {
JOptionPane.showMessageDialog(null, "Problème avec le fichier d'analyse.<br>Le node text:similarity n'est pas dans le fichier.");
dispose();
return;
}
JLabel lbllesSimilitude = new JLabel("<html>Les méthodes par comparaison des chaînes de caractères utilisent <b><u>la distance de Levenshtein d=[0;1]</u></b>.<br>"
+ "Exemple : allContent=\"environ1\", ou \"value\".<br><br>"
+ "La valeur du paramètre \"texte similitude\" par défaut est de <b>0.79</b> pour la méthode envirion, les fonctions dans les attributs de Writer.<br>"
+ "</html>");
lbllesSimilitude.setVerticalAlignment(SwingConstants.TOP);
lbllesSimilitude.setHorizontalAlignment(SwingConstants.LEFT);
lbllesSimilitude.setFont(new Font("Tahoma", Font.PLAIN, 14));
lbllesSimilitude.setBounds(10, 10, 691, 96);
panelTextSimilarity.add(lbllesSimilitude);
JLabel lblNewLabel_4 = new JLabel("Texte similitude");
lblNewLabel_4.setFont(new Font("Tahoma", Font.BOLD, 12));
lblNewLabel_4.setBounds(57, 159, 160, 20);
panelTextSimilarity.add(lblNewLabel_4);
textFieldTextSimilitude = new JTextField();
textFieldTextSimilitude.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldTextSimilitude.setBounds(199, 159, 86, 22);
textFieldTextSimilitude.setText(nodSimilitude.getAttributs().get("tolerance_text"));
panelTextSimilarity.add(textFieldTextSimilitude);
textFieldTextSimilitude.setColumns(10);
JLabel lblNewLabel_5 = new JLabel("<html>C'est la distance minimale qu'il doit y avoir entre le texte (paragraphe, ensemble de paragraphe, valeur d'un attribut Writer) et le texte présent dans le fichier d'analyse.<br><br>"
+ "La distance est une valeur comprise entre 0 et 1.<br><br>"
+ "Si d=0 alors n'importe quel texte est accepté.<br>"
+ "Si d=1 alors aucune différence entre les textes.</html>");
lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_5.setVerticalAlignment(SwingConstants.TOP);
lblNewLabel_5.setBounds(325, 163, 376, 145);
panelTextSimilarity.add(lblNewLabel_5);
//*********************************************************
//** COULEUR **
//*********************************************************
JPanel panelColor = new JPanel();
panelColor.setLayout(null);
tabbedPane.addTab("Couleur", img5, panelColor, null);
node nodColor = commandes.sujet.retourneFirstEnfantsByName("color");
if(nodColor==null) {
JOptionPane.showMessageDialog(null, "Problème avec le fichier d'analyse.<br>Le node color n'est pas dans le fichier.");
dispose();
return;
}
JLabel lblCouleur = new JLabel("<html>Dans les attributs de Writer contenant un code couleur, vous pouvez régler la tolérance de la couleur sur les trois canaux RVB.<br>"
+ "Il y a 255 nuances sur chaque canal.<br>"
+ "Par défaut les valeurs des tolérances sont réglées à 30 nuances.</html>");
lblCouleur.setVerticalAlignment(SwingConstants.TOP);
lblCouleur.setHorizontalAlignment(SwingConstants.LEFT);
lblCouleur.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblCouleur.setBounds(10, 10, 691, 97);
panelColor.add(lblCouleur);
JLabel lblRouge = new JLabel("Valeur de la tolérance sur les rouges");
lblRouge.setToolTipText("");
lblRouge.setFont(new Font("Tahoma", Font.BOLD, 12));
lblRouge.setBounds(30, 165, 250, 20);
panelColor.add(lblRouge);
JLabel lblValeurDeLa = new JLabel("Valeur de la tolérance sur les verts");
lblValeurDeLa.setToolTipText("");
lblValeurDeLa.setFont(new Font("Tahoma", Font.BOLD, 12));
lblValeurDeLa.setBounds(30, 218, 250, 20);
panelColor.add(lblValeurDeLa);
JLabel lblValeurDeLa_2 = new JLabel("Valeur de la tolérance sur les bleus");
lblValeurDeLa_2.setToolTipText("");
lblValeurDeLa_2.setFont(new Font("Tahoma", Font.BOLD, 12));
lblValeurDeLa_2.setBounds(30, 275, 244, 20);
panelColor.add(lblValeurDeLa_2);
textFieldRouge = new JTextField();
textFieldRouge.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldRouge.setBounds(292, 165, 86, 22);
panelColor.add(textFieldRouge);
textFieldRouge.setText(nodColor.getAttributs().get("tolerance_rouge"));
textFieldRouge.setColumns(10);
textFieldVert = new JTextField();
textFieldVert.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldVert.setColumns(10);
textFieldVert.setText(nodColor.getAttributs().get("tolerance_vert"));
textFieldVert.setBounds(292, 219, 86, 22);
panelColor.add(textFieldVert);
textFieldBleu = new JTextField();
textFieldBleu.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldBleu.setColumns(10);
textFieldBleu.setText(nodColor.getAttributs().get("tolerance_bleu"));
textFieldBleu.setBounds(292, 276, 86, 22);
panelColor.add(textFieldBleu);
btnTestCouleur = new JButton("Test de tolérance");
btnTestCouleur.setBounds(396, 353, 173, 23);
panelColor.add(btnTestCouleur);
textFieldTestCouleur = new JTextField();
textFieldTestCouleur.setHorizontalAlignment(SwingConstants.CENTER);
textFieldTestCouleur.setText("#ff0000");
textFieldTestCouleur.setFont(new Font("Tahoma", Font.BOLD, 12));
textFieldTestCouleur.setColumns(10);
textFieldTestCouleur.setBounds(292, 354, 86, 22);
panelColor.add(textFieldTestCouleur);
JLabel lblValeurDeLa_2_1 = new JLabel("Tapez un code couleur hexadécimal");
lblValeurDeLa_2_1.setToolTipText("");
lblValeurDeLa_2_1.setFont(new Font("Tahoma", Font.BOLD, 12));
lblValeurDeLa_2_1.setBounds(30, 357, 244, 20);
panelColor.add(lblValeurDeLa_2_1);
btnCouleurInitTest = new JButton("Couleur");
Color couleurInit = hex2Rgb(textFieldTestCouleur.getText());
btnCouleurInitTest.setBackground(couleurInit);
btnCouleurInitTest.setBounds(119, 430, 89, 23);
panelColor.add(btnCouleurInitTest);
btnRougeMax = new JButton("Rouge max");
btnRougeMax.setBackground(new Color(153, 0, 16));
btnRougeMax.setBounds(209, 405, 89, 23);
panelColor.add(btnRougeMax);
btnRougeMini = new JButton("Rouge mini");
btnRougeMini.setBackground(new Color(153, 0, 16));
btnRougeMini.setBounds(30, 405, 89, 23);
panelColor.add(btnRougeMini);
btnVertMini = new JButton("Vert mini");
btnVertMini.setBackground(new Color(153, 0, 16));
btnVertMini.setBounds(30, 430, 89, 23);
panelColor.add(btnVertMini);
btnVertMax = new JButton("Vert max");
btnVertMax.setBackground(new Color(153, 0, 16));
btnVertMax.setBounds(209, 430, 89, 23);
panelColor.add(btnVertMax);
btnBleuMini = new JButton("Bleu mini");
btnBleuMini.setBackground(new Color(153, 0, 16));
btnBleuMini.setBounds(30, 454, 89, 23);
panelColor.add(btnBleuMini);
btnBleuMax = new JButton("Bleu max");
btnBleuMax.setBackground(new Color(153, 0, 16));
btnBleuMax.setBounds(209, 454, 89, 23);
panelColor.add(btnBleuMax);
btnCouleurMiniTotal = new JButton("Couleur");
btnCouleurMiniTotal.setBackground(Color.RED);
btnCouleurMiniTotal.setBounds(373, 430, 89, 23);
panelColor.add(btnCouleurMiniTotal);
btnCouleurMaxiTotal = new JButton("Couleur");
btnCouleurMaxiTotal.setBackground(Color.RED);
btnCouleurMaxiTotal.setBounds(519, 430, 89, 23);
panelColor.add(btnCouleurMaxiTotal);
JLabel lblNewLabel_6 = new JLabel("Couleur la plus claire");
lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_6.setBounds(512, 409, 102, 14);
panelColor.add(lblNewLabel_6);
JLabel lblNewLabel_6_1 = new JLabel("Couleur la plus sombre");
lblNewLabel_6_1.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_6_1.setBounds(363, 409, 139, 14);
panelColor.add(lblNewLabel_6_1);
//*********************************************************
//** TRADUCTION **
//*********************************************************
JPanel panelTraduction = new JPanel();
panelTraduction.setLayout(null);
tabbedPane.addTab("Traduction", img6, panelTraduction, null);
JLabel lblCouleur_1 = new JLabel("<html>Dans le fichier d'analyse se trouve le node translation.<br>"
+ "Cliquez sur le bouton extraire le node.<br>"
+ "Vous pouvez manuellement ajouter des nodes enfants permettant la traduction des attributs d'analyseWriter.<br>"
+ "Cliquez sur le bouton ajouter vos traductions pour insérer vos modifications."
+ "</html>");
lblCouleur_1.setVerticalAlignment(SwingConstants.TOP);
lblCouleur_1.setHorizontalAlignment(SwingConstants.LEFT);
lblCouleur_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblCouleur_1.setBounds(10, 10, 691, 104);
panelTraduction.add(lblCouleur_1);
btnExtraire = new JButton("Extraire le node");
btnExtraire.setFont(new Font("Tahoma", Font.BOLD, 12));
btnExtraire.setBounds(99, 201, 194, 48);
panelTraduction.add(btnExtraire);
btnAjouterVosTraductions = new JButton("Ajouter vos traductions");
btnAjouterVosTraductions.setFont(new Font("Tahoma", Font.BOLD, 12));
btnAjouterVosTraductions.setBounds(388, 201, 205, 48);
panelTraduction.add(btnAjouterVosTraductions);
//*********************************************************
//** BOUTON VALIDATION MODIFICATION **
//*********************************************************
btnValiderModifications = new JButton("Valider les modifications");
btnValiderModifications.setFont(new Font("Tahoma", Font.BOLD, 14));
JPanel Pane = new JPanel();
Pane.setLayout(new GridLayout(1, 2, 0, 0));
contentPane.add(Pane,BorderLayout.SOUTH );
btnReinit = new JButton("Réïnitialiser les valeurs");
btnReinit.setFont(new Font("Tahoma", Font.BOLD, 14));
Pane.add(btnReinit);
Pane.add(btnValiderModifications);
ListenerAction();
if(!erreurFormatHexCouleur()&&!erreurFormatHexCouleur()) miseAJourCouleurTest();
this.setVisible(true);
}
private void ListenerAction() {
/**
* Bouton de validation des modification
*/
btnValiderModifications.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(!erreurValeursSaisies()&&!erreurToleranceCouleur()) {
//*** Validation du fichier CSV
node nodCSV = commandes.sujet.retourneFirstEnfantsByName("csv");
nodCSV.getAttributs().put("encoding", comboBoxEncodage.getSelectedItem().toString());
if(comboBoxSeparateur.getSelectedItem().equals("point virgule")) nodCSV.getAttributs().put("separator", ";");
if(comboBoxSeparateur.getSelectedItem().equals("virgule")) nodCSV.getAttributs().put("separator", ",");
if(comboBoxSeparateur.getSelectedItem().equals("espace")) nodCSV.getAttributs().put("separator", " ");
if(comboBoxSeparateur.getSelectedItem().equals("tabulation")) nodCSV.getAttributs().put("separator", "\t");
node nodImport= commandes.sujet.retourneFirstEnfantsByName("import_moodle");
nodImport.getAttributs().put("name", textFieldNomEtudiant.getText());
nodImport.getAttributs().put("firstname", textFieldPrenomEtudiant.getText());
nodImport.getAttributs().put("email", textFieldEmail.getText());
nodImport.getAttributs().put("id", textFieldIDEtudiant.getText());
//*** Validation du ZIP
node nodZIP = commandes.sujet.retourneFirstEnfantsByName("zip");
int valueNumeric = Integer.valueOf(textFieldSize.getText());
valueNumeric = valueNumeric*1000000;
valueNumeric = valueNumeric - 2000000;
nodZIP.getAttributs().put("size",String.valueOf(valueNumeric));
nodZIP.getAttributs().put("nameZip",textFieldNameZIP.getText());
//** Validation triche
node nodTriche = commandes.sujet.retourneFirstEnfantsByName("plagiarism");
nodTriche.getAttributs().put("number_match",textFieldMiniCorrespondance.getText());
nodTriche.getAttributs().put("mini_number_modification",textFieldNbrMiniModification.getText());
nodTriche.getAttributs().put("nombres_modifications_simultané_maxi",textFieldMaxiModificationSimul.getText());
//** Validation similitude
node nodSimilitude = commandes.sujet.retourneFirstEnfantsByName("text:similarity");
nodSimilitude.getAttributs().put("tolerance_text",textFieldTextSimilitude.getText());
//** Validation des tolérance couleur
node nodColor = commandes.sujet.retourneFirstEnfantsByName("color");
nodColor.getAttributs().put("tolerance_rouge",textFieldRouge.getText());
nodColor.getAttributs().put("tolerance_vert",textFieldVert.getText());
nodColor.getAttributs().put("tolerance_bleu",textFieldBleu.getText());
JOptionPane.showMessageDialog(null, "<html>Les informations ont bien été renseignées.<br>"
+ "N'oubliez pas d'enregistrer votre fichier d'analyse.</html>");
}
}
});
/**
* Bouton du test de couleur
*/
btnTestCouleur.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(!erreurFormatHexCouleur()&&!erreurFormatHexCouleur()) miseAJourCouleurTest();
}
});
/**
* Bouton extraire le node translate
*/
btnExtraire.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
node nodeTransalte = commandes.sujet.retourneFirstEnfantsByName("translation");
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Enregistrer sous...");
File file = null;
fileChooser.setCurrentDirectory(file);
int userSelection = fileChooser.showSaveDialog(null);
if (userSelection == JFileChooser.APPROVE_OPTION) {
File fileToSave = fileChooser.getSelectedFile();
try {
Run.ecritureNodeEnXML(nodeTransalte, fileToSave.getName(), fileToSave.getPath().substring(0,fileToSave.getPath().lastIndexOf("\\")),"" );
JOptionPane.showMessageDialog(null, "Le fichier \"" + fileToSave.getName() + ".xml\" a été renregistré.\n\nIl se trouve dans le dossier " + fileToSave.getPath());
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
/**
* Ajoute les traductions personnalisées
*/
btnAjouterVosTraductions.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Charger le node translate en mémoire");
FileNameExtensionFilter filter = new FileNameExtensionFilter("Fichier d'analyse .XML", "xml");
fileChooser.setFileFilter(filter);
File file = null;
fileChooser.setCurrentDirectory(file);
int userSelection = fileChooser.showSaveDialog(null);
if (userSelection == JFileChooser.APPROVE_OPTION) {
File fileToSave = fileChooser.getSelectedFile();
try {
file = new File(fileToSave.getAbsolutePath());
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(file.getAbsoluteFile()), "UTF-8"));
String line;
StringBuilder targetString = new StringBuilder();
while ((line = br.readLine()) != null) {
targetString.append(line);
}
node nodeSetting = commandes.sujet.retourneFirstEnfantsByName("setting");
node nodeTranslate2 = Run.XMLContent(targetString.toString());
if(nodeTranslate2.getNomElt().equals("translation")) {
nodeSetting.getNodes().remove(commandes.sujet.retourneFirstEnfantsByName("translation"));
nodeSetting.getNodes().add(nodeTranslate2);
JOptionPane.showMessageDialog(null, "Chargement du nouveau node de traduction.");
}
}catch (Exception e1) {
}
}
}
});
/**
* Réînitialiser les valeurs par défaut
*/
btnReinit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int a = JOptionPane.showConfirmDialog(null,"Voulez-vous remettre toutes les valeurs par défauts?", "Sélectionner un choix", JOptionPane.YES_NO_OPTION);
if(a == JOptionPane.YES_NO_OPTION) {
node nodCSV = commandes.sujet.retourneFirstEnfantsByName("csv");
nodCSV.getAttributs().put("encoding","UTF-8");
nodCSV.getAttributs().put("separator",";");
node nodImportMoodle = nodCSV.retourneFirstEnfantsByName("import_moodle");
nodImportMoodle.getAttributs().put("name","nom");
nodImportMoodle.getAttributs().put("email","adresse");
nodImportMoodle.getAttributs().put("firstname","prenom");
nodImportMoodle.getAttributs().put("id","identification");
node nodZIP = commandes.sujet.retourneFirstEnfantsByName("zip");
nodZIP.getAttributs().put("size","48000000");
nodZIP.getAttributs().put("nameZip","feedbackMoodle");
node nodplagiarism = commandes.sujet.retourneFirstEnfantsByName("plagiarism");
nodplagiarism.getAttributs().put("number_match","2");
nodplagiarism.getAttributs().put("mini_number_modification","-1");
nodplagiarism.getAttributs().put("nombres_modifications_simultané_maxi","100");
node nodSimilitude = commandes.sujet.retourneFirstEnfantsByName("text:similarity");
nodSimilitude.getAttributs().put("tolerance_text","0.79");
node nodColor = commandes.sujet.retourneFirstEnfantsByName("color");
nodColor.getAttributs().put("tolerance_rouge","30");
nodColor.getAttributs().put("tolerance_vert","30");
nodColor.getAttributs().put("tolerance_bleu","30");
// Relecture des nouvelles valeurs
comboBoxEncodage.setSelectedItem(nodCSV.getAttributs().get("encoding"));
if(nodCSV.getAttributs().get("separator").equals(";")) comboBoxSeparateur.setSelectedItem("point virgule");
if(nodCSV.getAttributs().get("separator").equals(",")) comboBoxSeparateur.setSelectedItem("virgule");
if(nodCSV.getAttributs().get("separator").equals(" ")) comboBoxSeparateur.setSelectedItem("espace");
if(nodCSV.getAttributs().get("separator").equals("\t")) comboBoxSeparateur.setSelectedItem("tabulation");
textFieldNomEtudiant.setText(nodImportMoodle.getAttributs().get("name"));
textFieldPrenomEtudiant.setText(nodImportMoodle.getAttributs().get("firstname"));
textFieldEmail.setText(nodImportMoodle.getAttributs().get("email"));
textFieldIDEtudiant.setText(nodImportMoodle.getAttributs().get("id"));
textFieldSize.setText(nodZIP.getAttributs().get("size"));
textFieldNameZIP.setText(nodZIP.getAttributs().get("nameZip"));
textFieldMiniCorrespondance.setText(nodplagiarism.getAttributs().get("number_match"));
textFieldNbrMiniModification.setText(nodplagiarism.getAttributs().get("mini_number_modification"));
textFieldMaxiModificationSimul.setText(nodplagiarism.getAttributs().get("nombres_modifications_simultané_maxi"));
textFieldTextSimilitude.setText(nodSimilitude.getAttributs().get("tolerance_text"));
textFieldRouge.setText(nodColor.getAttributs().get("tolerance_rouge"));
textFieldVert.setText(nodColor.getAttributs().get("tolerance_vert"));
textFieldBleu.setText(nodColor.getAttributs().get("tolerance_bleu"));
}
}
});
}
/**
* vérification des valeurs saisies dans la fenêtre setting.
* @return
*/
private boolean erreurValeursSaisies() {
boolean erreur = false;
//*******************
//** taille du zip **
//*******************
Integer valueNumeric = 0;
try {
valueNumeric = Integer.valueOf(textFieldSize.getText());
if(valueNumeric<2) {
JOptionPane.showInternalMessageDialog(null, "La taille de l'archive doit être supérieure à 2 Mo.");
erreur = true;
}
if(valueNumeric>200) {
JOptionPane.showInternalMessageDialog(null, "La taille de l'archive doit être inférieure à 200 Mo.");
erreur = true;
}
}catch (Exception e1) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec le format de la taille de l'archive.");
erreur = true;
}
//******************************
//** Les valeurs de la triche **
//******************************
try {
valueNumeric = Integer.valueOf(textFieldMiniCorrespondance.getText());
if(valueNumeric<1) {
JOptionPane.showInternalMessageDialog(null, "Le nombre de correspondance doit être supérieure à 1.");
erreur = true;
}
if(valueNumeric>5) {
JOptionPane.showInternalMessageDialog(null, "Le nombre de correspondance doit être inférieure à 5.");
erreur = true;
}
}catch (Exception e1) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec le format du nombre de correspondance (triche).");
erreur = true;
}
try {
valueNumeric = Integer.valueOf(textFieldNbrMiniModification.getText());
if(valueNumeric<-2) {
JOptionPane.showInternalMessageDialog(null, "Le nombre minimal de modification dans le fichier doit être supérieure à -1.");
erreur = true;
}
}catch (Exception e1) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec le format du nombre de modification minimale (triche).");
erreur = true;
}
try {
valueNumeric = Integer.valueOf(textFieldMaxiModificationSimul.getText());
if(valueNumeric<0) {
JOptionPane.showInternalMessageDialog(null, "Le nombre maximal de modification dans le fichier doit être une valeur positive non nulle.");
erreur = true;
}
}catch (Exception e1) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec le format du nombre de modification maximale (triche).");
erreur = true;
}
//**********************************
//** Les valeurs de la similitude **
//**********************************
try {
double valueNumericDouble = Double.valueOf(textFieldTextSimilitude.getText());
if(valueNumericDouble<0) {
JOptionPane.showInternalMessageDialog(null, "La distance de Levenshtein doit être supérieure à 0.");
erreur = true;
}
if(valueNumericDouble>1) {
JOptionPane.showInternalMessageDialog(null, "La distance de Levenshtein doit être inférieure à 1.");
erreur = true;
}
}catch (Exception e1) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec le format de la distance de Levenshtein.");
erreur = true;
}
//***************************************************
//** caractères spéciaux dans les noms des valeurs **
//***************************************************
Pattern p = Pattern.compile("[^\\w]");
Matcher m = p.matcher(textFieldNomEtudiant.getText());
if(m.find()) {
JOptionPane.showInternalMessageDialog(null, "Il y a un caractère spécial dans le nom du champ, nom de l'étudiant (fichier CSV).");
erreur = true;
}
m = p.matcher(textFieldPrenomEtudiant.getText());
if(m.find()) {
JOptionPane.showInternalMessageDialog(null, "Il y a un caractère spécial dans le nom du champ, prénom de l'étudiant (fichier CSV).");
erreur = true;
}
m = p.matcher(textFieldPrenomEtudiant.getText());
if(m.find()) {
JOptionPane.showInternalMessageDialog(null, "Il y a un caractère spécial dans le nom du champ, prénom de l'étudiant (fichier CSV).");
erreur = true;
}
m = p.matcher(textFieldEmail.getText());
if(m.find()) {
JOptionPane.showInternalMessageDialog(null, "Il y a un caractère spécial dans le nom du champ, email de l'étudiant (fichier CSV).");
erreur = true;
}
m = p.matcher(textFieldIDEtudiant.getText());
if(m.find()) {
JOptionPane.showInternalMessageDialog(null, "Il y a un caractère spécial dans le nom du champ, numéro de l'étudiant (fichier CSV).");
erreur = true;
}
m = p.matcher(textFieldNameZIP.getText());
if(m.find()) {
JOptionPane.showInternalMessageDialog(null, "Il y a un caractère spécial dans le nom de l'archive.");
erreur = true;
}
return erreur;
}
/**
* Vérification du format du code couleur pour le test de couleur.
* @return
*/
private boolean erreurFormatHexCouleur() {
boolean erreur= false;
Pattern p = Pattern.compile("^#[a-fA-F0-9].{6}$");
Matcher m = p.matcher(textFieldTestCouleur.getText().toUpperCase());
if(m.find()) {
JOptionPane.showInternalMessageDialog(null, "Ce n'est pas le format correct d'un code couleur hexdécimal.");
erreur = true;
}
return erreur;
}
/**
* Vérification tolérance de couleur.
* @return
*/
private boolean erreurToleranceCouleur() {
boolean erreur =false;
Integer valueNumeric = 0;
try {
valueNumeric = Integer.valueOf(textFieldRouge.getText());
if(valueNumeric<0) {
JOptionPane.showInternalMessageDialog(null, "La tolérance sur le rouge doit être une valeur positive.");
erreur = true;
}
if(valueNumeric>255) {
JOptionPane.showInternalMessageDialog(null, "La tolérance sur le rouge doit être inférieur à 255.");
erreur = true;
}
}catch (Exception e1) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec le format de la tolérance sur le rouge.");
erreur = true;
}
try {
valueNumeric = Integer.valueOf(textFieldVert.getText());
if(valueNumeric<0) {
JOptionPane.showInternalMessageDialog(null, "La tolérance sur le vert doit être une valeur positive.");
erreur = true;
}
if(valueNumeric>255) {
JOptionPane.showInternalMessageDialog(null, "La tolérance sur le vert doit être inférieur à 255.");
erreur = true;
}
}catch (Exception e1) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec le format de la tolérance sur le vert.");
erreur = true;
}
try {
valueNumeric = Integer.valueOf(textFieldBleu.getText());
if(valueNumeric<0) {
JOptionPane.showInternalMessageDialog(null, "La tolérance sur le bleu doit être une valeur positive.");
erreur = true;
}
if(valueNumeric>255) {
JOptionPane.showInternalMessageDialog(null, "La tolérance sur le bleu doit être inférieur à 255.");
erreur = true;
}
}catch (Exception e1) {
JOptionPane.showInternalMessageDialog(null, "Il y a un problème avec le format de la tolérance sur le bleu.");
erreur = true;
}
return erreur;
}
/**
*
* @param colorStr
* @return
*/
public static Color hex2Rgb(String colorStr) {
return new Color(
Integer.valueOf( colorStr.substring( 1, 3 ), 16 ),
Integer.valueOf( colorStr.substring( 3, 5 ), 16 ),
Integer.valueOf( colorStr.substring( 5, 7 ), 16 ) );
}
/**
*
* @param couleur
* @return
*/
public static String Rgb2hex(Color couleur) {
return String.format("#%02x%02x%02x", couleur.getRed(), couleur.getGreen(), couleur.getBlue());
}
/**
* Mise à jour du test de couleur
*/
private void miseAJourCouleurTest() {
if(!erreurFormatHexCouleur()&&!erreurToleranceCouleur()) {
Color couleurInit = hex2Rgb(textFieldTestCouleur.getText());
btnCouleurInitTest.setBackground(couleurInit);
btnCouleurInitTest.setText(textFieldTestCouleur.getText());
int couleurMaxRouge = couleurInit.getRed()+ Integer.valueOf(textFieldRouge.getText());
if(couleurMaxRouge>255) couleurMaxRouge=255;
Color couleurRougeMaxi = new Color(couleurMaxRouge, couleurInit.getGreen(), couleurInit.getBlue());
btnRougeMax.setBackground(couleurRougeMaxi);
btnRougeMax.setText(Rgb2hex(couleurRougeMaxi));
int couleurMiniRouge = couleurInit.getRed()- Integer.valueOf(textFieldRouge.getText());
if(couleurMiniRouge<0) couleurMiniRouge=0;
Color couleurRougeMini = new Color(couleurMiniRouge, couleurInit.getGreen(), couleurInit.getBlue());
btnRougeMini.setBackground(couleurRougeMini);
btnRougeMini.setText(Rgb2hex(couleurRougeMini));
int couleurMaxVert = couleurInit.getGreen()+ Integer.valueOf(textFieldVert.getText());
if(couleurMaxVert>255) couleurMaxVert=255;
Color couleurVertMaxi = new Color(couleurInit.getRed(), couleurMaxVert, couleurInit.getBlue());
btnVertMax.setBackground(couleurVertMaxi);
btnVertMax.setText(Rgb2hex(couleurVertMaxi));
int couleurMiniVert = couleurInit.getGreen()- Integer.valueOf(textFieldVert.getText());
if(couleurMiniVert<0) couleurMiniVert=0;
Color couleurVertMini = new Color(couleurInit.getRed(), couleurMiniVert, couleurInit.getBlue());
btnVertMini.setBackground(couleurVertMini);
btnVertMini.setText(Rgb2hex(couleurVertMini));
int couleurMaxBleu = couleurInit.getBlue()+ Integer.valueOf(textFieldBleu.getText());
if(couleurMaxBleu>255) couleurMaxBleu=255;
Color couleurBleuMaxi = new Color(couleurInit.getRed(), couleurInit.getGreen(), couleurMaxBleu);
btnBleuMax.setBackground(couleurBleuMaxi);
btnBleuMax.setText(Rgb2hex(couleurBleuMaxi));
int couleurMiniBleu = couleurInit.getBlue()- Integer.valueOf(textFieldBleu.getText());
if(couleurMiniBleu<0) couleurMiniBleu=0;
Color couleurBleuMini = new Color(couleurInit.getRed(), couleurInit.getGreen(), couleurMiniBleu);
btnBleuMini.setBackground(couleurBleuMini);
btnBleuMini.setText(Rgb2hex(couleurBleuMini));
Color couleurMaxi = new Color(couleurMaxRouge, couleurMaxVert, couleurMaxBleu);
btnCouleurMaxiTotal.setBackground(couleurMaxi);
btnCouleurMaxiTotal.setText(Rgb2hex(couleurMaxi));
Color couleurMini= new Color(couleurMiniRouge, couleurMiniVert, couleurMiniBleu);
btnCouleurMiniTotal.setBackground(couleurMini);
btnCouleurMiniTotal.setText(Rgb2hex(couleurMini));
}
}
}