diff --git a/analyseWriter.exe b/analyseWriter.exe index bf3d419..35f1ce0 100644 Binary files a/analyseWriter.exe and b/analyseWriter.exe differ diff --git a/analyseWriter.jar b/analyseWriter.jar index c1610ad..ec534d9 100644 Binary files a/analyseWriter.jar and b/analyseWriter.jar differ diff --git a/bin/.gitignore b/bin/.gitignore index 78b40c7..b0a6899 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -3,3 +3,22 @@ /evaluer/ /fenetres/ /list/ +/verifhistoriquestudent.png +/verifhistoriquestudent.svg +/verifhistoriquestudentmini.png +/versevaluate.png +/versevaluate.svg +/versevaluatemini.png +/versfichierAnalyse.png +/versfichierAnalyseModifmax.svg +/voir.svg +/voirmini.png +/what.svg +/whatmini.png +/zip.png +/zip.svg +/zipmini.png +/zipstudent.png +/zipstudent.svg +/zipstudentmini.png +/resources/ diff --git a/bin/calcul/calculNombrePointEvaluation.class b/bin/calcul/calculNombrePointEvaluation.class index 77d8744..5f32e81 100644 Binary files a/bin/calcul/calculNombrePointEvaluation.class and b/bin/calcul/calculNombrePointEvaluation.class differ diff --git a/bin/evaluer/analyseLesNodesPrincipaux.class b/bin/evaluer/analyseLesNodesPrincipaux.class index 666ca1e..0f8dc2e 100644 Binary files a/bin/evaluer/analyseLesNodesPrincipaux.class and b/bin/evaluer/analyseLesNodesPrincipaux.class differ diff --git a/bin/evaluer/evaluationAttribut.class b/bin/evaluer/evaluationAttribut.class index 5e3b2c8..8851010 100644 Binary files a/bin/evaluer/evaluationAttribut.class and b/bin/evaluer/evaluationAttribut.class differ diff --git a/bin/fenetres/afficheText.class b/bin/fenetres/afficheText.class index c15b110..8211985 100644 Binary files a/bin/fenetres/afficheText.class and b/bin/fenetres/afficheText.class differ diff --git a/bin/fenetres/createPopupMenu.class b/bin/fenetres/createPopupMenu.class index 7dd35aa..fc6c1ca 100644 Binary files a/bin/fenetres/createPopupMenu.class and b/bin/fenetres/createPopupMenu.class differ diff --git a/bin/fenetres/create_act/actCoefficient.class b/bin/fenetres/create_act/actCoefficient.class index 53d368c..e705068 100644 Binary files a/bin/fenetres/create_act/actCoefficient.class and b/bin/fenetres/create_act/actCoefficient.class differ diff --git a/bin/list/listeAttributsAnalyseWriter.class b/bin/list/listeAttributsAnalyseWriter.class index 4e016c6..cb4e8c3 100644 Binary files a/bin/list/listeAttributsAnalyseWriter.class and b/bin/list/listeAttributsAnalyseWriter.class differ diff --git a/bin/list/listeDesNodesAllContent.class b/bin/list/listeDesNodesAllContent.class index 024a071..1f1b4ad 100644 Binary files a/bin/list/listeDesNodesAllContent.class and b/bin/list/listeDesNodesAllContent.class differ diff --git a/src/calcul/calculNombrePointEvaluation.java b/src/calcul/calculNombrePointEvaluation.java index 4287be0..6fa1e54 100644 --- a/src/calcul/calculNombrePointEvaluation.java +++ b/src/calcul/calculNombrePointEvaluation.java @@ -174,6 +174,16 @@ public class calculNombrePointEvaluation { } } + if(nod.getAttributs().get("evalNombreDePageMaxi")!=null) { + try { + String valeur = nod.getAttributs().get("evalNombreDePageMaxi"); + String A = valeur.substring(valeur.lastIndexOf("page")+4, valeur.length()); + point = point + Integer.valueOf(A);; + } catch (Exception e) { + JOptionPane.showInternalMessageDialog(null, "Erreur dans la valeur de l'attribut evalNombreDePageMaxi"); + } + } + //*********************************************** //** Les points par la méthode analyseStyle ***** //*********************************************** diff --git a/src/evaluer/analyseLesNodesPrincipaux.java b/src/evaluer/analyseLesNodesPrincipaux.java index 39bf221..1d4318d 100644 --- a/src/evaluer/analyseLesNodesPrincipaux.java +++ b/src/evaluer/analyseLesNodesPrincipaux.java @@ -1117,6 +1117,34 @@ public class analyseLesNodesPrincipaux { //*************************** evaluation.initiliseLesPoints(); + + //******************************************************** + //** evalNombreDePageMaxi depuis le node structurepage ** + //******************************************************** + if(nodSujetS.getAttributs().get("evalNombreDePageMaxi")!=null) { + int pointDebut = evaluation.getPointsClass(); + int pointTotalDebut = evaluation.getPointTotal(); + node page = new node(); + page.setNomElt("page"); + page.getAttributs().put("namepage", "nombrePageMaxi"); + page.getAttributs().put("numeroabsolue", "0"); + page = evaluationAttribut.evalLesAttributEtContenuDuNode(nodStudentS, nodSujetS, page, "ana:page","structure"); + //**************************************************************** + //** Insère les attributs des points dans les node de l'analyse ** + //**************************************************************** + int points = evaluation.getPointsClass()-pointDebut; + int pointTotal = evaluation.getPointTotal()-pointTotalDebut; + Double proportioncorrect = 0.0; + if(pointTotal>0) proportioncorrect = ( (double) points/ (double) pointTotal); + + page.getAttributs().put("point", String.valueOf(points)); + page.getAttributs().put("pointTotal", String.valueOf(pointTotal)); + page.getAttributs().put("proportioncorrect", String.valueOf(proportioncorrect)); + + nodSpages.getNodes().add(page); + } + + //******************************************************** //** Parcours les nodes enfants du node ** //******************************************************** diff --git a/src/evaluer/evaluationAttribut.java b/src/evaluer/evaluationAttribut.java index c99f073..0dc2af0 100644 --- a/src/evaluer/evaluationAttribut.java +++ b/src/evaluer/evaluationAttribut.java @@ -408,6 +408,12 @@ public class evaluationAttribut { retour = evalPasParagrapheVide(sujet,nodeStudent,retour,nameElt); } + //evaluation du nombre de page maximal + if(k.equals("evalNombreDePageMaxi") && sujet.getNomElt().equals("structurepage")) { + retour = evalNombreDePageMaxi(sujet,nodeStudent,retour,nameElt); + } + + } } @@ -816,6 +822,36 @@ public class evaluationAttribut { return retour; } + + + private static node evalNombreDePageMaxi(node sujet,node nodeStudent, node retour, String nameElt) { + int point = 0; + int nombrePage = 1; + + if(sujet.getAttributs().get("evalNombreDePageMaxi")!=null) { + String valeur = sujet.getAttributs().get("evalNombreDePageMaxi"); + String A = valeur.substring(0, valeur.lastIndexOf("page")); + nombrePage = Integer.valueOf(A); + A = valeur.substring(valeur.lastIndexOf("page")+4, valeur.length()); + point = Integer.valueOf(A); + } + String reponseSujet = "Nombre page inférieur ou égal à " +String.valueOf(nombrePage); + String reponseStudent = "Nombre page n'est pas inférieur ou égal à " +String.valueOf(nombrePage); + + if(nodeStudent!=null) { + if(nodeStudent.getNodes().size()<=nombrePage) { + reponseStudent = "Nombre page inférieur ou égal à " +String.valueOf(nombrePage); + } + retour = evaluationNombreDePageMaxi(retour,reponseStudent, reponseSujet, String.valueOf(point),"Nombre de page maxi"); + }else { + retour = evaluationNombreDePageMaxi(retour,reponseStudent, reponseSujet, String.valueOf(point),"Nombre de page maxi"); + } + + return retour; + } + + + /** * Méthode evalPasParagrapheVide.
* Evaluer l'absence de paragraphe vide dans la page.
@@ -1275,6 +1311,30 @@ public class evaluationAttribut { return retour; } + /** + * + * @param retour + * @param reponseStudent + * @param reponseSujet + * @param point + * @param nameElt + * @return + */ + private static node evaluationNombreDePageMaxi(node retour, String reponseStudent, String reponseSujet, String point, String nameElt) { + node item = null; + if(reponseStudent!=null) { + //compare la même valeur "contenuParagraph" pour obtenir les points mais si un voisinage du contenu. + item = retourneNoteAvecResultatsAnalyse("Absence","", reponseStudent , reponseSujet + "‽" +point, nameElt ); + }else { + evaluation.IncrementPointTotal(Integer.valueOf(point)); + item = new node("Absence", "Erreur : -"+ point, "" , "null", reponseSujet , 2, evaluation.getPointEnJeu(),nameElt); + } + retour.getNodes().add(item); + return retour; + } + + + /** * * @param retour diff --git a/src/fenetres/afficheText.java b/src/fenetres/afficheText.java index 88f17ef..fe2b669 100644 --- a/src/fenetres/afficheText.java +++ b/src/fenetres/afficheText.java @@ -78,6 +78,7 @@ public class afficheText extends JEditorPane { String imageEvalFormatageDirect= ""; String imageEvalSautPageColonne= ""; String imageEvalPasParagrapheVide= ""; + String imageEvalNombreDePageMaxi= ""; StringBuilder sb = new StringBuilder(); @@ -259,6 +260,9 @@ public class afficheText extends JEditorPane { if(Lesattributsdunode.get(i).equals("evalPasParagrapheVide") && !nod.getAttributs().get(Lesattributsdunode.get(i)).equals("0")) { sb.append("
  • "+imageEvalPasParagrapheVide+ " " + Lesattributsdunode.get(i) + " = \"" + nod.getAttributs().get(Lesattributsdunode.get(i))+"\"
  • "); } + if(Lesattributsdunode.get(i).equals("evalNombreDePageMaxi") && !nod.getAttributs().get(Lesattributsdunode.get(i)).isEmpty()) { + sb.append("
  • "+imageEvalNombreDePageMaxi+ " " + Lesattributsdunode.get(i) + " = \"" + nod.getAttributs().get(Lesattributsdunode.get(i))+"\"
  • "); + } // sb.append("
  • " + Lesattributsdunode.get(i) + "=\"" + nod.getAttributs().get(Lesattributsdunode.get(i))+"\"
  • "); } diff --git a/src/fenetres/createPopupMenu.java b/src/fenetres/createPopupMenu.java index 4d86843..a0dd247 100644 --- a/src/fenetres/createPopupMenu.java +++ b/src/fenetres/createPopupMenu.java @@ -37,6 +37,8 @@ import fenetres.create_act.actEvalNamePageNon; import fenetres.create_act.actEvalNamePageOui; import fenetres.create_act.actEvalNameSequenceNon; import fenetres.create_act.actEvalNameSequenceOui; +import fenetres.create_act.actEvalNombreDePageMaxiNon; +import fenetres.create_act.actEvalNombreDePageMaxiOui; import fenetres.create_act.actEvalNumeroAbsoluePageNon; import fenetres.create_act.actEvalNumeroAbsoluePageOui; import fenetres.create_act.actEvalNumeroPageNon; @@ -138,6 +140,8 @@ public class createPopupMenu extends JPopupMenu { mnPopupTree.addSeparator(); mnPopupTree.add(mnNiveau1(nod)); if(nod.getNomElt().equals("structurepage")) { + mnPopupTree.addSeparator(); + mnPopupTree.add(mnGroupeMethodeEvaluer(nod)); mnPopupTree.addSeparator(); mnPopupTree.add(mnGroupeMethodeEvaluerMultiple(nod)); } @@ -484,7 +488,7 @@ public class createPopupMenu extends JPopupMenu { } /** - * Menu ent^te pas active.
    + * Menu entête pas active.
    * @return */ private JMenu mnevalEntetePasActive() { @@ -513,12 +517,25 @@ public class createPopupMenu extends JPopupMenu { */ private JMenu mnEvalPiedPagePasActive() { JMenu mnEvalPiedPagePasActive = new JMenu("Pied page pas activé"); - mnEvalPiedPagePasActive.setIcon(new ImageIcon(create.class.getResource("/resources/piedpagenonmini.png"))); + mnEvalPiedPagePasActive.setIcon(new ImageIcon(create.class.getResource("/resources/evalnombredepagemaximini.png"))); mnEvalPiedPagePasActive.add(new actEvalPiedPagePasActive()); mnEvalPiedPagePasActive.add(new actEvalPiedPagePasActiveNon()); return mnEvalPiedPagePasActive; } + /** + * Menu pour évaluer le nombre de page.
    + * @return + */ + private JMenu mnEvalNombreDePageMaxi() { + JMenu mnEvalNombreDePageMaxi = new JMenu("Nombre de page maximal"); + mnEvalNombreDePageMaxi.setIcon(new ImageIcon(create.class.getResource("/resources/evalnombredepagemaximini.png"))); + mnEvalNombreDePageMaxi.add(new actEvalNombreDePageMaxiOui()); + mnEvalNombreDePageMaxi.add(new actEvalNombreDePageMaxiNon()); + return mnEvalNombreDePageMaxi; + } + + /** * Menu évaluer le nom du node.
    * Revient à évaluer la présence du node.
    @@ -816,6 +833,11 @@ public class createPopupMenu extends JPopupMenu { mnGroupeMethodeEvaluer.setIcon( new ImageIcon(create.class.getResource("/resources/evaluatemini.png"))); + if(nod.getNomElt().equals("structurepage")) { + mnGroupeMethodeEvaluer.addSeparator(); + mnGroupeMethodeEvaluer.add(mnEvalNombreDePageMaxi()); + } + // Pour la méthode AllContent if(listeDesNodesAllContent.isAllContent(nod) ) { mnGroupeMethodeEvaluer.addSeparator(); diff --git a/src/fenetres/create_act/actCoefficient.java b/src/fenetres/create_act/actCoefficient.java index 28ad3ed..7ed1095 100644 --- a/src/fenetres/create_act/actCoefficient.java +++ b/src/fenetres/create_act/actCoefficient.java @@ -54,7 +54,7 @@ public class actCoefficient extends AbstractAction{ if(poids<=0) { nod.poids(Double.valueOf(1)); fenetres.create.getTextNodeSelect().setText(baliseStyle.balise()); - fenetres.create.getTextNodeSelect().setText("

    Erreur la valeur doit être un nombre entier POSITIF supérieur à zéro.
    Cependant,la valeur a été modifiée.
    poids=1.

    "); + fenetres.create.getTextNodeSelect().setText("

    Erreur la valeur doit être un nombre POSITIF supérieur à zéro.
    Cependant,la valeur a été modifiée.
    poids=1.

    "); }else { nod.poids(Double.valueOf(poids)); fenetres.create.getTextNodeSelect().refreshAffichage(nod); diff --git a/src/fenetres/create_act/actEvalNombreDePageMaxiNon.java b/src/fenetres/create_act/actEvalNombreDePageMaxiNon.java new file mode 100644 index 0000000..9f7595f --- /dev/null +++ b/src/fenetres/create_act/actEvalNombreDePageMaxiNon.java @@ -0,0 +1,30 @@ +package fenetres.create_act; + +import java.awt.event.ActionEvent; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ImageIcon; + +import cXML.node; +import fenetres.create; + +public class actEvalNombreDePageMaxiNon extends AbstractAction{ + { + putValue( Action.NAME, "Supprimer l'évaluation" ); + putValue( Action.SHORT_DESCRIPTION, "Supprime l'évaluation du nombre de page maxi" ); + putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/falsemini.png")) ); + } + /** + * + */ + private static final long serialVersionUID = 1L; + + @Override + public void actionPerformed(ActionEvent e) { + node nod = (node) fenetres.create.getSelectNode().getUserObject(); + nod.getAttributs().remove("evalNombreDePageMaxi"); + fenetres.create.getTextNodeSelect().refreshAffichage(nod); + } + +} diff --git a/src/fenetres/create_act/actEvalNombreDePageMaxiOui.java b/src/fenetres/create_act/actEvalNombreDePageMaxiOui.java new file mode 100644 index 0000000..ba3e3d8 --- /dev/null +++ b/src/fenetres/create_act/actEvalNombreDePageMaxiOui.java @@ -0,0 +1,84 @@ +package fenetres.create_act; + +import java.awt.event.ActionEvent; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.Box; +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import cXML.node; +import fenetres.baliseStyle; +import fenetres.create; + +public class actEvalNombreDePageMaxiOui extends AbstractAction{ + { + putValue( Action.NAME, "Oui, combien et combien de point?" ); + putValue( Action.SHORT_DESCRIPTION, "Evaluer le nombre de page maximal dans le document" ); + putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/truemini.png")) ); + } + /** + * + */ + private static final long serialVersionUID = 1L; + + @Override + public void actionPerformed(ActionEvent e) { + node nod = (node) fenetres.create.getSelectNode().getUserObject(); + int point = 0; + int nombrePage = 1; + if(nod.getAttributs().get("evalNombreDePageMaxi")!=null) { + String valeur = nod.getAttributs().get("evalNombreDePageMaxi"); + String A = valeur.substring(0, valeur.lastIndexOf("page")); + nombrePage = Integer.valueOf(A); + A = valeur.substring(valeur.lastIndexOf("page")+4, valeur.length()); + point = Integer.valueOf(A); + } + + + JTextField nombrePageField = new JTextField(8); + nombrePageField.setText(String.valueOf(nombrePage)); + JTextField pointField = new JTextField(8); + pointField.setText(String.valueOf(point)); + JPanel myPanel = new JPanel(); + myPanel.add(new JLabel("Nombre de page maxi :")); + myPanel.add(Box.createHorizontalStrut(2)); // a spacer + myPanel.add(nombrePageField); + myPanel.add(new JLabel("Nombre de point :")); + myPanel.add(Box.createHorizontalStrut(2)); // a spacer + myPanel.add(pointField); + + int result = JOptionPane.showConfirmDialog(null, myPanel, "Saisissez le nombre de page maximal", JOptionPane.OK_CANCEL_OPTION); + + if (result == JOptionPane.OK_OPTION) { + try { + point = Integer.valueOf(pointField.getText()); + nombrePage = Integer.valueOf(nombrePageField.getText()); + if(point<=0 && nombrePage<=0) { + nod.getAttributs().put("evalNombreDePageMaxi","1page1"); + } + if(point<=0 && nombrePage>0) { + nod.getAttributs().put("evalNombreDePageMaxi",nombrePageField.getText()+"page1"); + } + if(point>=0 && nombrePage<=0) { + nod.getAttributs().put("evalNombreDePageMaxi","1page" + pointField.getText() ); + } + if(point>=0 && nombrePage>0) { + nod.getAttributs().put("evalNombreDePageMaxi",nombrePageField.getText()+"page" + pointField.getText() ); + } + + } catch (Exception e2) { + fenetres.create.getTextNodeSelect().setText(baliseStyle.balise()); + fenetres.create.getTextNodeSelect().setText("

    Erreur la valeur doit être un nombre entier.
    La valeur n'a pas été modifiée.

    "); + } + } + + fenetres.create.getTextNodeSelect().refreshAffichage(nod); + + } + +} diff --git a/src/list/listeAttributsAnalyseWriter.java b/src/list/listeAttributsAnalyseWriter.java index 45bba28..b96b66c 100644 --- a/src/list/listeAttributsAnalyseWriter.java +++ b/src/list/listeAttributsAnalyseWriter.java @@ -57,6 +57,7 @@ public class listeAttributsAnalyseWriter { case "evalFormatageDirect": return true; case "evalSautPageColonne": return true; case "evalPasParagrapheVide": return true; + case "evalNombreDePageMaxi": return true; case "analysis_filename": return true; case "auteur": return true; diff --git a/src/list/listeDesNodesAllContent.java b/src/list/listeDesNodesAllContent.java index ef819f3..2957861 100644 --- a/src/list/listeDesNodesAllContent.java +++ b/src/list/listeDesNodesAllContent.java @@ -21,16 +21,16 @@ public class listeDesNodesAllContent { if(nameNode.equals("text:date")) return true; if(nameNode.equals("text:time")) return true; + if(nameNode.equals("structurepage")) return false; if(nameNode.equals("number:text")) return false; if(nameNode.equals("text:page-number")) return false; if(nameNode.equals("text:page-count")) return false; if(nameNode.equals("OU")) return false; if(nameNode.equals("text:conditional-text")) return false; if(nameNode.contains("text:bookmark")) return false; - if(nod.retourneLesContenusEnfants("").length()<=0) return false; + if(nameNode.contains("text:")) return true; - return true; } diff --git a/src/resources/evalnombredepagemaxi.png b/src/resources/evalnombredepagemaxi.png new file mode 100644 index 0000000..f811118 Binary files /dev/null and b/src/resources/evalnombredepagemaxi.png differ diff --git a/src/resources/evalnombredepagemaximini.png b/src/resources/evalnombredepagemaximini.png new file mode 100644 index 0000000..fa0da9b Binary files /dev/null and b/src/resources/evalnombredepagemaximini.png differ