Maîtriser le menu contextuel dans un OfficeBean



Documents pareils
OpenOffice.org Calc Ouvrir un classeur

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Comment créer un diagramme de Gantt avec OpenOffice.org

Comment sauvegarder ses documents

Déploiement OOo en environnement Windows Terminal Server

Comment faire un Mailing A partir d une feuille Calc

Comment faire des étiquettes

Insérer des images dans Base

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Comment consolider des données

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Comment Créer une Base de Données Ab Initio

Utiliser un proxy sous linux

Création de Sous-Formulaires

OpenOffice.org Présentation - Débuter. Distribué par Le projet OpenOffice.org

Installation d'un serveur RADIUS

NTP (Network Time Protocol)

Le publipostage avec Open Office

Installation d'un TSE (Terminal Serveur Edition)

Installation de Vmware serveur Windows

Les GPO 2012 server R2 (appliqués à Terminal Serveur Edition)

Impress / Présentation

StarDraw, le module de dessin de StarOffice 6/7

Comment récupérer un document OOo corrompu. Distribué par Le projet OpenOffice.org

Conversion des documents vers et au départ de OpenOffice.org

Comment Ecrire et Organiser un Document En Utilisant les Fonctions Simples Et les Styles

Java 7 Les fondamentaux du langage Java

Débuter avec le publipostage

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Installer et configurer un serveur WDS sur Server 2012 R2

OpenOffice.org et les bases de données.

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Construire des plug-ins pour SAS Management Console SAS 9.1

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Guide d'installation rapide TFM-560X YO.13

Organiser les informations ( approche technique )

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

OpenOffice Base Gestionnaire de Base de Données

HP Data Protector Express Software - Tutoriel 4. Utilisation de Quick Access Control (Windows uniquement)

Serveur d'archivage 2007 Installation et utilisation de la BD exist

SERVEUR DÉDIÉ DOCUMENTATION

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Package Contents. System Requirements. Before You Begin

