bdf7d1f861
styles pour les graphiques. Ajout dans la méthode analyseStyle des style des dates et des heures.
224 lines
8.6 KiB
Java
224 lines
8.6 KiB
Java
package fenetres.create_act;
|
|
|
|
import java.awt.Component;
|
|
import java.awt.HeadlessException;
|
|
import java.awt.Image;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.InputEvent;
|
|
import java.awt.event.KeyEvent;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.Enumeration;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
import javax.swing.AbstractAction;
|
|
import javax.swing.Action;
|
|
import javax.swing.ImageIcon;
|
|
import javax.swing.JDialog;
|
|
import javax.swing.JFileChooser;
|
|
import javax.swing.KeyStroke;
|
|
import javax.swing.filechooser.FileNameExtensionFilter;
|
|
import javax.xml.parsers.ParserConfigurationException;
|
|
|
|
import org.xml.sax.SAXException;
|
|
|
|
import MEPTL.commandes;
|
|
import MEPTL.ecritureSujet;
|
|
import MEPTL.meptl;
|
|
import MEPTL.verificationFichierAnalyse;
|
|
import cXML.Run;
|
|
import cXML.node;
|
|
import evaluer.evaluation;
|
|
import fenetres.evaluate;
|
|
|
|
public class actNewFichierAnalyse extends AbstractAction{
|
|
|
|
/**
|
|
*
|
|
*/
|
|
private static final long serialVersionUID = 1L;
|
|
{
|
|
putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierODF.png")));
|
|
putValue( Action.NAME, "Génère un nouveau fichier d'analyse" );
|
|
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierODFmini.png")) );
|
|
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_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) );
|
|
}
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
JFileChooser chooser = new JFileChooser(){
|
|
private static final long serialVersionUID = 1L;
|
|
@Override
|
|
protected JDialog createDialog( Component parent ) throws HeadlessException {
|
|
JDialog dialog = super.createDialog( parent );
|
|
Image img = new ImageIcon(getClass().getResource("/evalwriter.png") ).getImage();
|
|
dialog.setIconImage(img);
|
|
return dialog;
|
|
}
|
|
};
|
|
|
|
|
|
chooser.setDialogTitle("Choisir un fichier ODF");
|
|
|
|
chooser.setCurrentDirectory(new java.io.File(commandes.path));
|
|
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
FileNameExtensionFilter filter = new FileNameExtensionFilter("Format ODF", "odt");
|
|
chooser.setFileFilter(filter);
|
|
chooser.setAcceptAllFileFilterUsed(true);
|
|
|
|
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
|
|
System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory());
|
|
System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath());
|
|
commandes.initialiseParametresSettingProprietes();;
|
|
commandes.fichierAnalyseValide=true;
|
|
commandes.path = chooser.getCurrentDirectory().getAbsolutePath();
|
|
commandes.PathFilenameAnalysis = chooser.getCurrentDirectory().getAbsolutePath();
|
|
String cheminVersFichier = chooser.getSelectedFile().getAbsolutePath();
|
|
commandes.nameSujet = chooser.getSelectedFile().getName();
|
|
|
|
Run b = null;
|
|
try {
|
|
b = new Run(cheminVersFichier);
|
|
commandes.sujet = Run.XMLContent(b.getLectDossiers().getEC().getListeContentWriter().get(0));
|
|
|
|
//Supprime l'historique des modifications
|
|
commandes.sujet.supprimeTousLesNodesEnfantWithThisName("text:tracked-changes");
|
|
commandes.sujet.supprimeTousLesNodesEnfantWithThisName("text:deletion");
|
|
commandes.sujet.supprimeTousLesNodesEnfantWithThisName("text:change-start");
|
|
commandes.sujet.supprimeTousLesNodesEnfantWithThisName("text:change-end");
|
|
commandes.sujet.supprimeTousLesNodesEnfantWithThisName("text:tracked-changes");
|
|
commandes.sujet.supprimeTousLesNodesEnfantWithThisName("text:change");
|
|
|
|
|
|
commandes.sujet = meptl.LectureFichierEtudiantSousFormeDeNode(commandes.sujet,b,0);
|
|
|
|
|
|
//Pour les sujets, il faut rechercher les nodes en doublons (par exemple : text:p, text:h, text:list-item)
|
|
//L'information sera portée par l'attribut isDoublon="true"
|
|
// Cela permet de recherche par le numéro du child.
|
|
placeIsDoublonInStructure(commandes.sujet.retourneFirstEnfantsByName("structurepage"));
|
|
placeIsDoublonInStylePage(commandes.sujet.retourneFirstEnfantsByName("style:page"));
|
|
|
|
commandes.sujet.getAttributs().put("analysis_filename","sujet.xml");
|
|
|
|
commandes.sujet = ecritureSujet.nodePourEcritureSujet(commandes.sujet,b,0);
|
|
|
|
// chargemnt de la traduction
|
|
evaluation.chargeTraduction(Run.translation());
|
|
|
|
// try {
|
|
// Run.ecritureNodeEnXML(commandes.sujet , commandes.nameSujet+".xml",commandes.path,"Sujet");
|
|
// } catch (IOException e1) {
|
|
// // TODO Auto-generated catch block
|
|
// e1.printStackTrace();
|
|
// }
|
|
|
|
|
|
|
|
new verificationFichierAnalyse();
|
|
|
|
|
|
if(commandes.fichierAnalyseValide) {
|
|
commandes.sujetSauvegarde = commandes.sujet.clone();
|
|
fenetres.create.getTree().setVisible(true);
|
|
fenetres.create.constructionTree();
|
|
fenetres.create.getTextNodeSelect().afficheChargementFichierAnalyse();
|
|
}else {
|
|
fenetres.create.getTextNodeSelect().setText("<h1>Le fichier n'est pas valide</h1>");
|
|
}
|
|
|
|
} catch (ParserConfigurationException | SAXException | IOException | CloneNotSupportedException e1) {
|
|
e1.printStackTrace();
|
|
}
|
|
|
|
} else {
|
|
fenetres.create.getTextNodeSelect().refreshAffichage(null);
|
|
}
|
|
|
|
|
|
commandes.ecritCode = true;
|
|
|
|
}
|
|
|
|
|
|
public static void placeIsDoublonInStructure(node nod) {
|
|
Enumeration<node> pages = Collections.enumeration(nod.getNodes());
|
|
while(pages.hasMoreElements()) {
|
|
node nodLaPage = pages.nextElement();
|
|
Pattern p = Pattern.compile("^text:p$|^text:h$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel
|
|
ArrayList<String> listTextesInPage = new ArrayList<String>();
|
|
for(int i = 0 ; i < nodLaPage.getNodes().size();i++) {
|
|
Matcher m = p.matcher(nodLaPage.getNodes().get(i).getNomElt());
|
|
if(m.find()) {
|
|
String content = nodLaPage.getNodes().get(i).retourneLesContenusEnfants("");
|
|
if(listTextesInPage.contains(content)) {
|
|
nodLaPage.getNodes().get(i).getAttributs().put("isDoublon", "true");
|
|
}else {
|
|
nodLaPage.getNodes().get(i).getAttributs().remove("isDoublon");
|
|
listTextesInPage.add(content);
|
|
}
|
|
if(nodLaPage.getNodes().get(i).getNodes().size()>0) {
|
|
placeIsDoublon(nodLaPage.getNodes().get(i));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public static void placeIsDoublonInStylePage(node nod) {
|
|
Enumeration<node> pages = Collections.enumeration(nod.getNodes());
|
|
while(pages.hasMoreElements()) {
|
|
node nodLaPage = pages.nextElement();
|
|
Pattern p = Pattern.compile("^text:p$|^text:h$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel
|
|
ArrayList<String> listTextesInPage = new ArrayList<String>();
|
|
for(int i = 0 ; i < nodLaPage.getNodes().size();i++) {
|
|
Matcher m = p.matcher(nodLaPage.getNodes().get(i).getNomElt());
|
|
if(m.find()) {
|
|
String content = nodLaPage.getNodes().get(i).retourneLesContenusEnfants("");
|
|
if(listTextesInPage.contains(content)) {
|
|
nodLaPage.getNodes().get(i).getAttributs().put("isDoublon", "true");
|
|
}else {
|
|
nodLaPage.getNodes().get(i).getAttributs().remove("isDoublon");
|
|
listTextesInPage.add(content);
|
|
}
|
|
}
|
|
if(nodLaPage.getNodes().get(i).getNodes().size()>0) {
|
|
placeIsDoublon(nodLaPage.getNodes().get(i));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* @param nod
|
|
*/
|
|
private static void placeIsDoublon(node nod) {
|
|
Pattern p = Pattern.compile("^text:p$|^text:h$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel
|
|
ArrayList<String> listTextesInPage = new ArrayList<String>();
|
|
for(int i = 0 ; i < nod.getNodes().size();i++) {
|
|
Matcher m = p.matcher(nod.getNodes().get(i).getNomElt());
|
|
if(m.find()) {
|
|
String content = nod.getNodes().get(i).retourneLesContenusEnfants("");
|
|
if(listTextesInPage.contains(content)) {
|
|
nod.getNodes().get(i).getAttributs().put("isDoublon", "true");
|
|
}else {
|
|
nod.getNodes().get(i).getAttributs().remove("isDoublon");
|
|
listTextesInPage.add(content);
|
|
}
|
|
if(nod.getNodes().get(i).getNodes().size()>0) {
|
|
placeIsDoublon(nod.getNodes().get(i));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|