Properties

La mise à jour d'un fichier de propriétés consiste à mettre à jour les valeurs des propriétés d'un fichier de propriétés.

Ceci nécéssite de :

  • définir un modèle de type properties dans le component. Cette définition permet d'indiquer au component le fichier de propriétés à modifier. La défintion de ce modèle forcera ensuite l'utilisateur qui ouvre ce component à selectionner le fichier de propriétés à modifier :
      <models>
            <model key="prop" type="properties" />
      </models>
  • définir à travers la défintion file le fichier de propriétés à modifier (qui a été définit dans le modèle de type properties).
      <output>
        <file key="prop" >
        </file>
      </output>

    Pour indiquer le fichier de propriétés à modifier (qui a été définit dans le modèle), l'attribut key de l'élement file doit faire référence à l'attribut key de l'élement model.

  • les ID des contrôles XUL doivent faire référence au nom de la propriétés à mettre à jour.

Le modèle prop est de type net.sourceforge.akrogen.core.internal.code.properties.ExtendedProperties qui étend de la classe java.util.LinkedHashMap.

Example

Par exemple pour le fichier de propriétés :

####### form fields properties
myform.myfield1.text=My field 1
myform.myfield2.text=My field 2
 
# log properties 
# available values are : INFO,DEBUG,WARN,ERROR,FATAL
log=INFO 

Il est possible d'écrire un XML component pour afficher le Wizard page suivant :

La propriété log peut avoir plusieurs valeurs possibles INFO,DEBUG,WARN,ERROR,FATAL. Une dropdownlist XUL permet de rendre plus convivial la mise à jour de cette propriété.

XML Component

Voici le XML component qui permet de gérer ce fichier de propriétés :

 <?xml version="1.0" encoding="UTF-8"?>
<component dynamic="true" >
  <models>
        <model key="prop" type="properties" useIntoInput="true" />
  </models>
  <input>
    <page title="Update properties file" >
        <description>Update properties file</description>
        <box flex="1" id="" orient="vertical"
             xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">          
          [#assign properties = prop.properties /]
          <hbox>
            <label value="myform.myfield1.text: " />
            <textbox id="myform.myfield1.text" value="${properties['myform.myfield1.text']}" flex="1" />
          </hbox>
          <hbox>
            <label value="myform.myfield2.text: " />
            <textbox id="myform.myfield2.text" value="${properties['myform.myfield2.text']}" flex="1" />
          </hbox>    
          <hbox>
              [#assign logValues = ['INFO','DEBUG','WARN','ERROR','FATAL'] /]
              <label value="log:" />
              <menulist id="log" selected="DEBUG" >
                <menupopup>
                      [#list logValues as l]
                  <menuitem label="${l}" [#if l == properties['log']] selected="true" [/#if] />
                  [/#list]
                </menupopup>
              </menulist>
          </hbox>                
          <hbox>
            <button type="preview" label="Preview..." />
          </hbox>                       
        </box>                  
    </page>
  </input>
  <output>
    <file key="prop" />
  </output>
</component>