Cours 2b : programmation des interfaces graphiques

Documents pareils
Cours 2 : programmation des interfaces graphiques

Cours. Cours 8 : Révisions. Importance. Interface homme-machine

Interfaces graphiques avec l API Swing

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

Architecture générale des interfaces graphiques. IHM: Fondements des Interfaces Graphiques. Applications. Outils de construction d interfaces

Construire des plug-ins pour SAS Management Console SAS 9.1

L informatique en BCPST

Paramètres d accessibilité des systèmes d exploitation Windows et Mac

Java 7 Les fondamentaux du langage Java

Once the installation is complete, you can delete the temporary Zip files..

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Les calques : techniques avancées

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Création d un formulaire de contact Procédure

Initiation à LabView : Les exemples d applications :

Manuel de System Monitor

Évaluation et implémentation des langages

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Formation. Module WEB 4.1. Support de cours

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Préparation à l examen EFA en Macro

Mon aide mémoire traitement de texte (Microsoft Word)

Cyber-base du Pays Martégal. Atelier «Découverte de l ordinateur»

Publier un Carnet Blanc

Atelier «personnaliser l environnement de l ordinateur mai 2015

TD/TP 1 Introduction au SDK d Android

BUREAU VIRTUEL. Utilisation de l application sur ipad. Guide utilisateur. Sciences Po Utilisation du bureau virtuel sur ipad 1 / 6

Guide d utilisation de la clé mémoire USB

L espace de travail de Photoshop

Temps Réel. Jérôme Pouiller Septembre 2011

ACTIVITÉ DE PROGRAMMATION

Support pour les langues s écrivant de droite à gauche

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

Programmation C. Apprendre à développer des programmes simples dans le langage C

Développement Logiciel

Numérisation. Copieur-imprimante WorkCentre C2424

Utiliser le service de messagerie électronique de Google : gmail (1)

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

Introduction à Eclipse

MIGRATION DE THUNDERBIRD VERS OUTLOOK mardi 16 octobre 2012

Le cas «BOURSE» annexe

Spécifications techniques

Créer et partager des fichiers

Manuel utilisateur Netviewer one2one

WINDOWS 8. Windows 8 se distingue par la présence de 2 interfaces complémentaires :

L ORDINATEUR FACILE D ACCÈS!

The Grid 2: Manuel d utilisation

Manuel de l utilisateur. Soft-phone - Client VoIP 3CX Version 6.0

Utilisation de l éditeur.

Modes Opératoires WinTrans Mai 13 ~ 1 ~

Guide de l utilisateur Mikogo Version Windows

LES BIBLIOTHEQUES DE WINDOWS 7

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

PRESENTATION DU LOGICIEL

Le cas «BOURSE» annexe

0.1 Mail & News : Thunderbird

Table des matières Introduction Démarrage Les composants graphiques... 26

Silhouette Studio Leçon N 2

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

TP2 : Client d une BDD SqlServer

NOTICE D UTILISATION

Ouvrir le compte UQÀM

EXCEL TUTORIEL 2012/2013

Guide d installation CLX.PayMaker Office (3PC)

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Révision salariale - Manager

La programmation orientée objet et le langage C++

AOLbox. Partage de disque dur Guide d utilisation. Partage de disque dur Guide d utilisation 1

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Comment consolider des données

Access 2007 FF Access FR FR Base

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

Environnements de développement (intégrés)

3 : créer de nouveaux onglets dans Netvibes Cliquer sur le bouton «+» et renommer le nouvel onglet (par exemple Encyclopédies en ligne)

AIDE TECHNIQUE POUR L UTILISATION DE GÉODEQ III VUES D ENSEMBLE DU QUÉBEC

MANUEL TBI - INTERWRITE

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

La Clé informatique. Formation Excel XP Aide-mémoire

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

INTERWRITE Workspace

TD3 - Facturation avec archivage automatisé

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

