Visit Mozilla.org

Places:Conteneurs personnalisés

Un article de MDC.

Cette page vient d'être traduite, mais elle a besoin d'un relecteur différent du traducteur. Pensez également à toujours vérifier le contenu avec sa toute dernière version en anglais.
À VENIR DANS FIREFOX 3
Cet article fournit des informations s'appliquant uniquement à Firefox 3, qui est toujours en cours de développement.

Un conteneur personnalisé permet aux extensions, ou autres services, de fournir dynamiquement des résultats pour les dossiers de la bibliothèque. Vous devriez lire et vous familiariser avec le système de requêtes de Places pour comprendre comment les requêtes et les résultats sont corrélés avant de lire ce document.


[modifier] Conteneur distant

Les conteneurs distants sont un moyen pour les développeurs d'extensions ou autre de fournir du contenu à partir d'une requête de la bibliothèque. Premièrement vous devez créer un composant qui implémente nsIRemoteContainer. Vous créez ensuite un dossier de marque-pages associé à votre composant en utilisant : nsINavBookmarksService.createContainer. Où le paramètre type est une chaine de caractère contenant l'identifiant (ID) du contrat de votre composant. Le service des marque-pages et des autres composants appellera CreateService en utilisant cet identifiant (ID) du contrat pour obtenir votre implémentation de nsIRemoteContainer.

Une fois que votre service est associé avec un dossier, il obtiendra des notifications quand le dossier sera déplacé ou supprimé. (Les notifications liées à l'ouverture ou à la fermeture d'un conteneur sont pour l'instant commentés à cause d'un manque de test). En réponse à ces opérations, votre service devrait mettre à jour toutes les informations de marque-page associé au dossier. Votre service peut aussi déclarer les éventuels descendants en lecture seule où s'ils peuvent être modifiés comme des marque-pages traditionnels.

[modifier] Modes

Il existe deux modes opératoires que les implémentations des conteneurs distants peuvent utiliser. Premièrement, ils peut se comporter comme un fournisseur de marque-pages et créer des marque-pages réels à l'intérieur d'un dossier de marque-page traditionnel. Un exemple peut être trouvé à l'emplacement : service de marque-pages dynamiques . Le service de marque-pages dynamiques consulte un flux et crée les marques-pages dans un dossier correspondants aux entrées de ce flux. Ces marque-pages sont gérés par le service de marque-pages, en conséquence le service de marque-pages dynamiques ne s'intéresse pas à l'ouverture ou à la fermeture des conteneurs. Il doit uniquement gérer les cas où un dossier est déplacé ou supprimé (pour mettre à jour les informations qui associent un flux avec le dossier). Il doit aussi déclarer que les marque-pages dynamiques sont en lecture seule.

Le deuxième mode opération est plus actif. Ce mode est pour l'instant non supporté. L'appel de la fonction est commenté en attendant plus de tests. Ces services peuvent fournir une réponse à l'ouverture ou la fermeture d'un conteneurs et peuplé les résultats à l'execution. Ils peuvent ainsi générer des contenus plus dynamique au moment de leur affichage. Quand un dossier avec un conteneur de ce type est ouvert, le service sera notifié et il lui sera fourni le nœud résultant pour le conteneur. Le service peut alors créer une descendance dans ce conteneurs en utilisant appendURINode, appendFolderNode, etc. À noter que appendContainerNode peut être utilisé pour créer des conteneurs distants supplémentaires. Ceux-ci ne sont associés à aucun dossier de marque-pages (vous pouvez utiliser appendFolderNode pour cela). Par exemple, un navigateur de fichier peut être créer qui lui même crée dynamiquement des conteneurs associés aux sous dossiers. Gardez en mémoire que chaque conteneur à un ensemble de propriétés qui peuvent être utilisé pour associer des informations aléatoires avec le nœud d'un tel chemin.