/** * Renvoie l'élément enfant se trouvant après la place où se trouverait l'enfant de référence ref. * (permet d'insérer un futur élément de référence ref par rapport à l'élément suivant) */ private Element trouverSuivant(final Element ref) { final int ind = refEnfantsPossibles.indexOf(ref); if (ind == refEnfantsPossibles.size() - 1) return (null); if (enfants == null) return (null); for (final Node nEnfant : enfants) { if (nEnfant instanceof Element) { final Element refEnfant = cfg.getElementRef((Element) nEnfant); final int ind2 = refEnfantsPossibles.indexOf(refEnfant); if (ind2 > ind) return ((Element) nEnfant); } } return (null); }
/** Met à jour l'affichage quand on ajoute un élément (donné en paramètre) */ private void majPanel(final Element refAjout) { lireEnfants(); if (profondeur > profondeurMax) return; panelEnfants.removeAll(); affEnfants = new ArrayList<AffichageFormulaire>(); final GridBagConstraints c = new GridBagConstraints(); int pos = 0; if (!attribut) { for (final Element refAttributPossible : refAttributsPossibles) { Node nEnfant = null; if (enfants != null) { for (Node enfanti : enfants) { if (enfanti instanceof Attr) { final String nomAtt = enfanti.getNodeName(); final String espaceAtt = enfanti.getNamespaceURI(); boolean match = nomAtt.equals(cfg.nomAttribut(refAttributPossible)); final String espace2 = cfg.espaceAttribut(refAttributPossible); match = match && ((espaceAtt == null && espace2 == null) || (espaceAtt != null && espaceAtt.equals(espace2))); if (match) nEnfant = enfanti; } } } final AffichageFormulaire affEnfant = new AffichageFormulaire(refAttributPossible, nEnfant, this, doc, true); affEnfants.add(affEnfant); placerAffichage(affEnfant, panelEnfants, c, pos++, false); } for (final Element refEnfantPossible : refEnfantsPossibles) { boolean unEnfant = false; if (enfants != null) { final int enfantsSize = enfants.size(); for (int i = 0; i < enfantsSize; i++) { final Node nEnfant = enfants.get(i); if (nEnfant instanceof Element) { final Element refEnfant; refEnfant = cfg.getElementRef((Element) nEnfant); if (refEnfant == refEnfantPossible) { final AffichageFormulaire affEnfant = new AffichageFormulaire(refEnfant, nEnfant, this, doc, false); affEnfants.add(affEnfant); final Element refip1; if (i + 1 < enfantsSize) { final Node enfantip1 = enfants.get(i + 1); if (enfantip1 instanceof Element) refip1 = cfg.getElementRef((Element) enfantip1); else refip1 = null; } else refip1 = null; final boolean dernier = (refAjout == null && refip1 != refEnfant); placerAffichage(affEnfant, panelEnfants, c, pos++, dernier); unEnfant = true; } } } } if (!unEnfant || refEnfantPossible == refAjout) { final AffichageFormulaire affEnfant = new AffichageFormulaire(refEnfantPossible, null, this, doc, false); affEnfants.add(affEnfant); placerAffichage(affEnfant, panelEnfants, c, pos++, true); } } } }