Introduction à l informatique en BCPST

Procédure d installation des outils pour la messagerie sécurisée

Importation et exportation de contenu

Publier dans la Base Documentaire

Comment sauvegarder ses documents

NAVIGATION SUR INTERNET EXPLORER

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Comment faire un Mailing A partir d une feuille Calc

TP1 : Initiation à Java et Eclipse

Utilisation d une tablette numérique

Dans la série. présentés par le site FRAMASOFT

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Tutorial Terminal Server sous

Transcription:

Cours 2b : programmation des interfaces graphiques Anastasia.Bezerianos@lri.fr (partie de la présentation basée sur des transparents de Michel Beaudouin-Lafon) système interactif vs. système algorithmique système algorithmique (fermé) : lit des entrées, calcule, produit un résultat il y a un état final système interactif (ouvert) : évènements provenant de l extérieur boucle infinie, non déterministe 1

interfaces graphiques l'interaction graphique : les entrées sont spécifiées directement à partir des sorties périphérique d entrée spécifie dans une commande une position à l'écran qui désigne un objet précédemment affiché par le système (cette désignation directe est appelée pointage). Elle est familière dans le monde physique, donc le succès de ces interfaces problème nous avons appris à programmer des algorithmes (la partie calcul ) la plupart des langages de programmation (C, C++, Java, Lisp, Scheme, Ada, Pascal, Fortran, Cobol,...) sont conçus pour écrire des algorithmes, pas des systèmes interactifs 2

problème entée/sortie des langues algorithmiques instructions de sortie (print, put, send, ) pour envoyer des données aux périphériques instructions de lecture (read, get, receive, ) pour lire l état ou changement d états de périphériques d entrée, du façon bloquante comment gérer les entrées - - 1 pér. à la fois - Attente active - état des plusieurs pér. - CPU 3

programmation événementielle File d attente (queue) while active! if queue is not empty! event <- queue.dequeue()! source <- findsource(event)! source.processevent(event)! end if! end while! queue.enqueue(event) Animations : horloge comme source d évènements «tick» -> évènement -> progrès programmation événementielle Source : Mouse Click File d attente (queue) while active! if queue is not empty! event <- queue.dequeue()! source <- findsource(event)! source.processevent(event)! end if! end while! queue.enqueue(event) Cible : Bouton «Cancel» processevent(event)! target <- FindTarget (event)! if (target NULL)!! target.processevent(event)! Animations : horloge comme source d évènements «tick» -> évènement -> progrès 4

