HOWTO développement Sashipa

 

 ValueFormat : les formats des valeurs de colonnes.

Vous souhaitez préciser un format pour votre colonne, tel qu'un format téléphonique, une année, un email, une url, etc..

 

Référencer un format prédéfini au niveau du language.

Les formats par défaut sont définis à la fin du fichier de language que vous utilisez (un fichier <melbalab-home>/src_xml/resources/SashipaXXX.xml). Il existe un format par défaut pour chaque type de colonne (text, integer, float, money, boolean, date, time, dateTime). Lorsque vous ne définissez pas de format pour une colonne, c'est le format par défaut du type de colonne qui est utilisé.

Certains formats supplémentaires sont de plus définis d'office (dans l'élément predefinedValueFormatSet de votre fichier de language). Nous voyons dans cette section comment les référencer.

C'est une information que l'on spécifie dans la déclaration d'une schemaColumn. Voici le code :

  <schemaColumn name='cta_TelPortable' type='text'
                maxCharacters='20' notNull='no'>
    <physicalName>TelPortable</physicalName>
    <singularName>Téléphone portable</singularName>
    <shortName>Tél portable</shortName>
    <guiConfigSchemaColumn letterCount='20' sort='asc' />
    <valueFormatRef valueFormat='text_telephone' />
  </schemaColumn≶

Remarques :

  • Un valueFormat est typé. Faites bien attention à ne pas utiliser un format de type text (comme ici, text_telephone) avec une colonne de type integer par exemple.

  • Pour avoir la liste des formats disponibles en standard, il vous faut éditer votre fichier de language, puis regarder l'élément predefinedValueFormatSet.

Attention : si vous modifiez votre fichier de language, prenez garde à utiliser un éditeur qui lit l'UTF8, car c'est l'encodage utilisé pour ces fichiers. De plus, il n'est vraiment pas recommendé de modifier ces fichiers car ils sont susceptibles d'être modifiés à chaque nouvelle version du MelbaLab. Créez-en une copie et travaillez sur la copie.

 

Créer son propre format.

Vous pouvez définir un format propre à votre colonne en l'incluant simplement de cette manière là :

  <schemaColumn name='cta_TelPortable' type='text'
                maxCharacters='20' notNull='no'>
    <physicalName>TelPortable</physicalName>
    <singularName>Téléphone portable</singularName>
    <shortName>Tél portable</shortName>
    <guiConfigSchemaColumn letterCount='20' sort='asc' />
    <textFormat name='text_telephone'>
      <displayTextFormatTelephone actionWhenInvalid='displayWithoutFormat'>
        <telephoneFormat>XX.XX.XXX.XXX</telephoneFormat>
        <validLetters>,()+0123456789</validLetters>
        <ignoredCharacter>.</ignoredCharacter>
        <ignoredCharacter> </ignoredCharacter>
      </displayTextFormatTelephone>
      <exportTextFormatTelephone actionWhenInvalid='exportWithoutFormat'>
        <telephoneFormat>XXXXXXXXXX</telephoneFormat>
        <validLetters>,()+0123456789</validLetters>
        <ignoredCharacter>.</ignoredCharacter>
        <ignoredCharacter> </ignoredCharacter>
      </exportTextFormatTelephone>
      <saveTextFormatTelephone actionWhenInvalid='error'>
        <validLetters>,()+0123456789</validLetters>
        <ignoredCharacter>.</ignoredCharacter>
        <ignoredCharacter> </ignoredCharacter>
      </saveTextFormatTelephone>
    </textFormat>
  </schemaColumn≶

Remarques :

  • Ici j'ai mis en gras ce que j'ai modifié : le format d'affichage et d'export du téléphone.

  • Pour connaître les possibilités des formats, prenez exemple sur votre fichier de language (encore lui :)

 

Référencer un format prédéfini au niveau du moteur.

Vous pouvez enfin utiliser un des formats fourni par le moteur. Il en existe deux : predefinedFormat_textUrl et predefinedFormat_textEmail. Voici un exemple :

  <schemaColumn name='cta_Email1' type='text'
                maxCharacters='100' notNull='no'>
    <physicalName>Email1</physicalName>
    <singularName>Email 1</singularName>
    <guiConfigSchemaColumn letterCount='20' sort='asc' />
    <valueFormatRef valueFormat='predefinedFormat_textEmail' />
  </schemaColumn>

Ces formats ont un effet sur les textField qui travaillent avec. Il devient possible d'ouvrir le navigateur ou le messagerie à partir de l'application générée ; en appuyant simultanément sur la touche CTRL et en cliquant sur le champ. Ou bien par le menu contextuel du champ.

Mais du coup, il faut définir les commandes pour ouvrir les navigateurs et clients emails en local. Ceci se fait en fin de fichier dans les paramètres par défaut. On rajoute les deux paramètres suivants :

  <defaultParameterSet>

    ...

    <defaultParameter applyOn='externalCommandList' type='browser'>
      <externalCommand>
        <commandName>Mozilla (Linux)</commandName>
        <commandBegin>mozilla </commandBegin>
        <commandEnd />
      </externalCommand>
      <externalCommand>
        <commandName>Mozilla (Windows)</commandName>
        <commandBegin>"C:\Program Files\mozilla.org\Mozilla\mozilla" </commandBegin>
        <commandEnd />
      </externalCommand>
      <externalCommand>
        <commandName>Internet Explorer</commandName>
        <commandBegin>"C:\Program Files\Internet Explorer\IEXPLORE.EXE" </commandBegin>
        <commandEnd />
      </externalCommand>
    </defaultParameter>

    <defaultParameter applyOn='externalCommandList' type='emailClient'>
      <externalCommand>
        <commandName>Mozilla Mail (Linux)</commandName>
        <commandBegin>mozilla -mail mailto:</commandBegin>
        <commandEnd />
      </externalCommand>
      <externalCommand>
        <commandName>Mozilla Mail (Windows)</commandName>
        <commandBegin>"C:\Program Files\mozilla.org\Mozilla\mozilla" -mail mailto:</commandBegin>
        <commandEnd />
      </externalCommand>
      <externalCommand>
        <commandName>Outlook Express</commandName>
        <commandBegin>"C:\Program Files\Outlook Express\msimn.exe" /mailurl:mailto:</commandBegin>
        <commandEnd />
      </externalCommand>
    </defaultParameter>
  </defaultParameterSet>

Remarques :

  • On définit une liste de commandes pour les urls, et de même pour les emails. Et non pas une unique commande pour chacun. Lorsque l'utilisateur demandera l'action par défaut (CTRL+Clic dans le textField), les commandes seront exécutées dans l'ordre, une à une, jusqu'à ce que l'une d'elle ne renvoie pas d'erreur. Ici on tente d'ouvrir Mozilla, puis Internet Explorer à défaut.

  • Le nom de la commande (commandName) sera utilisé dans le menu contextuel.

  • Si vous oubliez de définir ces listes de commandes et que vous référencez un des formats qui les utilisent, vous aurez une erreur à l'exécution.

 

© Copyright 2003 Sashipa-Melba Team. Ce document de la technologie Sashipa-Melba est sous licence GNU FDL Vous pouvez le copier et modifier librement les copies tant que cette mention apparaît clairement.