Tutoriel ExtJS N°10 : comprendre les conteneurs ExtJS

////Tutoriel ExtJS N°10 : comprendre les conteneurs ExtJS

Comprenez la notion de conteneur dans ExtJS. Découvrez la classe ‘Container’, classe de base dont hérite les conteneurs conteneurs ExtJS, comme le ‘Viewport’ ou le ‘Panel’ et ses dérivés. Ajoutez, supprimez et insérez des composants visuels ExtJS dans un conteneur. Comprenez cette relation parent/enfant via l’attribut ‘items’ d’un conteneur. Comprenez enfin deux valeurs ajoutées de l’attribut ‘xtype’ : performance et clarté du code.

Prérequis

 Connaissance HTML, javascript.

Objectifs

 Comprendre la notion de conteneur ExtJS.

 Comprendre la classe Container

 Comprendre la hiérarchie de conteneurs

 Instancier et placer un Panel dans une page HTML

 Comprendre les conteneurs Viewport et Panel

 Comprendre l’attribut ‘xtype’ (Bonne pratique !)

 Comprendre la methode doLayout()

ext_logo.gif

Programme

 Nos petits déjeuners ExtJS

 Introduction

 Partie 1 : Comprendre la classe Container

 Partie 2 : Manipulations Panel : instanciation directe , placement, rendu, identifiant

 Partie 3 : Manipulations Panel : enfants, références

 Partie 4 : Comprendre le chargement retardé (xtype)

 Partie 5 : Gestion du rendu avec doLayout()

Durée

 30min


formation-sencha-extjs-objis.jpg

Petit-déjeuner ExtJS 6 vendredi 25 septembre – Paris

Découvrez les opportunités offertes par le framework ExtJS 6 pour le développement de vos applications Web et Mobile.

Depuis 2009, Objis accompagne (conseil + formation) les organisations possédant un Backoffice JAVA/PHP/.NET et désireuses de créer des interfaces utilisateurs Web et Mobile à forte valeur ajoutée. Nous avons développé un savoir-faire technique et pédagogique sur Sencha ExtJS , Sencha GXT et l’éditeur Sencha Architect.

INSCRIPTION Petit-déjeuner ExtJS 6

Introduction

Un conteneur ExtJS est une zone de l’écran pouvant contenir des composants visuels (ou d’autres conteneurs). On parle d’une relation parent-enfant. Des exemples classiques de conteneur dans extJS sont :

 Panel (Ext.Panel) : conteneur ‘de base’ dont plusieurs autres héritent : TabPanel, GridPanel, FormPanel, Windows…

 ViewPort (Ext.ViewPort) : représente la totalité de la zone du rendu (Body) navigateur

Partie 1 : la classe Container

Tous les conteneurs héritent de la classe Container.

En utilisant le schéma ci-dessous, expliquez :

 Quelle différence entre un ‘Component’ et un ‘Container’

 Quel lien entre un ‘Container’ et un ‘Panel’

tutoriel-extjs-modele-composant-1

En utilisant la documentation ExtJS, identifiez les méthodes de la classe Container permettant de :

 Ajouter un composant dans un conteneur

 supprimer un composant de la zone du conteneur

 insérer un composant entre deux autres composant

 obtenir la liste des composant d’un type particulier présents dans le conteneur

Partie 2 : instanciation, placement, rendu, identifiant Panel

Le travail pas à pas ci-dessous permet de faire ses premiers pas dans :

— L’instanciation directe d’un Panel (remplacée plus tard par instanciation tardive)

— Le placement du panel dans une zone de la page

— L’analyse du code généré par ExtJS pour le rendu visuel

— L’ajout de composants dans le conteneur Panel

— L’initiation à l’agencement des composants (layout)

Mise en oeuvre pas à pas

 Créez une page html avec deux zones

tutoriel-conteneur-extjs-1

 observez le rendu avec Firebug.

tutoriel-conteneur-extjs-2

 ajoutez le code necessaire à la mise en oeuvre ExtJS. En particulier, notre code sera présent dans un fichier ‘demopanelhtml.js’

demopanel-header-extjs-4

 Créez un fichier vierge demopanelhtml.js et ajoutez-y le code suivant :

tutoriel-conteneur-extjs-4

 Analysez le rendu visuel utilisateur…et le rendu html dans firebug

tutoriel-conteneur-extjs-5

En déduire la valeur ajoutée de l’attribut ‘renderTo’ de l’objet config passé en paramètre du constructeur de Panel

tutoriel-extjs-panel-html-5

 Analysez de plus près le HTML du panel (2 zones : en tête et corps)

tutoriel-conteneur-extjs-6

 Créez dans le HTML une troisième zone, dans laquelle nous souhaitons placer notre panel

tutoriel-conteneur-extjs-7

 Analysez le code suivant

tutoriel-conteneur-extjs-8

 Expliquez le rendu visuel et HTML ci-dessous

tutoriel-conteneur-extjs-9

Identifiant du Panel

Notez que le DIV généré par ExtJS pour le panel possède un identifiant auto-généré (ici : ext-comp-1001).

Il peut être utile de fournir vous-même un identifiant à ce panel . Le panel pourra alors plus tard être localisé grâce à cet identifiant via Ext.getCmp(id)

tutoriel-conteneur-extjs-10

 Analysez l’impact :

tutoriel-conteneur-extjs-11

 

Partie 3 : ajout composants dans Panel

Pour ajouter un composant dans un conteneur, la meilleure pratique est :

— 1) Passer par l’attribut ‘items’ de type tableau pour déclarer l’ensemble des composants

— 2) Déclarer chaque enfant à travers un objet config

— 3) Pour chaque objet config enfant, spécifier comme premier attribut le xtype de ce composant enfant.

 Modifier le code ainsi :

tutoriel-conteneur-extjs-12

 Analysez l’impact

tutoriel-conteneur-extjs-13

REMARQUE : ici le bouton a été ajouté sous forme d’une instanciation directe et de façon anonyme. ce n’est pas une bonne pratique. c’est uniquement à des fins pédagogique.

tutoriel-conteneur-extjs-14

 

tutoriel-conteneur-extjs-15

gérer l’agencement des enfants dans le conteneur

 Modifier le code ainsi :

tutoriel-conteneur-extjs-16

 analysez le rendu

tutoriel-conteneur-extjs-17

 Modifiez le layout en mettant ‘vbox’ au lieu de ‘hbox’. Quel impact ?

 en déduire l’impact de l’attribut ‘layout’ du conteneur

INFO : c’est dans le TP suivant ‘layout ExtJS‘ que vous allez approfondir la notion de Layout.

CORRECTION

1-demo-panel

Partie 4 : xtype (instantiation retardée)

Tous les composants ExtJS sont référencés dans extJS (Gestionnaire de composant : Ext.ComponentMgr) par une chaine de caractères représentant leur type. Il s’agit du xtype du composant. Par exemple, le xType d’un bouton est ‘button’.

Pour utiliser un composant ExtJS dans vos écrans, il y a 2 techniques :

 l’instanciation directe (moins performant) : new Button()

 l’instanciation retardée / lazy (Bonne pratique !) qui force ExtJS à instancier le composant uniquement lorsque celui-ci sera vraiment nécessaire dans l’interface utilisateur. L’instanciation retardée est rendu possible en ajoutant dans la déclaration de votre composant l’attribut xtype (xtype : ‘button’).

DEMONSTRATION XTYPE

2018-01-28T12:41:14+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java