SWT: The Standard Widget Toolkit www.eclipse.org Nicolas SEBBAN 2 octobre 2003.

Slides:



Advertisements
Présentations similaires
Développement dapplications sur mobiles.NET et J2ME, C++ et Symbian WIPLIER Thomas – M2IRT2009 – 15/02/2007.
Advertisements

Data Management for Large-Scale Scientific Computations in High Performance Distributed Systems A. Choudhary, M. Kandemir, J. NoG. Memik, X. Shen, W. Liao,
DOM Document Object Model. Généralités Standard du W3C Parseur XML – Génération dun arbre dobjet – Construction totale de larbre DOM est spécifié en IDL.
Transformation de documents XML
SAX Simple API for XML. Généralités API non standard développé par les membres du forum XML-DEV Parseur XML – Orienté événement – Parsing dynamique SAX.
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
Bienvenue dans le programme de formation rapide à NSIS Date : 20 novembre 2003 Intervenant : Julien VICTOR Interlocuteurs : Ingénieurs 2000 Informatique.
Arbres Un premier exemple Contenu Rendu Ecouteurs Parcours
Premiers pas avec Apache Ant Par Guillaume BITAUDEAU Le 16/10/2003.
(Classes prédéfinies – API Java)
Voisin-Polian : Introduction à Java 1 Introduction à Java - AWT - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Plan du cours 5:Threads introduction Définition Création des Threads
TP2 ... MVC ? JList JLabel JSlider ImageLibrary Contrôleur Vue Modèle
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.
UE Informatique graphique appliquée à la Biochimie – Licence de Biochimie 1 G. Deléage UE Informatique Graphique en Biochimie (UE Biochimie.
High Frequency Trading Introduction. Séminaires de 30 minutes, une fois par semaine (8 en tout) Sujets abordés – Définition dun algorithme et introduction.
Les entrées /sorties en Java François Bonneville
Test intégré de composants basé sur les contrats Apinya TANGKAWANIT.
Gestion et Suivi axés sur les résultats
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Live Meeting Technique N°3 Thomas LEBRUN – MVP WPF/Silverlight Florent SANTIN – MVP Team System Julien CORIOLAND - MSP.
Connexion base de données
Chapitre IV Object, interfaces, classes imbriquées.
Injection de dépendances
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
XML-Family Web Services Description Language W.S.D.L.
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
Présentation de Windows Presentation Foundation Vers une nouvelle génération dinterfaces graphiques.
Principes de programmation (suite)
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
IFT1025, Programmation 2 Jian-Yun Nie
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Standard Template Library (STL)
Le patron de conception « Strategy » Simon Durocher ( )
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
ADOBE FLEX 4. © Logica All rights reservedNo. 2 Introduction Flex en action Autour de Flex Logica Le programme.
Structures de données IFT-2000 Abder Alikacem La librairie STL du C++ Département dinformatique et de génie logiciel Édition Septembre 2009.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
JUnit Présentation complète de JUnit et « guide d’utilisation » en 13 transparents.
Introduction au WebMapping
ETL et Data Mining Présenté par : Marc Catudal-Gosselin Université de Sherbrooke automne 2004 automne 2004.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke JavaCC.
Présentation Structures de Données et TDA
PHP GTK PHP…au delà du Web Paris, 28 novembre 2001 Armel FAUVEAU GLOBALIS media systems.
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Multi-Thread Jian-Yun Nie
Badr Benmammar Formation Développeur Java Thread et Swing Badr Benmammar
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
LE PROFILE UML POUR MARTE
COURS DE PROGRAMMATION ORIENTEE OBJET :
1. 2 Toolkits Il existe 4 principales boites à outils (toolkits) graphiques : –Xt / Motif –Gtk –Windows –Qt Seul certaines fonctionnent sur toutes les.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes APACHE/VELOCITY.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes Usage.
GWT - QuickStart V 1.0 / May. Mise en place de l’environnement Java : Version 1.4 minimum IDE Eclipse 3.3 Europa : lien (Eclipse J2EE recommandée)‏lien.
Première CTP le 4 décembre Nouvelle CTP depuis le 1 er février RTM milieu de cette année.
Applications web1 Cours Web Services ISIMA 3F3. Applications web2 JavaScript Inventé par Netscape... sans rapport avec Java. Standardisé par l’ECMA, spécification.
Architecture Logicielle Les blocs d’applications
14 La gestion d’événements
ETNA – 1ème année Guillaume Belmas –
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Réalisé avec le soutien de Pied de page fixe Pied de page 1 Titre Sous titre.
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
16 novembre 2005 Présentation du projet final Développement d’un plugin pour l’importation de données 3D normalisées pour la plate-forme Gocad Dans le.
ListView et Adapter O.Legrand G. Seront. ListView & GridView
Transcription de la présentation:

SWT: The Standard Widget Toolkit Nicolas SEBBAN 2 octobre 2003

Plan Principes de fonctionnement – Présentation de SWT – Stratégie – Gestion des ressources Principes dutilisation avec JFace – Présentation de JFace – Les Viewers – Pré-requis

Présentation de SWT Bibliothèque graphique IBM OpenSource Utilisée dans Eclipse Procure des widgets natifs dune manière indépendante de lOS

Présentation de SWT Bibliothèques graphiques multi-plateformes difficile à écrire/maintenir car système de widgets complexes et différences entre plateformes SWT résout ce problème: techniques dimplémentation de bas niveau SWT implémentée sur différentes plateformes: utilisation combinaison JAVA et JNI spécifique à chaque plateforme

Stratégie de SWT SWT: 100% Java ! JNI utilisé pour invoquer lOS Mapping « one-to-one » entre méthodes natives Java et appels à lOS Stratégie appliquée strictement!!

Stratégie de SWT Exemple: sélection dans zone de texte Composant Text /* Select positions 2 to 5 */ text.setText (" "); text.setSelection (2, 5);

Windows Motif public void setSelection (int start, int end) { OS.SendMessage (handle, OS.EM_SETSEL, start, end); } class OS { public static final int EM_SETSEL = 0xB1; public static final native int SendMessage (int hWnd, int Msg, int wParam, int lParam);... } JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_win32_OS_SendMess age__IIII (JNIEnv *env, jclass that, jint hWnd, jint Msg, jint wParam, jint lParam) { return (jint) SendMessage((HWND)hWnd, Msg, wParam, lParam); } public void setSelection (int start, int end) { int xDisplay = OS.XtDisplay (handle); if (xDisplay == 0) return; OS.XmTextSetSelection (handle, start, end, OS.XtLastTimestampProcessed (xDisplay)); OS.XmTextSetInsertionPosition (handle, end); } class OS { public static final native void XmTextSetSelection (int widget, int first, int last, int time); public static final native int XtLastTimestampProcessed (int display); public static final native void XmTextSetInsertionPosition (int widget, int position); public static final native int XtDisplay (int widget);... } JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_motif_OS_XmTextSetSe lection (JNIEnv *env, jclass that, jint widget, jint first, jint last, jint time) { XmTextSetSelection((Widget)widget, first, last, time); }

Stratégie de SWT implémentation du composant Text non portable MAIS LAPPLICATION QUI LUTILISE LEST! /* Select positions 2 to 5 */ text.setText (" "); text.setSelection (2, 5); Classe Text différente pour chaque plateforme mais signature de chaque méthode publique est la même

Stratégie de SWT Pourquoi ne pas faire comme ceci ? public void setSelection (int start, int end) { nativeSetSelection (start, end) } static final native void nativeSetSelection (int start, int end); JNIEXPORT void JNICALL Java_org_eclipse_swt_widgets_text_nativeSetSelection (JNIEnv *env, jclass that, jobject widget, jint first, jint last) { #ifdef WINDOWS HWND hWnd = SWTGetHandleFromJavaWidget (widget); SendMessage(hWnd, Msg, wParam, lParam); #endif #ifdef MOTIF Widget *w = SWTGetHandleFromJavaWidget (widget); Display xDisplay = XtDisplay (w); if (xDisplay == NULL) return; XmTextSetSelection (w, start, end, XtLastTimestampProcessed (xDisplay)); XmTextSetInsertionPosition (w, end); #endif }

Stratégie de SWT Séparation responsabilités: développeurs windows/motif… Mieux vaut tout écrire en java: langage de haute niveau, classes réutilisables, … Tout est au même endroit – pratique pour debugger – performance tuning (une fois dans le natif, les perfs ne dépendent que de lOS) Etc…

Gestion des ressources SWT utilise ressources de lOS nécessité de libération 2 règles à retenir: – Si on le créé, on le libère Ressources allouées automatiquement dans constructeurs des widgets SWT Libération par méthode dispose() Font f=control.getFont() dispose()? NON

Gestion des ressources – La libération dun parent libère les enfants Un widget ne peut pas exister dans lOS sans parent si parent libéré, enfants libérés Attention, certains composants comme Font, Color ne sont pas des enfants Un widget SWT ne libèrera jamais une ressources quon a allouée (sinon règle 1 brisée)

Gestion des ressources Il faut libérer! Ne pas attendre que lOS libère les ressources en fermant lappli. Risque de manque de ressource pour lapplication et pour autres programmes. Outil « Sleak »: aide recherche ressources non libérées

Présentation de JFace SWT procure widgets natifs « bruts »: Button, Label, Text, List, Tree, Table, … – pas pratique à manipuler (String, …) JFace: surcouche « outil » de SWT – Simplifie développements en SWT – Travaille AVEC SWT, SANS le cacher.

Présentation de JFace JFace regroupe modèles dutilisation de SWT Permet par exemple manipulation objets métier, plutot que String, …

Les Viewers Viewers: utiliser widgets avec objets métier En SWT: convertion des objets métier en String, Images, … gérées par widgets natifs Viewers: adaptateurs sur widgets SWT Viewers pour widgets SWT non-triviaux: List, Tree, Table, …

Les Viewers Chaque Viewer associé à 1 widget SWT Viewers utilisent 3 notions principales: – Input – ContentProvider – LabelProvider

Les Viewers Input: – Objet principal que le viewer affiche/édite – Nimporte quel objet, simple ou composé ContentProvider: – Interface, définit protocole pour obtenir informations sur le contenu de lobjet Input – Informé du changement dInput – Des ContentProvider spécialisés implémentés pour différents types de Viewers Ex: StructuredContentProvider: procure une liste dobjets pour un Input donné. Utilisé par viewers de type « liste »

Les Viewers LabelProvider – Interface, produit éléments graphiques spécifiques au contenu dun viewer (obtenu par le content provider) Ex:

Autres atouts de JFace Viewers de type « liste » offrent possibilités de tri et de filtres personnalisés (ViewerSorter, ViewerFilter) TableViewer peut gérer édition des cellules Widgets/outils réutilisables – WIZARD!!! – Widgets declipse…

Pré-requis pour SWT/JFace Dans le class path: – C:\eclipse-2.1.0\plugins\org.eclipse.core.boot\boot.jar – C:\eclipse-2.1.0\plugins\org.eclipse.jface_2.1.0\jface.jar – C:\eclipse-2.1.0\plugins\org.eclipse.runtime_2.1.0\runtime.jar – C:\eclipse-2.1.0\plugins\org.eclipse.swt.win32_2.1.0\ws\win32\swt.jar – C:\eclipse-2.1.0\plugins\org.eclipse.ui.workbench_2.1.0\workbench.jar – C:\eclipse-2.1.0\plugins\org.eclipse.core.runtime_2.1.0\runtime.jar Donner à la JVM les bibliothèques natives partagées: -Djava.library.path=C:\eclipse-2.1.0\plugins\org.eclipse.swt.win32_2.1.0\os\win32\x86\

Conclusion Stratégie de SWT efficace: performant, multiplateforme JFace indispensable, principe viewers efficace Widgets existants réutilisables Autres avantages/aspects: plugins eclipse, support ActiveX, …

Références – Articles: SWT: The Standard Widget Toolkit Part 1: Implementation Strategy for Java Natives Part 2: Managing Operating System Ressources – Guide Viewers (aide declipse) www-106.ibm.com/developerworks: www-106.ibm.com/developerworks – Article: Using the Eclipse GUI outside Workbench Part 1: Using JFace in stand-alone mode