diff --git a/analyseWriter.jar b/analyseWriter.jar index fd51137..bc6775d 100644 Binary files a/analyseWriter.jar and b/analyseWriter.jar differ diff --git a/bin/.gitignore b/bin/.gitignore index 75cdbd6..f13ae4e 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1,2 +1 @@ /app/ -/resources/ diff --git a/bin/app/about$1.class b/bin/app/about$1.class index b84c663..93451be 100644 Binary files a/bin/app/about$1.class and b/bin/app/about$1.class differ diff --git a/bin/app/about.class b/bin/app/about.class index 2db717d..ab7f68f 100644 Binary files a/bin/app/about.class and b/bin/app/about.class differ diff --git a/bin/app/evaluate$1.class b/bin/app/evaluate$1.class index 7b7c3de..16a00d3 100644 Binary files a/bin/app/evaluate$1.class and b/bin/app/evaluate$1.class differ diff --git a/bin/app/evaluate$2.class b/bin/app/evaluate$2.class index 5d5a70a..940c81b 100644 Binary files a/bin/app/evaluate$2.class and b/bin/app/evaluate$2.class differ diff --git a/bin/app/evaluate.class b/bin/app/evaluate.class index 4c38959..b898509 100644 Binary files a/bin/app/evaluate.class and b/bin/app/evaluate.class differ diff --git a/bin/app/filechooserXML.class b/bin/app/filechooserXML.class index 845877a..a4f23db 100644 Binary files a/bin/app/filechooserXML.class and b/bin/app/filechooserXML.class differ diff --git a/bin/app/mainApp$1.class b/bin/app/mainApp$1.class index 23437ff..2b5da31 100644 Binary files a/bin/app/mainApp$1.class and b/bin/app/mainApp$1.class differ diff --git a/bin/app/mainApp.class b/bin/app/mainApp.class index e1dcb60..7b430ec 100644 Binary files a/bin/app/mainApp.class and b/bin/app/mainApp.class differ diff --git a/bin/resources/documentation.pdf b/bin/resources/documentation.pdf new file mode 100644 index 0000000..6ab34c2 Binary files /dev/null and b/bin/resources/documentation.pdf differ diff --git a/bin/resources/documentation.png b/bin/resources/documentation.png new file mode 100644 index 0000000..9b7ccd1 Binary files /dev/null and b/bin/resources/documentation.png differ diff --git a/bin/resources/fichierCSVInfoXML.png b/bin/resources/fichierCSVInfoXML.png new file mode 100644 index 0000000..566c86d Binary files /dev/null and b/bin/resources/fichierCSVInfoXML.png differ diff --git a/documentation analyseWriter.pdf b/documentation analyseWriter.pdf index 6ab34c2..abba187 100644 Binary files a/documentation analyseWriter.pdf and b/documentation analyseWriter.pdf differ diff --git a/icons/documentation.png b/icons/documentation.png new file mode 100644 index 0000000..9b7ccd1 Binary files /dev/null and b/icons/documentation.png differ diff --git a/icons/documentation.svg b/icons/documentation.svg new file mode 100644 index 0000000..b5314b5 --- /dev/null +++ b/icons/documentation.svg @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + DOC + + + diff --git a/icons/fichierCSVInfoXML.png b/icons/fichierCSVInfoXML.png new file mode 100644 index 0000000..566c86d Binary files /dev/null and b/icons/fichierCSVInfoXML.png differ diff --git a/icons/fichier_csv_student_xml.svg b/icons/fichier_csv_student_xml.svg new file mode 100644 index 0000000..1d830cf --- /dev/null +++ b/icons/fichier_csv_student_xml.svg @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + CSV + + + + + + XML + + + + diff --git a/src/app/about.java b/src/app/about.java index db3430e..902e69c 100644 --- a/src/app/about.java +++ b/src/app/about.java @@ -8,8 +8,6 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; -import javax.swing.filechooser.FileView; - import MEPTL.commandes; import javax.swing.JButton; import java.awt.event.ActionListener; diff --git a/src/app/create.java b/src/app/create.java index 9a7d55e..9b7848c 100644 --- a/src/app/create.java +++ b/src/app/create.java @@ -6,7 +6,6 @@ import java.awt.Dimension; import java.awt.Font; import java.awt.SystemColor; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -22,7 +21,6 @@ import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; -import javax.swing.JDialog; import javax.swing.JEditorPane; import javax.swing.JFileChooser; import javax.swing.JFrame; @@ -108,7 +106,6 @@ public class create extends JFrame { * Create the application. */ public create() { - setResizable(false); try { initialize(); } catch (UnsupportedLookAndFeelException e) { @@ -135,8 +132,9 @@ public class create extends JFrame { //frame = new JFrame(); - System.out.println(this.getClass()); - setSize(1400,915); +// System.out.println(this.getClass()); +// this.setExtendedState(MAXIMIZED_BOTH); + setSize(1400,920); //setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH ); setTitle(commandes.Titre); @@ -166,7 +164,7 @@ public class create extends JFrame { getContentPane().add(panel, BorderLayout.CENTER); panel.setLayout(null); - tabbedPane.setBounds(812, 13, 561, 785); + tabbedPane.setBounds(816, 10, 600, 785); panel.add(tabbedPane); JPanel panelProperties = new JPanel(); @@ -419,7 +417,7 @@ public class create extends JFrame { JScrollPane rightScrollPane = new JScrollPane( ); JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftScrollPane, rightScrollPane ); - splitPane.setBounds(10, 13, 792, 783); + splitPane.setBounds(10, 10, 800, 783); panel.add(splitPane); rightScrollPane.setViewportView(textNodeSelect); textNodeSelect.setFont(new Font("Monospaced", Font.PLAIN, 15)); diff --git a/src/app/evaluate.java b/src/app/evaluate.java index 77de903..7481548 100644 --- a/src/app/evaluate.java +++ b/src/app/evaluate.java @@ -3,13 +3,10 @@ package app; import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; + import javax.swing.AbstractAction; import javax.swing.Action; @@ -20,7 +17,6 @@ import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JTextPane; import javax.swing.JToolBar; import javax.swing.KeyStroke; import javax.swing.border.EmptyBorder; @@ -32,6 +28,7 @@ import org.xml.sax.SAXException; import MEPTL.commandes; import MEPTL.ecritureSujet; import MEPTL.meptl; +import MEPTL.verificationFichierAnalyse; import cXML.Run; import cXML.node; @@ -43,21 +40,21 @@ import net.miginfocom.swing.MigLayout; import java.awt.event.InputEvent; import javax.swing.JMenuBar; import javax.swing.JMenu; -import javax.swing.JMenuItem; import javax.swing.JOptionPane; import java.awt.Color; import java.awt.Desktop; - -import javax.swing.JToggleButton; -import java.awt.FlowLayout; +import javax.swing.JEditorPane; public class evaluate extends JFrame { + /** + * + */ + private static final long serialVersionUID = 1L; /** * */ @SuppressWarnings("unused") - private final long serialVersionUID = 1L; private JToolBar toolBar = new JToolBar(); private JPanel contentPane; private JLabel lblPath = new JLabel(); @@ -72,7 +69,7 @@ public class evaluate extends JFrame { private JCheckBox chckbxNoLogo = new JCheckBox(); private JCheckBox chckbxVerif = new JCheckBox(); private JCheckBox chckbxNewLogo = new JCheckBox(); - private JTextPane txtpnmessages = new JTextPane(); + private JEditorPane txtpnmessages = new JEditorPane(); private JProgressBar progressBar = new JProgressBar(); @@ -113,6 +110,8 @@ public class evaluate extends JFrame { mnMenu_Liste_Etudiant.add(actChargeListeEtudiantCSV); mnMenu_Liste_Etudiant.addSeparator(); mnMenu_Liste_Etudiant.add(actAfficheListeEtudiant ); + mnMenu_Liste_Etudiant.add(actVerifCSV ); + JMenu mnMenu_Logo = new JMenu("Logo"); menuBar.add(mnMenu_Logo); @@ -182,6 +181,11 @@ public class evaluate extends JFrame { btnInfoListeEtudiant.setHideActionText(true); toolBar.add(btnInfoListeEtudiant); + JButton btnVerificationCSVavecFichierAnalyse = toolBar.add( actVerifCSV ); + btnVerificationCSVavecFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png"))); + btnVerificationCSVavecFichierAnalyse.setHideActionText(true); + toolBar.add(btnVerificationCSVavecFichierAnalyse); + toolBar.addSeparator(); JButton btnFichierSVG = toolBar.add(actChargeLogo); @@ -298,12 +302,12 @@ public class evaluate extends JFrame { progressBar.setEnabled(false); scrollPane.setColumnHeaderView(progressBar); - txtpnmessages = new JTextPane(); + txtpnmessages = new JEditorPane(); txtpnmessages.setFont(new Font("Tahoma", Font.PLAIN, 14)); txtpnmessages.setText("Charger un fichier d'analyse."); scrollPane.setViewportView(txtpnmessages); - + this.setExtendedState(MAXIMIZED_BOTH); refreshLabel(); setVisible(true); @@ -429,7 +433,7 @@ public class evaluate extends JFrame { /** - * Ouvre et affiche un node dans le composant JTree + * Ouvre et affiche un fichier XML */ private AbstractAction actOpen = new AbstractAction() { @@ -437,7 +441,7 @@ public class evaluate extends JFrame { { putValue(LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyse.png"))); - putValue( Action.NAME, "Ouvrir un fichier d'analyse" ); + putValue( Action.NAME, "Ouvrir un nouveau fichier d'analyse (CTRL+O)" ); putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/fichierAnalyse.png")) ); putValue( Action.MNEMONIC_KEY, KeyEvent.VK_O ); putValue( Action.SHORT_DESCRIPTION, "Ouvrir un nouveau fichier d'analyse (CTRL+O)" ); @@ -533,6 +537,74 @@ public class evaluate extends JFrame { } }; + private AbstractAction actVerifCSV = new AbstractAction() { + + private static final long serialVersionUID = 1L; + { + putValue(LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png"))); + putValue( Action.NAME, "Vérification du CSV avec les paramètres du fichier d'analyse (CTRL+B)" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_U ); + putValue( Action.SHORT_DESCRIPTION, "Vérification du CSV avec les paramètres du fichier d'analyse (CTRL+B)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK) ); + } + @Override + public void actionPerformed( ActionEvent e ) { + + if(commandes.fichierAnalyseValide) { + if(commandes.fourniCSV) { + node settingCSV = commandes.sujet.retourneFirstEnfantsByName("import_moodle"); + if(settingCSV.isHasAttributs()) { + String email ="inconnu"; + String name = "inconnu"; + String firstname = "inconnu"; + String id = "inconnu"; + boolean avertissement = false; + if(settingCSV.getAttributs().get("email")!=null) { + email = settingCSV.getAttributs().get("email"); + } + if(settingCSV.getAttributs().get("name")!=null) { + name = settingCSV.getAttributs().get("name"); + } + if(settingCSV.getAttributs().get("firstname")!=null) { + firstname = settingCSV.getAttributs().get("firstname"); + } + if(settingCSV.getAttributs().get("id")!=null) { + id = settingCSV.getAttributs().get("id"); + } + if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(firstname)==null) { + txtpnmessages.setText("*** AVERTISSEMENT - Il n'y a pas le champ " + firstname + " dans le fichier CSV. ***"); + avertissement=true; + } + if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(name)==null) { + txtpnmessages.setText("*** AVERTISSEMENT - Il n'y a pas le champ " + name + " dans le fichier CSV. ***"); + avertissement=true; + } + if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(id)==null) { + txtpnmessages.setText("*** AVERTISSEMENT - Il n'y a pas le champ " + id + " dans le fichier CSV. ***"); + avertissement=true; + } + if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(email)==null) { + txtpnmessages.setText("*** AVERTISSEMENT - Il n'y a pas le champ " + email + " dans le fichier CSV. ***"); + avertissement=true; + } + if(!avertissement) { + txtpnmessages.setText("*** Le fichier CSV contenant la liste des étudiants peut être utilisé avec les paramètres du fichier d'analyse ***"); + } + }else { + txtpnmessages.setText("*** Le fichier CSV contenant la liste des étudiants est vide ***"); + } + }else { + txtpnmessages.setText("*** Veuillez charger un fichier CSV contenant la liste des étudiants ***"); + new msgBox("Le fichier CSV contenant la liste des étudiants n'est pas chargé.",true,false,"Avertissement"); + } + }else { + txtpnmessages.setText("*** Veuillez charger un fichier d'analyse ***"); + new msgBox("Le fichier d'analyse n'est pas valide.",true,false,"Avertissement"); + } + } + }; + /** * Gènère un nouveau fichier d'analyse à partir d'un fichier ODF @@ -546,7 +618,7 @@ public class evaluate extends JFrame { putValue( Action.NAME, "Génère un nouveau fichier d'analyse (CTRL+N)" ); putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierODF.png")) ); putValue( Action.MNEMONIC_KEY, KeyEvent.VK_N ); - putValue( Action.SHORT_DESCRIPTION, "Génère un nouveau fichier d'analyse (CTRL+N)" ); + putValue( Action.SHORT_DESCRIPTION, "Générer un nouveau fichier d'analyse (CTRL+N)" ); putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK) ); } @@ -582,7 +654,8 @@ public class evaluate extends JFrame { +"\nLe fichier sujet.xml a été généré dans le dossier :" +"\n" + commandes.path +"\n*************************"); - commandes.fichierAnalyseValide=true; + commandes.sujet = nodSujet; + new verificationFichierAnalyse(); } catch (ParserConfigurationException | SAXException | IOException | CloneNotSupportedException e1) { e1.printStackTrace(); @@ -722,12 +795,13 @@ public class evaluate extends JFrame { } @Override public void actionPerformed( ActionEvent e ) { - if(commandes.fichierAnalyseValide) { - new create(); - dispose(); - }else { - txtpnmessages.setText("*** Veuillez sélectionner un fichier d'analyse pour le modifier ***"); - } +// if(commandes.fichierAnalyseValide) { +// +// }else { +// txtpnmessages.setText("*** Veuillez sélectionner un fichier d'analyse pour le modifier ***"); +// } + new create(); + dispose(); System.out.println( "Affiche la fenêtre pour la modification." ); } }; @@ -789,9 +863,16 @@ public class evaluate extends JFrame { System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory()); System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath()); commandes.nameCSV = chooser.getSelectedFile().getAbsolutePath(); - commandes.fourniCSV=true; commandes.nodeCSV = meptl.chargementFichierCSV(); txtpnmessages.setText(Run.ecritureNode(commandes.nodeCSV, 0).toString()); + commandes.fourniCSV=true; + if(!commandes.nodeCSV.getNomElt().equals("fileCSV")) { + commandes.fourniCSV=false; + } + if(commandes.nodeCSV.getNodes().size()<=0) { + commandes.fourniCSV=false; + txtpnmessages.setText("*** Le fichier ne contient pas d'étudiant ***"); + } } else { commandes.nameCSV = ""; commandes.fourniCSV=false; diff --git a/src/app/filechooserXML.java b/src/app/filechooserXML.java index d019f63..e6c498f 100644 --- a/src/app/filechooserXML.java +++ b/src/app/filechooserXML.java @@ -15,7 +15,6 @@ import javax.swing.filechooser.FileNameExtensionFilter; import MEPTL.commandes; import MEPTL.meptl; import MEPTL.verificationFichierAnalyse; -import cXML.Run; import cXML.node; public class filechooserXML extends JFileChooser { diff --git a/src/app/mainApp.java b/src/app/mainApp.java index a61ed1c..76367e3 100644 --- a/src/app/mainApp.java +++ b/src/app/mainApp.java @@ -1,10 +1,12 @@ package app; -import java.awt.Color; +import java.awt.Desktop; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.File; +import java.io.IOException; import javax.swing.ImageIcon; import javax.swing.JButton; @@ -64,7 +66,7 @@ public class mainApp extends JFrame implements ActionListener{ frmEvalwriter = new JFrame(); frmEvalwriter.setResizable(false); frmEvalwriter.setTitle("analyseWriter"); - frmEvalwriter.setBounds(100, 100, 555, 315); + frmEvalwriter.setBounds(100, 100, 555, 380); frmEvalwriter.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frmEvalwriter.getContentPane().setLayout(null); ImageIcon img = new ImageIcon(getClass().getResource("/evalwriter.png") ); @@ -76,7 +78,7 @@ public class mainApp extends JFrame implements ActionListener{ btnCreate.setFont(new Font("Tahoma", Font.PLAIN, 14)); btnCreate.addActionListener(this); - btnCreate.setBounds(34, 180, 470, 58); + btnCreate.setBounds(34, 180, 470, 60); frmEvalwriter.getContentPane().add(btnCreate); actCharge = new JButton("Evaluer les fichiers des étudiants - Créer un fichier d'analyse"); @@ -85,7 +87,7 @@ public class mainApp extends JFrame implements ActionListener{ actCharge.setBackground(SystemColor.inactiveCaption); actCharge.addActionListener(this); actCharge.setFont(new Font("Tahoma", Font.PLAIN, 14)); - actCharge.setBounds(34, 110, 470, 58); + actCharge.setBounds(34, 110, 470, 60); frmEvalwriter.getContentPane().add(actCharge); JLabel lblNewLabel = new JLabel(); @@ -95,6 +97,34 @@ public class mainApp extends JFrame implements ActionListener{ lblNewLabel.setFont(new Font("Pacifico", Font.PLAIN, 26)); lblNewLabel.setBounds(34, 11, 470, 74); frmEvalwriter.getContentPane().add(lblNewLabel); + + JButton btnNewButton = new JButton("Informations"); + btnNewButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + new about(); + } + }); + btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 14)); + btnNewButton.setIcon(new ImageIcon(mainApp.class.getResource("/resources/apropos.png"))); + btnNewButton.setBounds(34, 270, 220, 60); + frmEvalwriter.getContentPane().add(btnNewButton); + + JButton btnDocumentation = new JButton("Documentation"); + btnDocumentation.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + Desktop d = Desktop.getDesktop(); + try { + d.open(new File(evaluate.class.getResource("/resources/documentation.pdf").getPath())); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + }); + btnDocumentation.setIcon(new ImageIcon(mainApp.class.getResource("/resources/documentation.png"))); + btnDocumentation.setFont(new Font("Tahoma", Font.PLAIN, 14)); + btnDocumentation.setBounds(284, 270, 220, 60); + frmEvalwriter.getContentPane().add(btnDocumentation); } @@ -112,5 +142,4 @@ public class mainApp extends JFrame implements ActionListener{ } } - } diff --git a/src/resources/fichierCSVInfoXML.png b/src/resources/fichierCSVInfoXML.png new file mode 100644 index 0000000..566c86d Binary files /dev/null and b/src/resources/fichierCSVInfoXML.png differ