Etendre les possibilités de JAlbum avec de nouveaux skins
|
Vous pouvez complètement personnaliser l'aspect et le comportement des albums réalisés
avec JAlbum en créant de nouveaux skins.
Un skin est un dossier (répertoire) contenant les fichiers de définissions et les images que JAlbum
va utiliser pour la création de l'album. JAlbum recherche les skins dans un dossier "skins" sous le
dossier parent du programme et affiche la liste dans sa fenêtre.
Vous êtes ici dans la section de référence pour la création des skins. Si vous êtes intéressés
par la création, je vous recommande de lire d'abord le guide sur le même sujet.
|
|
Organisation d'un skin
L'organisation des fichiers et dossier se présente comme suit :
index.htt -Fichier modèle pour les pages index
slide.htt -Fichier modèle pour les pages d'images
frameset.htt -Modèle optionnel pour les albums qui utilisent des "frames" (cadres)
hints.jap -Fichier optionnel avec des réglages de disposition (taille d'images ...) Le format
est identique à celui des fichiers "projet" de JAlbum
init.bsh -Fichier optionnel contenant un script BeanShell qui sera exécuté lors de la création de l'album
onload.bsh -Optional file containing BeanShell script that is to be executed on skin selection/loading (since v.4.1)
preview.jpg -Image optionnelle servant à pré visualiser l'album
Dossier: \res qui contient les fichiers suivant :
folder.gif -Icône utilisée pour les liens vers des dossiers
movie.gif -Icône utilisée pour les liens vers des films
Toutes les autres images et fichiers dont vous avez besoin. Tous ces fichiers sont recopiés dans un dossier res dans le dossier de l'album.
styles
Fichiers page de style. A sélectionner dans JAlbum. Le fichier sélectionné sera copié en tant que fichier style.css dans le dossier res de l'album créé
Les fichiers modèles htt sont des fichiers html qui contiennent certaines $variables et
des éléments spéciaux de jalbum qui seront expansés et interprétés lors de la génération des
différentes pages de l'album.
texts/
- texts_language.properties -Optional file(s). Stores text strings for a certain language for multilingual skins. The language part of the file name is a lowercase ISO two character code Was located in the root directory of a skin prior to v4.5
plugins/
- Optional Java class files specific to this skin (compiled scripts in order to gain speed for instance. Since v5.2)
Les étapes pour créer un skin
- Copiez un dossier skin pour servir de base à votre travail. Renommer ce dossier à
votre goût . (le nom du dossier sera le nom du skin).
- Editez le fichier modèle conformément aux instructions de la section suivante.
section
- Editez les images du dossier gifs et les transformer suivant vos besoins.
- Créez les variations de couleurs et de polices en ajoutant des fichiers de style dans le dossier styles.
(nécessite quelques connaissances en feuilles de styles)
- Sélectionner le nouveau skin dans JAlbum (il sera détecté automatiquement)
et vérifiez le résultat en créant un album.
Variables des fichiers modèles
Pour les fichiers modèles, les variables suivantes sont définies (Respecter la casse).
Ajoutez un signe $ devant les variables afin qu'elles soient remplacées par leurs valeurs.
Je pas ajouter le signe $ lorsque vous faites un test sur l'existence.
(Voir plus bas).
| Nom de la Variable |
Signification |
| title |
Nom du dossier de l'album |
| folder |
N'est définie que si le "fichier" courant est un dosier/répertoire. A utiliser dans un ja:if exists tests (v6) |
level |
Niveau du dossier de l'album (0 = dossier racine) |
| label |
Nom de base de l'mage/film ou dossier (sans l'extension) |
| fileName |
Nom complet de l'mage/film ou dossier (avec l'extension) |
| stylePath |
Chemin du fichier style choisi |
| styleFile |
Nom du fichier de style choisi. Déconseillé. Utilisez stylePath de préférence |
| resPath |
Chemin du dossier "res" contenant les resources de l'album (contenant les fichiers gif boutons etc) |
| indexNum |
Le nombre actuel de pages index 1 |
| totalIndexes |
Le nombre Total de pages index 1 |
| firstIndexPage |
Nom du premier fichier page index |
| lastIndexPage |
Nom du dernier fichier page index |
| previousIndexPage |
Nom du fichier page index précédant 2 |
| nextIndexPage |
Nom du fichier page index suivant 2 |
| parentIndexPage |
Nom du fichier page index parent 2 |
| closeupPath |
Chemin pour aller de la page index à la page image (slide) |
| iconPath |
Chemin des icônes utilisées pour les dossiers. Pas défini pour les fichiers image |
| thumbPath |
Chemin des vignettes |
| imagePath |
Chemin des images vues dans le diaporama (slides) |
| originalPath |
Chemin vers les fichiers images originales. Uniquement défini si il y a un lien entre des
images réduites et des images originales. Si on choisi lien vers images originales seulement, c'est imagePath
qui est utilisé pour le chemin vers les images originales. |
| thumbWidth |
Largeur en pixels des vignettes |
| thumbHeight |
Hauteur en pixels des vignettes |
| imageWidth |
Largeur des images en pixels |
| imageHeight |
Hauteur des images en pixels |
| originalWidth |
Largeur des images originales en pixels |
| originalHeight |
Hauteur des images originales en pixels |
| originalWidthDpi |
|
| originalHeightDpi |
|
| formatName |
Type d'image |
| compressionLevel |
|
| maxImageWidth |
Largeur maximale des images définie par l'utilisateur |
| maxImageHeight |
Hauteur maximale des images définie par l'utilisateur |
| maxThumbWidth |
Largeur maximale des vignettes définie par l'utilisateur |
| maxThumbHeight |
Hauteur maximale des vignettes définie par l'utilisateur |
| skin |
Nom du skin actuel |
| style |
Nom du style actuel |
| cols |
Nombre de colonnes dans les pages index |
| rows |
Nombre maximum de lignes dans les pages index |
| currentRows |
Nombre de colonnes dans la pages index en cours |
| indexImageCount |
Nombre de vignettes dans la page index en cours |
| generator |
Nom et version de JAlbum |
| imageNum |
Numéro de l'image affichée dans une page image (slide) |
| totalImages |
Nombre total d'images dans un dossier |
| totalAlbumImages |
Nombre total d'images dans un album (sous dossier compris) |
| firstPage |
Nom du fichier de la première page du diaporama (slide) |
| lastPage |
Nom du fichier de la dernière page du diaporama (slide) |
| previousPage |
Nom du fichier de la page précédente du diaporama (slide)2 |
| currentPage |
Nom du fichier de la page actuelle du diaporama (slide) |
| nextPage |
Nom du fichier de la page suivante du diaporama (slide) 2 |
| indexPage |
Nom du fichier de la page index pour la page actuelle du diaporama (slide) |
| fileSize |
Taille du fichier original |
| fileDate |
Date du fichier original |
| originalDate |
Date enregistrée par l'appareil photo numérique (APN)3 |
| currentDate |
Date de création de l'album |
| resolution |
Résolution de l'image originale telle qu'enregistrée par l'APN 3 |
| flash |
Utilisation du flash 3 |
| focalLength |
Longueur de la focale 3 |
| exposureTime |
Durée d'exposition 3 |
| isoEquivalent |
ISO équivalent 3 |
| aperture |
Ouverture 3 |
| focusDistance |
Distance de mise au point 3 |
| meteringMode |
Mode de mesure 3 |
| cameraMake |
Marque de l'APN 3 |
| cameraModel |
Model de l'APN 3 |
| sensorType |
Type de capteur 3 |
| comment |
Commentaire. Sera soit extrait de la section commentaires des EXIF, soit de la section
commentaire des fichiers JPEG |
Notes:
1 Non définie si il n'y qu'une page d'index
2 Définie si une telle page existe
3 N'existe que pour les images avec EXIF data
et si "Extraire les EXIF" a été coché dans l'onglet "Avancée"
Vous pouvez lister ces variables et les valeurs actuelles en mettant
<pre><%=current%></pre>
dans le fichier modèle slide.htt.
Il y a davantage de variables accessibles au travers d'objets spéciaux, parmis lesquels les "meta" objets,
mais plus sur le sujet plus tard.
Eléments spécifique à JAlbum
En dehors des variables utilisées pour construire le contenu dynamique des album,
il y a aussi quelques éléments utiles spécifique à JAlbum:
Tester l'existence de variables
Pas toutes les Variables sont variable tout le temps. Si une variable est indisponible
elle va apparaître non renseignée dans la page générée. Pour empêcher cela lorsque l'on est pas certain que la variable existe, il convient de tester au préalable son existence.
Dans l'exemple suivant, on ajoute un lien vers la page suivante, si il n'y a plus de plage suivante, on remplace "page suivante" par "Dernière page":
<ja:if exists="nextPage">
<A HREF="$nextPage">Next</A>
</ja:if>
<ja:else>
At last page
</ja:else>
Cet exemple teste l'existence d'information sur l'usage du flash par l'APN:
<ja:if exists="flash">Flash used: $flash</ja:if>
<ja:else>No flash information found</ja:else>
Tester en général
N'importe quelle condition peut être testée avec la syntaxe suivante:
<ja:if test="true">This will be included</ja:if>
<ja:if test="false">This will NOT be included</ja:if>
L'exemple ci-dessus peut paraître stupide, mais peut être utilisé pour exclure un bloc entier de code.
Il est plus commun d'utiliser un petit script pour afficher la valeur d'un résultat de test.
(Davantage d'info sur les scripts plus bas):
<ja:if test="<%= engine.isHighQualityScaling() %>">
These images have been scaled with the high quality setting
</ja:if>
Inclusions dans les Pages
Il est courant de vouloir ajouter des en tête/pieds de pages/barres de navigations et autres éléments web
à l'album de façon à s'intégrer mieux dans un site existant.
Cela peut être réalisé facilement avec les éléments "include":
<ja:include page="C:\mysite\header.inc" />
<ja:include page="header.inc">This text will show if the page does not exist</ja:include>
L'attribut inclus peut être un chemin absolu ou un chemin relatif par rapport au dossier image.
Pour inclure des pages relatives au dossier de destination, utilisez un petit script comme celui-ci:
<ja:include page="<%=new File(outputDirectory, "header.inc")%>" />
Les pages inclues peuvent contenir des variables, scriptlets et autres éléments "include".
Cet exemple final inclus un fichier test portant le même nom de base qu'une image.
L'image "foo.jpg" va recevoir du texte depuis un fichier "foo.txt" etc. Cela convient pour inclure de simples commentaires ou pour ajouter des code html à certaines image:
<ja:include page="<%= new File(imageDirectory, label+".txt")
%>" />
Eléments Iterator
La page d'index nécessite l'usage d'une paire d'éléments appelés "iterator".
Le contenu du "row iterator" externe est répété pour chaque ligne d'images et le contenu du "column iterator"
interne est répété pour chaque image. Les variables spécifiques aux images n'existent dans colum iterator
que pour les modèles d'index. Pour faire une page d'index valide minimale pour tester,
écrivez le code suivant (Le code suivant liste l'ensemble des noms des images d'un dossier):
<ja:rowiterator>
<ja:coliterator>
$label
</ja:coliterator>
</ja:rowiterator>
Les row and column iterators sont en général utilisés dans des tableaux comme ceci:
<!-- Iterate through images and produce an index table -->
<TABLE>
<ja:rowiterator>
<TR>
<ja:coliterator>
<TD VALIGN="bottom">
<A HREF="$closeupPath">
<ja:if exists="iconPath">
<!-- No frames around icons like folders and movie files -->
<IMG SRC="$iconPath" WIDTH="$thumbWidth" HEIGHT="$thumbHeight" BORDER=0>
<BR>
</ja:if>
<ja:else>
<IMG CLASS="image" SRC="$thumbPath"
WIDTH="$thumbWidth" HEIGHT="$thumbHeight" BORDER=0><BR>
</ja:else>
<SMALL>$label</SMALL>
</A>
</TD>
</ja:coliterator>
</TR>
</ja:rowiterator>
</TABLE>
Créer des liens corrects.
JAlbum essaye de permettre une création de liens très souple vers le images.
L'interface utilisateur perme trois types de liens:
- Lien vers les images originales depuis la page d'index
- Lien vers les images originales depuis la page d'index ou via la page des images (redimensionnées)
- Lien vers les images redimensionnées uniquement
Lorsque vous créez un modèle, il est important d'utiliser les bonnes variables en testant
l'existence de ces variables afin de ne créer que les liens qui ont un sens. Le code au-dessus montre
un exemple de liens corrects depuis une page index vers une page image (ou diaporama) en utilisant
la variable $closeupPath. pour un modèle de page "slide" ,
la création des liens devrait être comme suit:
<!-- Image, maybe with link to original -->
<ja:if exists=originalPath>
<A HREF="$originalPath">
<IMG SRC="$imagePath" WIDTH="$imageWidth" HEIGHT="$imageHeight"
BORDER=0 ALT="Original image">
</A>
</ja:if>
<ja:else>
<IMG SRC="$imagePath" WIDTH="$imageWidth" HEIGHT="$imageHeight">
</ja:else>
Création de scripts
JAlbum est équipé de BeanShell, un langage de programmation
très puissant de type Java. avec les scripts vous avez la possibilité d'ajouter toutes les fonctions
imaginables aux albums. Dans des <% scriptlets %> spéciaux vous pouvez ajouter
toutes les expressions java valides que vous souhaitez.
Les "Scriptlets" peuvent être inclus dans les fichiers modèles de skin de jalbum (index.htt and slide.htt)
ou à l'intérieur des fichiers de style des skins.
Voici quelques exemples. Copiez et collez les dans un skin pour les exécuter lors de la création de l'album.
Calculs ordinaires: <%= 5*(3+2) %> --> 25
Accéder aux variables: <%= thumbWidth*2 %>
Avertissement sur la taile des image et utilisation de variables dans du texte:
<%
if (fileSize > 1500000)
out.print("Original file is large ($fileSize bytes).");
%>
Création de liens numérotés de type "Google" vers d'autres pages index:
<%
if (totalIndexes == void) return; // totalIndexes only exist if several index pages
for (i=1; i<=totalIndexes; i++) {
if (i == indexNum) out.print(" <b>" + i + "</b>"); // Emphasize current index page
else {
out.print("<a href=\"" + engine.getIndexPageName() + (i==1?"":i)
+ engine.getPageExtension() + "\">" + " " + i + "</a>");
}
}
%>
Les scripts peuvent être réalisés avec trois syntaxes:
Scriptlet ordinaire: <% ... %>
Les valeurs de ce scriptlet sont sortis vers la page: <%= ... %>
Syntax ancienne/alternative pour ci-dessus: <eval> ... </eval>
Utilisez les scripts pour construire des skins évolués contenant des cadres
dynamiques pour les images etc. Vous avez accès à toute la puissance de java +
et aux nombreux et pratiques "implicit objects" pour vous aider. (voir plus bas).
Bypassing (passer la main aux) scriptlets
Lorsque vous créez des fichiers album qui contiennent des "scriptlets" qui doivent êtres traités par un
moteur ASP ou JSP au lieu de JAlbum, il est nécessaire de dire à JAlbum d'ignorer ces scriptlets
et de les passer sur la page générée.
Ceci est fait de la façon suivante:
<ja:ignore>
<% This could be some ASP code %>
</ja:ignore>
Objets Implicit
En complément à l'accès aux variables ordinaires dans les scrips, JAlbum
fourni aussi quelques objects spéciaux (Java type entre parenthèses):
- out - Ecriture dans la Page. Imprimer vers out met le résultat dans la p résultante (PrintWriter)
- application -Container pour accès aux variables actuelles de JAlbum (Map)
- album -Container pour accès aux variables de la géneration d'album en cours
(Map)
- current -Container pour accès aux variables de l'image en cours
(Map)
- previous -Container pour accès aux variables de l'image précédente (Map)
- next -Container pour accès aux variables de l'image suivante (Map)
- meta -Container pour accès aux variables des (EXIF etc) à l'intérieur d'image (Map)
- programDirectory -File object representant le dossier JAlbum en cours (File)
- imageDirectory -File object representant le dossier image en cours (File)
- outputDirectory -File object representant le dossier destination en cours (File)
- files -Collection de File objects pour le dossier images et mediafiles dans
le dossier image en cours (File[])
- fileVariables -Container de containers pour accès aux variables
de chaque image. Utilisez File objects from files comme clé. current
par exemple est un racourci pour
fileVariables.get(files[imageNum-1])
(Map)
- engine -The album generating JavaBean inside JAlbum. Voir API (AlbumBean)
- window -La fenêtre de JAlbum, utile pour créer des fenêtres popup comme le selecteur de couleurs etc (Frame)
Nota: "current", "previous" and "next" sont accessible pour les pages slides
ou depuis un ja:coliterator dans les pages index
L'objet "meta" contient généralement plus de metadata EXIF que ceux accessible à partir des $variables, mais souvent dans un format raw .
Vous pouvez tester (lister) toutes les metadata trouvées dans une image en mettant le code suivant dans un fichier slide.htt (JAlbum v2.8):
<ja:if exists="meta">
<pre><%= meta %></pre>
</ja:if>
Il est très important de vérifier l'existence d'un objet avant d'y accéder.
Si il n'y a pas de metadata dans une image, "l'objet meta" n'existe pas.
Faire référence à un objet qui 'existe pas , va causer une erreur de script.
L'exemple suivant cherche la variable "Owner Name" (nom de l'utilisateur)dans l'objet meta
(en supposant qu'elle existe, ce qui est le cas avec certains APN de Canon):
<ja:if exists="meta">
<%= meta.get("Owner Name") %>
</ja:if>
What's next?
Je vous recommande maintenant d'xaminer quelques scripting examples pour voir toute la puissance contenue dans BeanShell.
|