Fil rouge : éditeur de dessins en WPF Les Custom Tools de VS2005 Comment çà marche ? Les Custom Tools de VS2005 Comment çà marche ? Utilisons notre DSL.

Slides:



Advertisements
Présentations similaires
Les technologies décisionnelles et le portail
Advertisements

Formation universitaire à .NET: Introduction à C#
Office 2007 – Développement client (5/5) OpenXML & Nouveautés de linterface Stéphane Crozatier Relation Technique Editeurs de Logiciels DPE - Microsoft.
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Les Excel Services de Office 2007
Test et Développement Visual Studio Team System Eric Mittelette – Benjamin Gauthey – Yann Faure DevDays 2006 Equipé aujourdhui, prêt pour demain !
Nouveautés pour les développeurs Office System Scott Burmester Responsable des programmes PSPS.
Open Days 2006 Le Web 2.0 demain: produits, technologies, outils.
Introduction à Eclipse
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Jean-Marc Prieur (ANPROS)
Présentation des frameworks pour Java EE
12 novembre 2012 Grégory Petit
FSAB1402: Informatique 2 Techniques de Programmation Orientée Objet
Bonjour. 2 constats numériques Nos livres très clair Bilan.
Cours de programmation
Programmation orientée objet
PROJET DATELIEU 20 MARS 2012LCP SALLE B105 création du site internet avec Weebly.
Autodesk® Revit® Building 9
Présentation de Windows Presentation Foundation Vers une nouvelle génération dinterfaces graphiques.
Développement Rapide dApplications Web avec.NET « Mon premier site »
© 2006 Microsoft Corporation. Retour dexpérience : Docx2Html Publication de tutorial.
Création d'un diaporama Création d'un diaporama
Laboratoire d'Informatique de l’Université de Franche-Comté
.Net Remoting.
Cette session suppose une connaissance préalable des grands principes de Workflow Foundation Nous parlerons très peu de lécriture de workflows Une session.
Formulaires dynamiques et workflows évolués
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
Microsoft .NET.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
ASP .NET 2.0 : Création de contrôles serveurs
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
1 journée, 5 sessions, 1 réalisation.NET Enterprise Realization Day.
Les présentations assistées par ordinateur (préAO)
Guillaume TORRENTE Marc BOUISSOU Recherche & Développement
Google Apps                         .
La notion de type revisitée en POO
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
Introduction au développement Office 2007
22 Visual Studio Tools et Office 2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Dev Consultant Microsoft France
Créer des packages.
Introduction à la plateforme .NET
Outil de conception d’applications WPF Anciennement « Interactive Designer » Orienté « intégrateur graphistes » Particularité : Blend tm est une application.
Introduction à Visual Studio C++ (VC++)
Tutorat en bio-informatique
Génération de code JAVA
Code Contracts Gilles TOURREAU - MVP C# Architecte .NET / Formateur
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
GEORGETA BĂDĂU CRÉATION ET GESTION D’UN BLOG AVEC LA PLATE-FORME LEWEBPEDAGOGIQUE.COM Séance no.2.
SCAN400 , envoi mail des résultats JDSEE, JDFIELD
SI 28 - Écriture interactive & multimédia Dreamweaver Séance 1 Petit Clara & Palfart Julien Printemps2008 Printemps 2008.
ASP.NET AJAX Control Toolkit
1 Visual Studio 2005 Tools For Office: Présentation et Démonstrations.
Use Local SQL Server with Azure Emulator. Configurer la DAL Fabriquer une DAL dans un projet de class library Configurer le data model avec la bdd locale.
En route vers le déploiement . . .
Dessine-moi un workflow
22 Visual Studio Tools et Office /02/2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Development Consultant Microsoft France.
2 Alain METGE SOGETI
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Dreamweaver le retour Avec Les Formulaires Les Calques
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Les formulaires Les calques Les comportements Les scénarios Les modèles Les feuilles de styles (CSS) La mise en ligne Les formulaires permettent à l’utilisateur.
EXPOSE FLASH 2 SI 28 24/10/2006 Delphine GODREAU Hélène PERRIER.
DREAMWEAVER MX2 - Séance 2 Les calques Les comportements Les scénarios Les formulaires Les feuilles de style Les modèles Les cadres Mise en ligne Jérôme.
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
FLASH Séance 2 Xiaoliang Liang Morgane Le Nan SI28 P05.
Flash – séance 2 Interactions avec Action Script.
Cours N°4 Mohamed El Hacen Mohamed Dyla Institut professionnel universitaire 1.
Transcription de la présentation:

Fil rouge : éditeur de dessins en WPF Les Custom Tools de VS2005 Comment çà marche ? Les Custom Tools de VS2005 Comment çà marche ? Utilisons notre DSL Fabriquons un designer graphique pour notre problème ! Conclusion et ressources

Le point de départ : un Sample de WCF : GeometryDesigner L’idée : améliorer la création des formes (interactivement)

Une namespace System.Windows.Shapes contenant des formes géométriques ( Rectangle, Ellipse, Line, Polygon, …) contenant des formes géométriques ( Rectangle, Ellipse, Line, Polygon, …) Des événements souris, clavier qui nous fournissent le point (ou la touche), et l’objet désigné (source) qui nous fournissent le point (ou la touche), et l’objet désigné (source)

using System.Windows.Controls; using System.Windows.Shapes; using System.Windows; using System.Windows.Media; using System.Windows.Input; namespace GeometryEditor.Shapes { public partial class LineTool { … protected override Shape CreateElement() { return new Line(); } protected internal override void OnMouseLeftButtonDown(Point point, Shape designée) { X1 = point; X2 = point; } protected internal override void OnMouseLeftButtonUp(Point point, Shape designée) { X2 = point; Terminate(); } protected internal override void OnMouseDrag(Point point, Shape designée) { X2 = point; } 1.Clic 2.Drag 3.Relâche Et si mes clients veulent : 1.Clic / Relâche 2.Move 3.Clic / Relâche ?

using System.Windows.Controls; using System.Windows.Shapes; using System.Windows; using System.Windows.Media; using System.Windows.Input; namespace GeometryEditor.Shapes { public partial class LineTool { … bool premierPointCliqué = false; protected internal override void OnMouseLeftButtonUp(Point point, Shape designée) { if (! premierPointCliqué) { X1 = point; X2 = point; premierPointCliqué = true; } else { X2 = point; Terminate(); } protected internal override void OnMouseMove(Point point, Shape designée) { X2 = point; } 1.Clic / Relâche 2.Move 3.Clic / Relâche Première tentative

Attente du premier point Attente du second point Terminé Clic / X1 = X2 = point Relâche / X2 = point Drag / X2 = point Un segment réduit à un point Le premier point du segment est inchangé, le second est mis à jour Le premier point du segment est inchangé, le second est fixé définitivement.

Attente du premier point Attente du second point Terminé Relâche / X1 = X2 = point Relâche / X2 = point Move / X2 = point Clic, Drag Mettre à jour le second point alors qu’on n’a pas fixé le premier point est incorrect ! C’est pour cela que notre ligne se commençait avant d’avoir cliqué.

Attente du premier point Attente du second point Terminé Relâche / X1 =X2 = point Relâche / X2 = point Move / X2 = point using System.Windows.Controls; using System.Windows.Shapes; using System.Windows; using System.Windows.Media; using System.Windows.Input; namespace GeometryEditor.Shapes { public partial class LineTool { … bool premierPointCliqué = false; protected internal override void OnMouseLeftButtonUp(Point point, Shape designée) { if (! premierPointCliqué ) { X1 = point; X2 = point; premierPointCliqué = true; } else { X2 = point; Terminate(); } protected internal override void OnMouseMove(Point point, Shape designée) { if ( premierPointCliqué ) X2 = point; }

La logique du code de création est finalement assez complexe. Il est facile de se tromper. Par contre, des dessins (modèles) aident L’étude du code pour créer des lignes, rectangles, ellipses, … montre des choses communes aux différents outils, et d’autres différentes. Un Framework factoriserait ce qui est commun, un générateur de code fabriquerait ce qui est différent.

En copiant le contenu de notre fichier dans un fichier.tt, et en commençant à le paramétrer. Où prendre les paramètres ? Ressources ? Config ? Comment générer nos transitions ?

Comment marchent les.settings et.resources ? Persistance dans des fichiers XML (.settings,.resources) namespace WindowsApplication1.Properties { internal class Resources { internal static string Gagné { get {return ResourceManager.GetString("Gagné", resourceCulture);}} internal static string Perdu { get {return ResourceManager.GetString("Perdu", resourceCulture);}} } private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture;} set {resourceCulture = value;} } internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsApplication1.Properties.Resour ces", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } ResXFileCodeGenerator Resources.Designer.cs

Nous manipulons des ressources ou des paramètres de configuration de manière naturelle. Des Custom Tools génèrent du code basé sur un Framework (.NET 2.0) pour y accéder en runtime (masquant l’utilisation du Framework) System.Resources et System.Globalization System.Configuration Ce mécanisme est unidirectionnel.

Pour les Windows.Forms c’est comme pour les ressources ou settings mais L’éditeur est graphique la sérialisation s’effectue dans le code c’est built-in (pas de Custom Tool) Même chose pour le Class diagram La notion de classe partial est très intéressante pour les générateurs de code

... nous pouvions Ajouter un nouvel élément de type «.geometryCreator » à un projet Visual Studio. Dessiner un comportement de création de formes et en déduire du code source correct? C’est possible … car Visual Studio 2005 est extensible

Options de personnalisation, Snippets Macros Add-Ins Packages Accessibilité aux développeurs Niveau d’intégration Cout d’intégration Nécessite le VS SDK Cas des Language Packages et en particulier des DSL

TypeAvantagesLimitations PersonnalisationSimpleNe peut pas contrôler l’IDE MacrosContrôle complet de l’IDENe peut rien ajouter. Fourni en code source Add-insContrôle complet de l’IDE Compilé (performance et protection des sources) Permet d’ajouter : Des tool windows, Des commandes, Des pages d’Options Ne peut pas ajouter: Nouveaux types de documents, Nouveaux type de projets, Moteurs de debugging, Etc PackagesComme Add-In + Possibilités totales d’ajouts Modèle de développement plus complexe Options de personnalisation, Snippets Macros Add-Ins Packages

Le télécharger : L’installer Le découvrir : Nous allons nous concentrer sur le T4, et les DSL Tools

Visual Studio 2005 VS 2005 SDK DSL Tools Package VS 2005 DSL pour. geometryCreator Code, Doc Fichiers de config GeometryEditor Auteur de DSL (Utilise LanguageGeomery.sln) Utilisateur de DSL (Manipule GeometryEditor.sln) et des.geometryCreator) Utilisateur final de GeometryEditor crée génère produit Framework CreatorTools Framework FW

Classe Propriété Agrégation Référence héritage

Forme (Géométrique) Décorateur icone Décorator textuel Forme à compartiment Lignes d’eau Boite à outils Explorateur de modèle

Il est possible de : décider comment représenter une classe Forme géométrique, Image, Boite avec des compartiments, mais aussi Diagramme, SwimLane, Port décider comment représenter une relation (compartiment, connecteur) Avoir des décorateurs (textuels dont le texte peut corresponde à une propriété), Icône. Leur visibilité peut être conditionnelle

Etendue du DSL Par les classes partielles de C# 2.0 Et la « double dérivation » Simple Normal Expert Plate-forme Etendue du DSL

Modeling Modeling Validation Text Templating Shell Modeling Diagram Directive processor Classes, Relations, enums, validation de la multiplicité, propriétés, Sérialisation Diagramme Formes Connecteur Boite à outils, menu contextuel, Explorateur de modèles, Doc, View, Package Maps Templates T4 Règles de cohérence et de validation Code sur mesure pour les commandes, personnalisation du designer … Code sur mesure

Les DSL graphiques : Améliorent la communication Le code généré est adapté et fonctionne (si le DSL est bon) Le « recueilleur du besoin » peut les utiliser Ils capitalisent un processus Les DSL peuvent être développés de manière incrémentale, à partir de code déjà écrit Les DSL Tools permettent déjà d’aller loin dans la création d’un DSL Ensuite, il y a différents niveaux de personnalisation On peut même s’interfacer avec VS 2005 …

Informations sur les DSL Tools (en anglais) (Home page) VS 2005 SDK (Septembre 2006) Site de la communauté française sur les DSL Tools (Lab, Forum, Blogs, snippets, téléchargements) avec le Lab en français (compter 1 journée) Site des architectes de Microsoft France A paraitre chez Addison Wesley vers le mois de mai / juin 2007, un livre de Steve Cook, Gareth Jones, Stuart Kent et Alan Wills qui devrait s’appeler : « Domain Specific Development with Visual Studio DSL Tools » Scoop