On trouvera sur le site du CCDMD un exemple d album construit avec Cantare. (

Travaux pratiques Détermination de la capacité de stockage des données

Comment Travailler Avec des Tableaux

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

DOCUMENTATION - FRANCAIS... 2

@telier d'initiation

Listes de validation dans OpenOffice Calc

SQL Server 2012 Administration d une base de données transactionnelle

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Installation d un patch de mise à jour et d un pack langue dans SugarCRM Open Source 4.5.1

Silfid : Agence de création de site internet, formations et Conseils Retour sommaire

OOo4Kids, la suite OpenOffice adaptée aux enfants

Dans la série LES TUTORIELS LIBRES présentés par le site FRAMASOFT. Premiers pas avec WinPT (cryptographie sous Win) EITIC

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Trier les ventes (sales order) avec Vtiger CRM

Créer un rapport pour Reporting Services

Instructions Mozilla Thunderbird Page 1

DirXML License Auditing Tool version Guide de l'utilisateur

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Tâches planifiées. Chapitre Introduction

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

TD/TP 1 Introduction au SDK d Android

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

Tutoriel de formation SurveyMonkey

Manuel d'utilisation d'apimail V3

Le meilleur de l'open source dans votre cyber cafe

Découvrez Windows NetMeeting

Publication Assistée par Ordinateur

Plan du cours. Historique du langage Nouveautés de Java 7

AFTEC SIO 2. Christophe BOUTHIER Page 1

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Comment accéder à d Internet Explorer

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

Corrigé de l'atelier pratique du module 5 : Analyse de SQL Server

Guide d installation CLX.PayMaker Office (3PC)

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

Programmer en JAVA. par Tama

Samsung Auto Backup Guide de démarrage rapide

[WINDOWS 7 - LES FICHIERS] 28 avril Logiciel / Windows

SIMATIC. SIMATIC Logon. Gestion des utilisateurs et signatures électroniques. Conditions matérielles et logicielles. Contenu de la livraison 3

Capture Pro Software. Démarrage. A-61640_fr

Compte-rendu de projet de Système de gestion de base de données

Un ordonnanceur stupide

Gestion des documents avec ALFRESCO

Débuter avec OOo Base

GLPI (Gestion Libre. 2 ième édition. Nouvelle édition. de Parc Informatique)

Corrigé de l'atelier pratique du module 3 : Récupération d'urgence

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Support pour les langues s écrivant de droite à gauche

Transcription:

Maîtriser le menu contextuel dans un OfficeBean Diffusé Par Le Projet Documentation d'openoffice.org Version 1.0 Aurélie Schröder Université de Genève Division informatique AurelieSch@netcourrier.com

Table des matières 1 Introduction... 3 2 Utiliser SimpleBean... 4 2.1 Connexion à OpenOffice par BasicOfficeBean... 4 2.2 ContextMenuInterceptor... 5 3 Les modifications à apporter pour atteindre notre but...7 4 Mise en oeuvre... 9 5 Conclusion...12 6 Annexe : code de la fonction notifycontextmenuexecute :...14 7 Crédits... 17 8 Licence... 17 http://fr.openoffice.org 2

1 Introduction Le but de ce document est d'expliquer comment contrôler le menu contextuel sur une application utilisant le traitement de texte d'openoffice.org. Ce document sera traité avec la technologie JAVA mais il est tout à fait envisageable de traduire ce code dans un autre langage (C++, delphi ou Visual Basic) Pour atteindre notre but, nous tenterons de réunir deux exemples du SDK : SimpleBean et ContextMenuInterceptor. SimpleBean permet d'apprendre à utiliser les beans de OfficeBean et ContextMenuInterceptor permet de modifier le menu contextuel dans OpenOffice. Ce document explique quelles sont les modifications à apporter à chacun des exemples et pourquoi. Cette recherche a été faite dans le cadre d'une étude de faisabilité du contrôle de l'interface du traitement de texte de OpenOffice.org. Le but était de donner une interface la plus succincte possible pour que les utilisateurs soient guidés dans leur utilisation. La documentation concernant SimpleBean est au chapitre 16 du SDK. Le chapitre de ContextMenuInterceptor a été égaré et est en cours de re-construction. Nous ne rentrerons pas dans le détail de l'api OpenOffice.org et laissons le lecteur se référer au SDK pour le détail des fonctions utilisées Tout le code utilisé ci-dessous vient du SDK de OpenOffice.org (chapitre OfficeBean pour BasicOfficeBean et Office Development pour le ContextMenuInterceptor). http://fr.openoffice.org 3

2 Utiliser SimpleBean SimpleBean sert à se connecter à OpenOffice.org par l'intermédiaire d'un Bean : BasicOfficeBean. Un bean est un composant que nous pouvons ré-utiliser ainsi que ses méthodes et ses propriétés. L'exemple contient une autre fonctionnalité, non exploitée ici : la possibilité de modifier la visibilité des barres de menu. 2.1 Connexion à OpenOffice par BasicOfficeBean Avant toute chose, il est indispensable de comprendre comment un bean se connecte à OpenOffice.org. Il faut tout d'abord créer un ServiceFactory pour entamer le dialogue entre le bean et OpenOffice.org, dont on se sert comme serveur. Pour mieux maîtriser le paramétrage de OpenOffice.org en mode serveur, veuillez vous référer au chapitre First Step du SDK. // Etablir une connexion par une demande au ServiceFactory XmultiComponentFactory compfactory; compfactory = mconnection.getcomponentcontext().getservicemanager(); mservicefactory = (XmultiServiceFactory)UnoRuntime.queryInterface( XMultiServiceFactory.class, compfactory); Le code vient du SDK de OpenOffice.org, Developer's Guide, chapitre OfficeBean. Ce code est partiel, il n'est là que pour souligner les phases importantes de la connexion. Les interfaces UnoRuntime.queryInterface 1 facilitent la création d'objet, le service factory dans notre cas. Ensuite, il faut initialiser une Frame pour accueillir l'objet de OpenOffice.org. Cette Frame est construite à partir du ServiceFactory initialisé ci-dessus. XWindow window = (XWindow) UnoRuntime.queryInterface( XWindow.class, mwindow.getunowindowpeer()); object = mservicefactory.createinstance( "com.sun.star.frame.task"); if ( object == null ) object = mservicefactory.createinstance( "com.sun.star.frame.frame"); mframe = (XFrame)UnoRuntime.queryInterface( XFrame.class, object ); mframe.initialize(window); Note : Retenons que toute Frame a un controller. Cela nous resservira plus tard. Après la connexion, on chargera l'objet d'openoffice.org que l'on veut utiliser (Writer, Draw, Presentation, Calcul...) grâce à son URL. Pour Writer, cette URL a la forme : 1 Cf chapitre «First steps/working with objects» du SDK http://fr.openoffice.org 4

«private:factory/swriter» (scalc, sdraw, simpress). Le code de chargement de l'objet de OpenOffice.org : // Chargement du document XComponent xcomponent = xloader.loadcomponentfromurl( url, mframe.getname(), FrameSearchFlag.ALL, aargs ); url précise l'outil que l'on souhaite instancier dans OpenOffice. Le document peut être un document existant ou non. mframe précise sur quel conteneur Writer va être déposé Arg donne les valeurs des propriétés liées à cet objet. On gardera les valeurs par défaut données par l'exemple. Pour de plus amples précisions sur l'utilisation de loadcomponentfromurl se référer au SDK ou à la doc de l'api : com.sun.star.frame.xcomponentloader. Si SimpleBean est une classe fille de BasicOfficeBean et que simplebean est une instance de SimpleBean, alors nous pouvons appeler une instance de Writer (basée sur le modèle par défaut) de OpenOffice.org comme ci-dessous : simplebean.load("private:factory/swriter"); 2.2 ContextMenuInterceptor La classe ContextMenuInterceptor a été créée dans le SDK pour ajouter une fonctionnalité au menu contextuel de base. Nous ne détaillerons pas ici son fonctionnement, mais uniquement sa manière de se connecter au BasicOfficeBean. Dans le SDK, il est expliqué au chapitre 6 «Office Development» qu'il faut lancer OpenOffice.org avec une option qui permet de rendre le port ouvert pour le piloter depuis Java. Regardons comment la connexion se fait dans cet exemple : private OfficeConnect(String shost, String sport){ try { String sconnectstring = "uno:socket,host=" + shost + ",port=" + sport + ";urp;staroffice.servicemanager"; com.sun.star.lang.xmultiservicefactory xlocalservicemanager = com.sun.star.comp.helper.bootstrap.createsimpleservicemanager(); com.sun.star.bridge.xunourlresolver xurlresolver = (com.sun.star.bridge.xunourlresolver) UnoRuntime.queryInterface (com.sun.star.bridge.xunourlresolver.class, xlocalservicemanager.createinstance ("com.sun.star.bridge.unourlresolver")); mxservicemanager = (com.sun.star.lang.xmultiservicefactory) UnoRuntime.queryInterface( com.sun.star.lang.xmultiservicefactory.class, http://fr.openoffice.org 5

xurlresolver.resolve(sconnectstring)); catch (com.sun.star.uno.runtimeexception exuno){ System.out.println("connection failed" + exuno); catch (com.sun.star.uno.exception exrun){ System.out.println("connection failed" + exrun); catch (java.lang.exception exjava) { System.out.println("connection failed" + exjava); La connexion est similaire à celle de OfficeBean : il faut créer un ServiceFactory pour ensuite faire la connexion avec la Frame de ContextMenuInterceptor. OfficeConnect aconnect = OfficeConnect.createConnection("localhost", "8100"); com.sun.star.frame.xdesktop xdesktop = (com.sun.star.frame.xdesktop) aconnect.createremoteinstance(com.sun.star.frame.xdesktop.class, "com.sun.star.frame.desktop"); com.sun.star.frame.xframe xframe = xdesktop.getcurrentframe(); createconnection appelle OfficeConnect décrit ci-dessus. Voici le code de CreateRemoteInstance qui utilise le ServiceFactory pour créer la connexion : public Object createremoteinstance(class atype, String sservicespecifier) { Object aresult = null; try { aresult = UnoRuntime.queryInterface(aType,mxServiceManager.createInstance(sServiceSpecifier)); catch (com.sun.star.uno.exception ex) { System.out.println("Couldn't create Service of type " + sservicespecifier + ": " + ex); System.exit(0); return aresult; la Frame créée sur BasicOfficeBean et dans ContextMenuInterceptor sont donc de même nature. http://fr.openoffice.org 6

3 Les modifications à apporter pour atteindre notre but Projet Documentation francophone - OpenOffice.org Il suffit d'affecter à ContextMenuInterceptor la Frame de BasicOfficeBean pour se connecter sur son menu contextuel et faire les modification souhaitées : Code du load de BasicOfficeBean modifié : /** * Loads a document referenced by a URL. * * @param url The document's URL string. * @exception java.io.ioexception if the document loading process has * failed. */ public synchronized void load( String url ) throws java.io.ioexception { [...] //aucun changement au code initial // Connexion à ContextMenuInterceptor pour contrôler le click droit. ContextMenuInterceptor mcontext = new ContextMenuInterceptor(mFrame.getController() ) ; Dans le code de ContextMenuInterceptor, on modifie le constructeur de telle manière qu'il puisse recevoir le contrôleur comme argument. Nous devons rajouter un constructeur vide pour que le code marche. En réalité, on utilise le controller de mframe de BasicOfficeBean, car c'est le dernier élément de Frame que ContextMenuInterceptor utilise pour se connecter, cela évite de recommencer à construire un desktop, une Frame etc... Voici le code modifié dans ContextMenuInterceptor : public ContextMenuInterceptor() { public ContextMenuInterceptor(XController axcontroller ) { try { com.sun.star.frame.xcontroller xcontroller = axcontroller ; if ( xcontroller!= null ) { com.sun.star.ui.xcontextmenuinterception xcontextmenuinterception = ( com.sun.star.ui.xcontextmenuinterception ) UnoRuntime. queryinterface(com.sun.star.ui.xcontextmenuinterception.class, http://fr.openoffice.org 7

xcontroller ) ; if ( xcontextmenuinterception!= null ) { ContextMenuInterceptor acontextmenuinterceptor = new ContextMenuInterceptor() ; com.sun.star.ui.xcontextmenuinterceptor xcontextmenuinterceptor = ( com.sun.star.ui.xcontextmenuinterceptor ) UnoRuntime.queryInterface( com.sun.star.ui.xcontextmenuinterceptor.class, acontextmenuinterceptor ) ; xcontextmenuinterception.registercontextmenuinterceptor(xcontextmenuinterceptor ) ; catch ( java.lang.throwable ex ) { // catch java exceptions? do something useful System.out.println( " Sample caught exception! " + ex ) ; System.exit( 1 ) ; http://fr.openoffice.org 8

4 Mise en oeuvre Dans le cadre de notre développement de cette interface simplifiée, nous allons donner un aperçu de la mise en oeuvre. A l'exécution du code, une fenêtre applicative s'ouvre pour donner place à une boîte de dialogue qui permet de choisir si l'on veut ouvrir un nouveau document ou un document existant. Prenons l'exemple d'un nouveau document : http://fr.openoffice.org 9

Une fois le document ouvert (quelque soit sa nature) http://fr.openoffice.org 10

le processus de modifications du menu contextuel se met en place. Si on clique sur le bouton droit, le menu sera modifié en fonction du code que le programmeur aura écrit dans la méthode notifycontextmenuexecute : disparition du menu, ajout de nouveaux raccourcis (ici le raccourci Help), suppression de certains raccourcis. Cf documentation SDK pour plus de détails. http://fr.openoffice.org 11

5 Conclusion Ce que nous enseigne cet exemple est l'utilisation du ServiceFactory et du port pour connecter le client au serveur et des Frames pour maîtriser l'interface graphique de OpenOffice. Le ServiceFactory permet de connecter l'élément client (le bean) au serveur. Au lancement de OpenOffice en tant que serveur, il faut juste préciser quel port est ouvert pour cette connexion. Le deuxième enseignement est le moyen de maîtriser l'interface de OpenOffice. Le programmeur doit définir les Frames par rapport au ServiceFactory défini précédemment pour pouvoir réceptionner l'objet OpenOffice désiré. Cette Frame nous donne alors accès à des propriétés que peuvent exploiter différents modules : gestion des menus (ajout, suppression, modification), gestion du menu contextuel, gestion du type de document (writer, calc, draw, Presentation...) etc... Enfin,. Une fois la connexion réalisée, l'objet «OpenOffice» devient très malléable et configurable. On peut brancher des autres composants en utilisant les propriétés de la Frame initiale. Cela permet essentiellement de contrôler l'environnement de l'utilisateur, soit dans un but de l'aider en lui rajoutant des raccourcis soit pour le guider en lui donnant un outil très simple à utiliser. Une seule limitation, si une fois dans Writer vous utilisez la voie normale pour ouvrir une nouvelle page, les propriétés rajoutées dans SimpleViewer (la classe qui instancie le bean OfficeBean) seront perdues. http://fr.openoffice.org 12

http://fr.openoffice.org 13

6 Annexe : code de la fonction notifycontextmenuexecute : Le code est clairement expliqué dans les commentaires. /** * * @param aevent * @return * @throws java.lang.runtimeexception */ public ContextMenuInterceptorAction notifycontextmenuexecute( com.sun.star.ui.contextmenuexecuteevent aevent ) throws RuntimeException { try { // Récupère le contenu de menu contextuel et demande au servicefactory // de créer des sous-menus, des entrées de menus et des séparateurs. com.sun.star.container.xindexcontainer xcontextmenu = aevent.actiontriggercontainer; com.sun.star.lang.xmultiservicefactory xmenuelementfactory = (com.sun.star.lang.xmultiservicefactory)unoruntime.queryinterface( com.sun.star.lang.xmultiservicefactory.class, xcontextmenu ); if ( xmenuelementfactory!= null ) { // Crée une entrée de menu racine et son sous-menu. com.sun.star.beans.xpropertyset xrootmenuentry = (XPropertySet)UnoRuntime.queryInterface( com.sun.star.beans.xpropertyset.class, xmenuelementfactory.createinstance( "com.sun.star.ui.actiontrigger" )); // Crée une ligne de séparation pour notre nouveau sous-menu «help» com.sun.star.beans.xpropertyset xseparator = (com.sun.star.beans.xpropertyset)unoruntime.queryinterface( com.sun.star.beans.xpropertyset.class, xmenuelementfactory.createinstance( "com.sun.star.ui.actiontriggerseparator" )); Short aseparatortype = new Short( ActionTriggerSeparatorType.LINE ); xseparator.setpropertyvalue( "SeparatorType", (Object)aSeparatorType ); // Demande le sous menu pour que le conteneur d'index obtienne l'accès com.sun.star.container.xindexcontainer xsubmenucontainer = (com.sun.star.container.xindexcontainer)unoruntime.queryinterface( com.sun.star.container.xindexcontainer.class, xmenuelementfactory.createinstance( http://fr.openoffice.org 14

"com.sun.star.ui.actiontriggercontainer" )); // Initialise l'entrée du menu racine xrootmenuentry.setpropertyvalue( "Text", new String( "Help" )); xrootmenuentry.setpropertyvalue( "CommandURL", new String( "slot:5410" )); xrootmenuentry.setpropertyvalue( "HelpURL", new String( "5410" )); xrootmenuentry.setpropertyvalue( "SubContainer", (Object)xSubMenuContainer ); // Crée des entrées de menu pour le nouveau sous-menu // Initialise l'aide/le contenu de l'entrée du menu XPropertySet xmenuentry = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xmenuelementfactory.createinstance( "com.sun.star.ui.actiontrigger" )); xmenuentry.setpropertyvalue( "Text", new String( "Content" )); xmenuentry.setpropertyvalue( "CommandURL", new String( "slot:5401" )); xmenuentry.setpropertyvalue( "HelpURL", new String( "5401" )); // Insère une entrée de menu pour le sous-menu xsubmenucontainer.insertbyindex( 0, (Object)xMenuEntry ); // initialise l'aide/l'agent de l'aide xmenuentry = (com.sun.star.beans.xpropertyset)unoruntime.queryinterface( com.sun.star.beans.xpropertyset.class, xmenuelementfactory.createinstance( "com.sun.star.ui.actiontrigger" )); xmenuentry.setpropertyvalue( "Text", new String( "Help Agent" )); xmenuentry.setpropertyvalue( "CommandURL", new String( "slot:5962" )); xmenuentry.setpropertyvalue( "HelpURL", new String( "5962" )); // Insère l'entrée du menu pour le sous-menu xsubmenucontainer.insertbyindex( 1, (Object)xMenuEntry ); // Initialise l'aide et les tips xmenuentry = (com.sun.star.beans.xpropertyset)unoruntime.queryinterface( com.sun.star.beans.xpropertyset.class, xmenuelementfactory.createinstance( "com.sun.star.ui.actiontrigger" )); xmenuentry.setpropertyvalue( "Text", new String( "Tips" )); xmenuentry.setpropertyvalue( "CommandURL", new String( "slot:5404" )); xmenuentry.setpropertyvalue( "HelpURL", new String( "5404" )); http://fr.openoffice.org 15

// Insère les entrées du sous-menu. xsubmenucontainer.insertbyindex( 2, (Object)xMenuEntry ); // Ajoute un séparateur dans le menu contextuel donné xcontextmenu.insertbyindex( 0, (Object)xSeparator ); // Ajoute un nouveau sous menu dans le menu de contexte donné xcontextmenu.insertbyindex( 0, (Object)xRootMenuEntry ); // Le contrôleur devrait exécuter le menu contextuel modifié and arrêter de notifier les autres intercepteurs. return com.sun.star.ui.contextmenuinterceptoraction.execute_modified; catch ( com.sun.star.beans.unknownpropertyexception ex ) { // faire quelque chose qui puisse aider // nous utilisons une propriété inconnue catch ( com.sun.star.lang.indexoutofboundsexception ex ) { // faire quelque chose qui puisse aider // Nous utilisations un index invalide pour accéder au conteneur catch ( com.sun.star.uno.exception ex ) { // Quelque chose d'étrange s'est produite! catch ( java.lang.throwable ex ) { // catch java exceptions? do something useful return com.sun.star.ui.contextmenuinterceptoraction.ignored; http://fr.openoffice.org 16

7 Crédits Auteur: Aurélie Schröder Université de Genève AurelieSch@netcourrier.com Remerciements: Laurent Godard pour son soutien et ses conseils toujours avisés. Intégré par : Sophie Gautier Dernière modification: 2003/11/06 Contacts : Projet Documentation OpenOffice.org http://fr.openoffice.org Traduction : 8 Licence Appendix Public Documentation License Notice The contents of this Documentation are subject to the Public Documentation License Version 1.0 (the "License"); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/pdl.html. The Original Documentation is : Maîtriser le menu contextuel dans un OfficeBean The Initial Writer of the Original Documentation is Aurélie Schröder Copyright (C) 2003. All Rights Reserved. (Initial Writer contact(s): Contributor(s):. Portions created by are Copyright (C) [Insert year(s)]. All Rights Reserved. (Contributor contact(s): [Insert hyperlink/alias]). NOTE: The text of this Appendix may differ slightly from the text of the notices in the files of the Original Documentation. You should use the text of this Appendix rather than the text found in the Original Documentation for Your Modifications. http://fr.openoffice.org 17