Cette section explique comment écrire un template Freemarker qui utilise le contexte provenant :
Un model du XML component oblige l'utilisateur à sélectionner le fichier ou répertoire. Un modèle est typé :
La définition de ce type de modèle qui oblige à sélectionner un fichier XML permet de charger dans un DOM Freemarker ce fichier. Ce DOM peut ensuite être utilisé dans le template. Vous pouvez trouver plus d'information dans la documentation de Freemarker.
Voici un exemple de template Freemarker qui utilise ce modèle de type xml enregistré avec la clé doc :
<#assign classElement = doc["hibernate-mapping"].class /> <#list classElement.property as item> private ${item.@type} ${item.@name}; </#list>
La définition de ce type de modèle qui oblige à sélectionner un fichier de propriétés permet de récupérer une instance de la classe net.sourceforge.akrogen.core.internal.code.properties.ExtendedProperties avec les propriétés chargées.
Cette classe hérite de java.util.LinkedHashMap qui est une java.util.Map.
Vous pouvez trouver plus d'information concernant l'utilisation d'un modèle de type java.util.Map dans la documentation de Freemarker.
Voici un exemple de template Freemarker qui utilise ce modèle de type properties enregistré avec la clé prop :
<#assign properties = prop.properties /> <#list properties?keys as key> key : ${key} value : ${properties[key]} </#list>
La définition de ce type de modèle qui oblige à sélectionner une classe JAVA permet de récupérer une instance de l'interface de type org.eclipse.jdt.core.IType qui permet de naviguer dans les méthodes de type org.eclipse.jdt.core.IMethod, et champs de type org.eclipse.jdt.core.IField de la classe Java sélectionné.
Voici un exemple de template Freemarker qui utilise le modèle de type class JAVA enregistré avec la clé pojo :
<#list pojo.fields as f> <property name="${f.elementName}" type="${f.typeSignature?substring(1)}" column="${f.elementName}" /> </#list>
La définition de ce type de modèle qui oblige à sélectionner un répertoire permet de récupérer une instance de la classe java.io.File du répertoire sélectionné.
Voici un exemple de template Freemarker avec une syntaxe square bracket qui utilise le modèle de type folder enregistré avec la clé dir :
... [#list dir.listFiles() as f] <treeitem checked="true" > <treerow> [#assign isDirectory = f.isDirectory() /] [#if isDirectory] <treecell label="DIRECTORY : ${f.name}" /> [#else] <treecell label="FILE : ${f.name}" /> [/#if] </treerow> </treeitem> [/#list] ...
Le type de la valeur de ce contrôle XUL dans le template est java.lang.String.
Voici un exemple de template Freemarker qui utilise la valeur de contrôle XUL :
textbox parameter: ${textboxParam}
où textboxParam est la valeur du contrôle XUL d'id textboxParam.
Mais si ce contrôle est lié à un type de bouton la valeur utilisé dans le template est une instance d'un objet qui diffère selon le type du bouton :
Dans ce cas-ci, la valeur du contrôle utilisé dans le template est de type org.eclipse.jdt.core.IType. Pour avoir un bouton qui permet de rechercher une classe JAVA, mais que la valeur du contrôle utilisé dans le template soit de type java.lang.String autrement dit pour avoir le nom de la classe JAVA sélectionné, vous devez typer le bouton en classText et pas en class.
Le type de la valeur de ce contrôle XUL dans le template est java.lang.Boolean. Si le contrôle est sélectionné sa valeur est true et false sinon.
Voici un exemple de template Freemarker qui utilise la valeur de contrôle XUL :
checkbox parameter is <#if checkboxParam >checked<#else>not checked</#if>
où checkboxParam est la valeur du contrôle XUL d'id checkboxParam.
Le type de la valeur de ce contrôle XUL dans le template est java.lang.Boolean. Si le contrôle est sélectionné sa valeur est true et false sinon.
Voici un exemple de template Freemarker qui utilise la valeur de contrôle XUL :
radio 1 is <#if radio1Param >selected<#else>not selected</#if> radio 2 is <#if radio2Param >selected<#else>not selected</#if> radio 3 is <#if radio3Param >selected<#else>not selected</#if>
où radio1Param est la valeur du contrôle XUL d'id radio1Param.
Le type de la valeur de ce contrôle XUL dans le template est java.lang.Boolean. Si le contrôle est sélectionné sa valeur est true et false sinon.
Voici un exemple de template Freemarker qui utilise la valeur de contrôle XUL :
radio 1 is <#if radio1Param >selected<#else>not selected</#if> radio 2 is <#if radio2Param >selected<#else>not selected</#if> radio 3 is <#if radio3Param >selected<#else>not selected</#if>
où radio1Param est la valeur du contrôle XUL d'id radio1Param.
Le type de la valeur de ce contrôle XUL dans le template est java.lang.String.
Voici un exemple de template Freemarker qui utilise la valeur de contrôle XUL :
Value of first combo: ${firstCombo}
où firstCombo est la valeur du contrôle XUL d'id firstCombo.
TODO
Le type de la valeur de ce contrôle XUL dans le template est org.eclipse.swt.widgets.Table.
Voici un exemple de template Freemarker qui utilise la valeur de contrôle XUL :
<#assign itemCount = fields.getItemCount() /> <#-- Fields declaration --> <#if itemCount != 0 > <#list 0..itemCount -1 as i> <#assign tableItem = fields.getItem(i) /> <#assign fieldName = tableItem.getText(0) /> <#assign fieldType = tableItem.getText(1) /> private ${fieldType} ${fieldName}; </#list> </#if>
où fields de type org.eclipse.swt.widgets.Table est la valeur du contrôle XUL d'id fields.