/** * Renvoit le JPanel de droite, avec la valeur modifiable. Utilisé dans le cas où il n'y a pas * d'enfants. */ private JPanel getPanelDroite(final boolean dernier) { panelDroite = new JPanel(new BorderLayout()); String valeur = ""; if (noeud != null) { if (attribut) valeur = noeud.getNodeValue(); else { final Node firstChild = ((Element) noeud).getFirstChild(); if (firstChild != null && firstChild.getNodeType() == Node.TEXT_NODE) valeur = firstChild.getNodeValue(); } } if (attribut || cfg.contientDuTexte(refNoeud)) { ArrayList<String> enumeration; if (attribut) enumeration = cfg.listeValeursAttribut(refNoeud); else enumeration = cfg.listeValeursElement(refNoeud); final String[] tvalbool = {"true", "false", "1", "0"}; if (enumeration != null && Arrays.equals(enumeration.toArray(), tvalbool)) { final String titre = getTitre(); final JCheckBox cb = new JCheckBox(titre); if ("true".equals(valeur.trim()) || "1".equals(valeur.trim())) cb.setSelected(true); cb.addItemListener(this); comp = cb; } else if (enumeration != null) { listeValeurs = new ArrayList<String>(enumeration); if (!listeValeurs.contains(valeur)) listeValeurs.add(valeur); if (!obligatoire() && !listeValeurs.contains("")) listeValeurs.add(""); final List<String> titresValeurs = new ArrayList<String>(listeValeurs.size()); for (final String val : listeValeurs) { final String titreValeur; if (attribut) { final Element refParent = affParent.getNoeudRef(); titreValeur = cfg.titreValeurAttribut(refParent, refNoeud, val); } else titreValeur = cfg.titreValeurElement(refNoeud, val); titresValeurs.add(titreValeur); } final JComboBox cb = new JComboBox(titresValeurs.toArray()); final String titreValeur; if (attribut) { final Element refParent = affParent.getNoeudRef(); titreValeur = cfg.titreValeurAttribut(refParent, refNoeud, valeur); } else titreValeur = cfg.titreValeurElement(refNoeud, valeur); cb.setSelectedItem(titreValeur); cb.addItemListener(this); comp = cb; } else { final ArrayList<String> listeValeursSuggerees; if (attribut) { final Element refParent = affParent.getNoeudRef(); listeValeursSuggerees = doc.cfg.listeValeursSuggereesAttribut(refParent, refNoeud); } else listeValeursSuggerees = doc.cfg.listeValeursSuggereesElement(refNoeud); if (listeValeursSuggerees != null && listeValeursSuggerees.size() > 0) { listeValeurs = new ArrayList<String>(listeValeursSuggerees); if (!listeValeurs.contains(valeur)) listeValeurs.add(valeur); final List<String> titresValeurs = new ArrayList<String>(listeValeurs.size()); for (final String val : listeValeurs) { final String titreValeur; if (attribut) { final Element refParent = affParent.getNoeudRef(); titreValeur = cfg.titreValeurAttribut(refParent, refNoeud, val); } else titreValeur = cfg.titreValeurElement(refNoeud, val); titresValeurs.add(titreValeur); } final JComboBox cb = new JComboBox(titresValeurs.toArray()); cb.setEditable(true); final String titreValeur; if (attribut) { final Element refParent = affParent.getNoeudRef(); titreValeur = cfg.titreValeurAttribut(refParent, refNoeud, valeur); } else titreValeur = cfg.titreValeurElement(refNoeud, valeur); cb.setSelectedItem(titreValeur); cb.addItemListener(this); comp = cb; } else { final JTextField tf = new JTextField(valeur); tf.getDocument().addDocumentListener(this); comp = tf; } } panelDroite.add(comp, BorderLayout.CENTER); if (!"".equals(valeur)) { if (attribut) setValidite(cfg.attributValide(refNoeud, valeur)); else setValidite(cfg.valeurElementValide(refNoeud, valeur)); } } if (!attribut && affParent != null && affParent.enfantsMultiples(refNoeud)) { final JPanel panelBoutons = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0)); if (dernier) { final JButton boutonPlus = new JButton("+"); boutonPlus.setAction( new AbstractAction("+") { public void actionPerformed(final ActionEvent e) { affParent.ajouterAffichageEnfant(AffichageFormulaire.this); } }); panelBoutons.add(boutonPlus); } final JButton boutonMoins = new JButton("-"); boutonMoins.setAction( new AbstractAction("-") { public void actionPerformed(final ActionEvent e) { affParent.retirerAffichageEnfant(AffichageFormulaire.this); } }); panelBoutons.add(boutonMoins); panelDroite.add(panelBoutons, BorderLayout.EAST); } panelDroite.setBorder(BorderFactory.createEmptyBorder(1, 0, 1, 0)); return (panelDroite); }