couches logicielles Squelette d application MacApp Java Swing, Qt, GTK+, MFC, Cocoa X Windows GDI+, Quartz, GTK+/Xlib, OpenGL Windows, Mac OS X, Linux constructeurs d interface Exemples : MS Visual Studio (C++, C#, etc.), NetBeans (Java), Interface Builder (ObjectiveC) 5

boîte à outils d interface bibliothèque d objets interactifs (les «widgets») que l on assemble pour construire l interface fonctionnalités pour faciliter la programmation d applications graphiques interactives (et gérer les entrées) Windows : MFC, Windows Forms (.NET) Mac OS X : Cocoa Unix/Linux : Motif, QT, GTK+ Multiplateforme : Java AWT/Swing les «widgets» bouton menu fenêtre barre d outils onglet étiquette zone de texte bouton radio liste barre de défilement «slider» 6

les widgets de Swing les widgets de Swing 7

arbre des widgets widgets «simples» buttons, barres de défilement, widgets «composés» Distinés à contenir d autres widgets (simples ou composés) Boites de dialogue, menus, arbre des widgets représentation hiérarchique de la structure des widgets un composant ne peut appartenir qu à un seul «container» Racine (composé) correspond à une fenêtre de l appli Nœuds (composé) Structure visuel ou fonctionnel du contenu Feuille (simple) avec lesquels l utilisateur peut interagir 8

facettes d un widget présentation apparence graphique comportement réactions aux actions de l utilisateur interfaces d application : notifications de changement d état Bouton: cadre avec un nom à l intérieur «enfoncement» ou inversion vidéo lorsque l on clique dessus grisé quand non-disponible + fonction appelée lorsque le bouton est cliqué facettes d un widget présentation apparence graphique comportement réactions aux actions de l utilisateur interfaces d application : notifications de changement d état fonctions de rappel («callbacks») (Swing) variables actives (Tcl/Tk) envoi de message (Qt) 9

fonctions de rappel Enregistrement lors de la création du widget Appel lors l activation du widget fonctions de rappel Problème : spaghetti des callbacks Partage d état entre plusieurs callbacks par: variables globales Trop dans une application réelle arbre des widgets : la fonction de rappel est appelée en lui passant le widget qui l a déclenché Fragile si l on change la structure, insuffisante pour d autres données pas associés aux widgets «jeton» (token) : donnée enregistrée avec la callback, passée automatiquement au moment de l appel 10

fonctions de rappel /* fonction de rappel */! void DoSave (Widget w, void* data) {!! /* récupérer le nom de fichier */!! filename = (char**) data;!! /* appeler la fonction de l application */!! SaveTo (filename);!! /* fermer la boîte de dialogue */!! CloseWindow (getparent(getparent(w)));! }! /* programme principal */! main () {!! /* variable contenant le nom du fichier */!! char* filename = ;!!!! /* créer le widgets et lui associer sa callback */!! ok = CreateButton (...);!! RegisterCallback (ok, DoSave, (void*) &filename);!!!! /* boucle de traitement des événements */!! MainLoop ();! }! «event listeners» ( Java) variante des callebacks adaptée au Java: methods de type AddListener spécifient non pas une fonction de callback, mais un objet (le listener) lorsque le widget change d état, il déclenche une méthode prédéfinie du listener (par exemple actionperformed) 11

«event listeners» ( Java) Un composant (widget) qui crée des événements est appelé source Le source délègue le traitement de l'événement au listener Un listener doit s'inscrire auprès du composant source des événements qu'il veut traiter. Un événement peut provenir : du clavier, un clique souris, un passage de la souris,.. A chaque type d événement, une classe (existante) A chaque type d événement, son listener (à faire) «event listeners» ( Java) public class ClickListener implements ActionListener {!! public void actionperformed(actionevent e){!!! JButton button = (JButton)e.getSource();!!!!! }! }!! ClickListener listener = new ClickListener();! JButton button = new JButton( Click me );! button.addactionlistener(listener);!! 12

«event listeners» ( Java) Anonymous Inner classes new <nom-de-classe> () { <corps> } cette construction fait deux choses : elle crée une nouvelle classe, sans nom, qui est une sous-classe de <nom-de-classe> définie par <corps> elle crée une instance (unique) de cette nouvelle classe et retourne sa valeur cette class a accès aux variables et méthodes de la class dans la quelle elle est définie! «event listeners» ( Java) Anonymous Inner classes! button.addactionlistener(new ActionListener(){!!! public void actionperformed(actionevent e){!!!!!!! }! });!! panel.addmouselistener(new MouseAdapter(){!!! public void mouseclicked(mouseevent e){!!!!!!! }! });! Fonctions et évènements prédéfinis 13

variables actives lien bi-directionnel entre une variable d état du widget et une variable de l application main (){! }! problèmes limité aux types simples int i = 0;! lien de retour peut être coûteux! /* widget */! nc = CreateSlider ( );! /* var active */! SetIntegerActiveVariable (nc, &i);!! envoi de message association d un objet à un widget et de méthodes de l objet aux changements d état meilleure encapsulation 14

«drag-and-drop» Quels sont les «widgets» affectés? Quels sont les événements? Exercice : comment décrire cette interaction avec un «event listener»? placement de widgets Boîtes à outilles contrôlent le placement des widgets : il faut être indépendant de la taille des widgets (menu au moins égale à son plus large item, en changement de taille la barre de défilement et le texte s ajustent) gestionnaires de géométrie, dans le widgets composés 15

placement de widgets règles générales imbrication géométrique d un widget fils dans son parent contrôle par le parent du placement de ses fils algorithme de placement taille naturelle de chaque fils taille et position finales imposées par le parent contraintes : grille, formulaire, etc. «layout managers» (Swing) BorderLayout FlowLayout BoxLayout GridLayout GroupLayout http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html 16

«layout managers» (Swing) GridLayout gridlayout = new GridLayout(0,2);! JPanel gridpanel = new JPanel();! gridpanel.setlayout(gridlayout);! gridpanel.add(new JButton("Button 1"));! gridpanel.add(new JButton("Button 2"));! gridpanel.add(new JButton("Button 3"));! gridpanel.add(new JButton("Long-Named Button 4"));! gridpanel.add(new JButton("5"));! guides de placement (Mac OS X) 17

guides de placement (Mac OS X) «Center-equalization» : équilibre visuelle du contenu d un composant, à droite et à gauche de la médiane guides de placement (Mac OS X) Alignement Colonne d étiquettes alignée à droite Colonne de contrôles alignée à gauche 18

guides de placement (Mac OS X) Espacement Même hauteur avant et après les lignes de séparation Même espace entre des contrôles groupés Même espace dans tous les trois côtés guides de placement (Mac OS X) Alignement et cohérence Colonne d étiquettes alignée à droite Colonne de contrôles alignée à gauche Cohérence entre les contrôles du même type 19

CRAP contraste, répétition, alignement, proximité Major sources: Designing Visual Interfaces, Mullet & Sano, Prentice Hall / Robin Williams Non-Designers Design Book, Peachpit Press Slide deck by Saul Greenberg. Permission is granted to use this for non-commercial purposes as long as general credit to Saul Greenberg is clearly maintained. Warning: some material in this deck is used from other sources without permission. Credit to the original source is given if it is known. 20

21

CRAP Contraste Répétition Alignement Proximité Robin Williams Non-Designers Design Book, Peachpit Press CRAP Contraste Faire des choses différentes différents Maitre en évidence les élém. dominantes Faire élém. moins importants moins visible Créer un dynamisme 1 Répétition Alignement Proximité 2 3 4 5 Robin Williams Non-Designers Design Book, Peachpit Press 22

CRAP Contraste Répétition Conception repetée au long de l interface Consistance 1 Créer unité Alignement Proximité 2 3 Robin Williams Non-Designers Design Book, Peachpit Press 4 CRAP Contraste Répétition Alignement Créer un flux visuel Connecter élém. Proximité 3 1 Robin Williams Non-Designers Design Book, Peachpit Press 4 2 23

CRAP Contraste Répétition Alignement Proximité Groupes évidentes Indépendants séparées 3 1 2 Robin Williams Non-Designers Design Book, Peachpit Press Qu est-ce que tu vois d abord? CRAP donne des indices sur la façon de lire le graphique title subtext three points main point sub point Robin Williams Non-Designers Design Book, Peachpit Press 24

Qu est-ce que tu vois d abord? Ici contraste mais proximité pas bien utilisé Structure ambigüe Groupes ambigües Robin Williams Non-Designers Design Book, Peachpit Press! Qu est-ce que tu vois d abord? Proximité (séparation gauche/droit) Structure claire! Robin Williams Non-Designers Design Book, Peachpit Press 25

Qu est-ce que tu vois d abord? La puissance de la proximité Alignement Structure explicite peut être améliorée Espace blanc Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: Mmmm: 26

Original 27

Proximité Alignement 28

Contraste Répétition 29

Qu est-ce que tu vois d abord? Boîtes ne montre pas la structure Utilisez CRAP Robin Williams Non-Designers Design Book, Peachpit Press 30