diff --git a/analyseWriter.jar b/analyseWriter.jar index dc13653..6529382 100644 Binary files a/analyseWriter.jar and b/analyseWriter.jar differ diff --git a/bin/.gitignore b/bin/.gitignore index 16f90ab..08f04d9 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1 +1,2 @@ /MEPTL/ +/fenetres/ diff --git a/bin/MEPTL/meptl.class b/bin/MEPTL/meptl.class index df406ab..0023220 100644 Binary files a/bin/MEPTL/meptl.class and b/bin/MEPTL/meptl.class differ diff --git a/bin/fenetres/MyTreeCellEditor.class b/bin/fenetres/MyTreeCellEditor.class index d229d6a..529e870 100644 Binary files a/bin/fenetres/MyTreeCellEditor.class and b/bin/fenetres/MyTreeCellEditor.class differ diff --git a/bin/fenetres/create_act/actEvaluerTousLesStylesParagraphesTrue.class b/bin/fenetres/create_act/actEvaluerTousLesStylesParagraphesTrue.class index be59392..972969d 100644 Binary files a/bin/fenetres/create_act/actEvaluerTousLesStylesParagraphesTrue.class and b/bin/fenetres/create_act/actEvaluerTousLesStylesParagraphesTrue.class differ diff --git a/src/MEPTL/meptl.java b/src/MEPTL/meptl.java index 4b532f0..aa2edd1 100644 --- a/src/MEPTL/meptl.java +++ b/src/MEPTL/meptl.java @@ -677,13 +677,13 @@ public class meptl { page = nodpage.get(nodpage.size()-1); // dernière page enregistrer pour insérer des enfants en bas de la boucle - - // les sauts automatiques de page dans les paragraphes (text:soft-page-break) + //****************************************************************************** + //** les sauts automatiques de page dans les paragraphes (text:soft-page-break) + //****************************************************************************** if(nodstructure.getNodes().get(j).retourneEnfantsByNameExist("text:soft-page-break")) { - boolean insertionFait=false; ArrayList nods1 = a.retourneNames(nodstructure.getNodes().get(j), "text:soft-page-break"); + if(nods1.size()>1) { - for(int k = 0 ; k < nods1.size();k++) { node p = new node(); p.setNomElt("page"); p.getAttributs().put("numero", String.valueOf(compteurpage)); @@ -691,13 +691,13 @@ public class meptl { p.getAttributs().put("index",String.valueOf(j)); // recherche de l'index parmis les enfants du node text:soft-page-break. - int[] indexBreak = new int[nods1.size()+1]; + int[] indexBreak = new int[nods1.size()]; indexBreak[0]=0; - for(int v = 1 ; v < nods1.size()+1 ; v++) { + for(int v = 0 ; v < nods1.size() ; v++) { indexBreak[v]=-1; } - int i2 = 1; + int i2 = 0; for(int v = 0 ; v < nodstructure.getNodes().get(j).getNodes().size(); v++) { if(nodstructure.getNodes().get(j).getNodes().get(v).getNomElt().equals("text:soft-page-break")) { indexBreak[i2]=v; @@ -708,54 +708,106 @@ public class meptl { //Détermine s'il y a que du texte vide avant le saut automatique boolean[] ContenusVidesAvantBreak = new boolean[nods1.size()]; + boolean[] insertionRealiser = new boolean[nods1.size()]; for(int v = 0 ; v < nods1.size() ; v++) { ContenusVidesAvantBreak[v]=true; + insertionRealiser[v]=false; } + for(int u = 0; u < nods1.size() ; u++) { + for(int v = 0 ; v <= indexBreak[u]; v++) { + if(nodstructure.getNodes().get(j).getContenu().get(v)!=null) { + if(ContenusVidesAvantBreak[u]) { + if(!nodstructure.getNodes().get(j).getContenu().get(v).isEmpty()) { + ContenusVidesAvantBreak[u]=false; + } + } + if(v==indexBreak[u] && !ContenusVidesAvantBreak[u]) { + nodstructure.getNodes().get(j).getContenu().set( + v,nodstructure.getNodes().get(j).getContenu().get(v) + "** TEXT:SOFT-PAGE-BREAK **"); + } + } + } + } + + // Contenu & node après le text:soft-page-break + node[] textSoftPageBreak = new node[nods1.size()]; + for(int u = 0; u < nods1.size() ; u++) { + textSoftPageBreak[u] = new node(); + textSoftPageBreak[u].setNomElt("saut:automatique"); - for(int v = indexBreak[u] ; v <= indexBreak[u+1]; v++) { - System.out.println("De " + indexBreak[u] + " à "+ indexBreak[u+1] ); - if(nodstructure.getNodes().get(j).getContenu().get(v)!=null) { - if(!nodstructure.getNodes().get(j).getContenu().get(v).isEmpty()) { - ContenusVidesAvantBreak[u]=false; + if(!ContenusVidesAvantBreak[u]) { + // Ajoute dans le node textSoftPageBreak + for(int v = indexBreak[u]+1 ; v <= nodstructure.getNodes().get(j).getNodes().size(); v++) { + if(nodstructure.getNodes().get(j).getContenu().size()>v) { + textSoftPageBreak[u].getContenu().add(nodstructure.getNodes().get(j).getContenu().get(v)); } - if(v==indexBreak[u+1]) { - nodstructure.getNodes().get(j).getContenu().set( - v,nodstructure.getNodes().get(j).getContenu().get(v) + "** TEXT:SOFT-PAGE-BREAK **"); + if(nodstructure.getNodes().get(j).getNodes().size()>v) { + textSoftPageBreak[u].getNodes().add(nodstructure.getNodes().get(j).getNodes().get(v)); } } + + // suprresion des contenus et des nodes enfants dans le paragraphe dans le paragraphe + for(int v = indexBreak[u]+1 ; v <= nodstructure.getNodes().get(j).getNodes().size(); v++) { + if(nodstructure.getNodes().get(j).getContenu().size()>indexBreak[u]+1) nodstructure.getNodes().get(j).getContenu().remove(indexBreak[u]+1); + } + + for(int v = indexBreak[u] ; v <= nodstructure.getNodes().get(j).getNodes().size(); v++) { + if(nodstructure.getNodes().get(j).getNodes().size()>indexBreak[u]) nodstructure.getNodes().get(j).getNodes().remove(indexBreak[u]); + } } } - - if(!insertionFait) { + + for(int u = 0; u < nods1.size() ; u++) { + + if(ContenusVidesAvantBreak[0]) { - // place le node dans la même page du node p. - p.getNodes().add(nodstructure.getNodes().get(j)); - }else { - // place le node de la page précédente - nodpage.get(nodpage.size()-1).getNodes().add(nodstructure.getNodes().get(j)); + if(!insertionRealiser[0]) { + p.getNodes().add(nodstructure.getNodes().get(j)); + insertionRealiser[0]=true; + nodpage.add(p); + compteurpage++; + + node p1 = new node(); + p1.setNomElt("page"); + p1.getAttributs().put("numero", String.valueOf(compteurpage)); + p1.getAttributs().put("type","automatique"); + p1.getAttributs().put("index",String.valueOf(j)); + p1.getNodes().add(textSoftPageBreak[u+1]); + + insertionRealiser[1]=true; + + if(nods1.size()<3) { + nodpage.add(p1); + compteurpage++; + } + + } + + if(!insertionRealiser[0]&&!ContenusVidesAvantBreak[0]) { + // place le node de la page précédente + nodpage.get(nodpage.size()-1).getNodes().add(nodstructure.getNodes().get(j)); //ok + // place le textSoftPageBreak sur la page du node p. + p.getNodes().add(textSoftPageBreak[u]); + } + + } - insertionFait=true; + } - - - - if(!insertionFait) { - nodpage.get(nodpage.size()-1).getNodes().add(nodstructure.getNodes().get(j)); -// p.getNodes().add(nodstructure.getNodes().get(j)); //insertion du paragraphe (text:p) qui contient le saut automatique - insertionFait=true; + + if(!insertionRealiser[0]&&!insertionRealiser[1]) { + nodpage.add(p); + compteurpage++; } - - nodpage.add(p); - compteurpage++; - } - + page = nodpage.get(nodpage.size()-1); continue; + }else { node p = new node(); p.setNomElt("page"); @@ -770,19 +822,41 @@ public class meptl { } //Détermine s'il y a que du texte vide avant le saut automatique - boolean ContenusVidesAvantBreak = true; + boolean ContenusVidesAvantBreak = true; + // Contenu & node après le text:soft-page-break + node textSoftPageBreak = new node(); + textSoftPageBreak.setNomElt("saut:automatique"); + for(int v = 0 ; v <= indexBreak; v++) { if(nodstructure.getNodes().get(j).getContenu().get(v)!=null) { if(!nodstructure.getNodes().get(j).getContenu().get(v).isEmpty()) { ContenusVidesAvantBreak=false; } - if(v==indexBreak) { - nodstructure.getNodes().get(j).getContenu().set( - v,nodstructure.getNodes().get(j).getContenu().get(v) + "** TEXT:SOFT-PAGE-BREAK **"); - } } } + + if(!ContenusVidesAvantBreak) { + // Ajoute dans le node textSoftPageBreak + for(int v = indexBreak+1 ; v <= nodstructure.getNodes().get(j).getNodes().size(); v++) { + if(nodstructure.getNodes().get(j).getContenu().size()>v) { + textSoftPageBreak.getContenu().add(nodstructure.getNodes().get(j).getContenu().get(v)); + } + if(nodstructure.getNodes().get(j).getNodes().size()>v) { + textSoftPageBreak.getNodes().add(nodstructure.getNodes().get(j).getNodes().get(v)); + } + } + for(int v = indexBreak+1 ; v <= nodstructure.getNodes().get(j).getNodes().size(); v++) { + if(nodstructure.getNodes().get(j).getContenu().size()>indexBreak+1) nodstructure.getNodes().get(j).getContenu().remove(indexBreak+1); + } + + for(int v = indexBreak ; v <= nodstructure.getNodes().get(j).getNodes().size(); v++) { + if(nodstructure.getNodes().get(j).getNodes().size()>indexBreak) nodstructure.getNodes().get(j).getNodes().remove(indexBreak); + } + } + + + // S'il y a que du texte vide. if(ContenusVidesAvantBreak) { // place le node dans la même page du node p. @@ -790,6 +864,8 @@ public class meptl { }else { // place le node de la page précédente nodpage.get(nodpage.size()-1).getNodes().add(nodstructure.getNodes().get(j)); + // place le textSoftPageBreak sur la page du node p. + p.getNodes().add(textSoftPageBreak); } nodpage.add(p); @@ -799,7 +875,9 @@ public class meptl { } } + //************************************************************************** // les sauts manuels de page dans les paragraphes et + //************************************************************************** if(nodstructure.getNodes().get(j).getAttributs().get("text:style-name")!=null) { node nod2 = a.retourneFirstNodeByNameAttributValue(nodstyle.getNodes(), "style:style", "style:name", nodstructure.getNodes().get(j).getAttributs().get("text:style-name")); if(nod2!=null) { @@ -811,6 +889,7 @@ public class meptl { p.getAttributs().put("index",String.valueOf(j)); p.getAttributs().put("style:master-page-name",nod2.getAttributs().get("style:master-page-name")); p.getAttributs().put("style:name",nod2.getAttributs().get("style:name")); + node nod3 = a.retourneName(nod2.getNodes(), "style:paragraph-properties","fo:break-before"); if(nod3!=null) { if(nod3.getAttributs().get("style:page-number")!=null) p.getAttributs().put("style:page_number", nod3.getAttributs().get("style:page-number")); @@ -820,7 +899,7 @@ public class meptl { p.getAttributs().put("style:page_number", nod3.getAttributs().get("style:page-number")); } } -// nodpage.get(nodpage.size()-1).getNodes().add(nodstructure.getNodes().get(j)); + p.getNodes().add(nodstructure.getNodes().get(j)); nodpage.add(p); compteurpage++; @@ -833,7 +912,7 @@ public class meptl { p.getAttributs().put("numero", String.valueOf(compteurpage)); p.getAttributs().put("type","automatique"); p.getAttributs().put("index",String.valueOf(j)); -// nodpage.get(nodpage.size()-1).getNodes().add(nodstructure.getNodes().get(j)); + p.getNodes().add(nodstructure.getNodes().get(j)); nodpage.add(p); compteurpage++; @@ -843,7 +922,9 @@ public class meptl { } } + //************************************************* // les sauts manuels hors paragraphe et titre + //************************************************* if(!nodstructure.getNodes().get(j).getNomElt().equals("text:p") && !nodstructure.getNodes().get(j).getNomElt().equals("text:h") ) { ArrayList lesparagraphes = a.retourneNames(nodstructure.getNodes().get(j).getNodes(), "text:p"); node nod2 = a.retourneName(lesparagraphes, "text:p", "text:style-name"); @@ -878,7 +959,7 @@ public class meptl { p.getAttributs().put("numero", String.valueOf(compteurpage)); p.getAttributs().put("type","automatique"); p.getAttributs().put("index",String.valueOf(j)); -// nodpage.get(nodpage.size()-1).getNodes().add(nodstructure.getNodes().get(j)); + p.getNodes().add(nodstructure.getNodes().get(j)); nodpage.add(p); compteurpage++; diff --git a/src/fenetres/MyTreeCellEditor.java b/src/fenetres/MyTreeCellEditor.java index 2697abd..f00e6c7 100644 --- a/src/fenetres/MyTreeCellEditor.java +++ b/src/fenetres/MyTreeCellEditor.java @@ -1,17 +1,12 @@ package fenetres; import java.awt.Component; -import java.awt.event.ComponentListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; + import javax.swing.AbstractCellEditor; -import javax.swing.JPanel; import javax.swing.JTree; -import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeCellEditor; -import cXML.node; @@ -19,10 +14,13 @@ import cXML.node; public class MyTreeCellEditor extends AbstractCellEditor implements TreeCellEditor{ - private final JTree theTree; +// private final JTree theTree; + + + private static final long serialVersionUID = 1L; public MyTreeCellEditor(final JTree tree) { - theTree = tree; +// theTree = tree; } @Override diff --git a/src/fenetres/create_act/actEvaluerTousLesStylesParagraphesTrue.java b/src/fenetres/create_act/actEvaluerTousLesStylesParagraphesTrue.java index 3d2c8b1..5b8a766 100644 --- a/src/fenetres/create_act/actEvaluerTousLesStylesParagraphesTrue.java +++ b/src/fenetres/create_act/actEvaluerTousLesStylesParagraphesTrue.java @@ -1,7 +1,6 @@ package fenetres.create_act; import java.awt.event.ActionEvent; -import java.util.ArrayList; import javax.swing.AbstractAction; import javax.swing.Action;