Composants GUI pour .NET

Quelques ensembles de composants permettant, entre autres de créer des barres d’outils ou menus plus évolués que ceux de Windows Forms (au moins jusqu’à la version 1.1) ainsi que de gérer les fenêtres dockables à la Visual Studio .Net

Magic Library :
la dernière version de cette bibliothèque est disponible à l’adresse suivante : http://www.dotnetmagic.com/. Attention, la bibliothèque disponible à cette adresse est un produit payant.
La dernière version gratuite semblait avoir été placée sur Sourceforge, mais je n’ai pu l’y retrouver… on peut tout de même encore la télécharger depuis quelques articles sur The Code Project ; attention, pour pouvoir effectuer des téléchargements depuis ce site, il faut y avoir créé un compte (gratuit).
Voici les adresse de ces articles – qui, en plus de fournir la librairie, donnent une initiation à l’utilisation des contrôles Magic sont les suivantes :

http://www.codeproject.com/cs/miscctrl/magicdocking.asp
http://www.codeproject.com/cs/menu/magicmenucontrol.asp
http://www.codeproject.com/cs/miscctrl/magictabcontrol.asp
http://www.codeproject.com/cs/miscctrl/magicwizard.asp

De mon côté, je n’ai pas utilisé tous les contrôles (ni toutes les possibilités) de la bibliothèque. Cependant, j’apprécie beaucoup le contrôle Wizard ; certes, ce n’est pas quelques chose de très difficile à réaliser, mais il est plutôt bien fini (à l’exécution, car en mode design il y a des bugs lorsque l’on change de page). J’ai aussi utilisé le docking VSNet-Like qui m’a posé quelques problèmes à l’exécution. Le gros avantage de la librairie est qu’elle est fournie avec le code source, et que l’on peut donc l’adapter, voir la corriger.
Je croyais ne pas avoir trouvé mieux (en gratuit) quand je suis tombé sur le site de :

Tim Dawson, divil.co.uk :
on y trouve une collection de contrôles (chacun dans une dll séparée) magnifiques et tous utilisables gratuitement pourvu que le logiciel qui les utilise ne soit pas lui-même commercial. Seul gros regret, l’absence des sources (à l’exception d’un contrôle, la “outlookbar”).
On remarque deux catégories parmi ces contrôles :

  • des versions très abouties, look Office 2003 ou Visual Studio 2005, numéros de version > 1 ; ces contrôles ne peuvent être utilisés gratuitement que dans des applications elles même gratuites.
  • contrôles en version < 1 ayant un look plus pauvre et probablement moins riches fonctionnellement ; en revanche, ces contrôles sont utilisables même dans des applications commerciales.

Voici une liste de liens permettant d’accéder directement aux pages de téléchargement des contrôles (certains sont en effet un peu cachés dans le site) :

Sandbar : http://www.divil.co.uk/net/controls/sandbar/
SandDock : http://www.divil.co.uk/net/controls/sanddock/
Eyefinder : http://www.divil.co.uk/net/controls/eyefinder/
OutlookBar : http://www.divil.co.uk/net/controls/outlookbar/
Wizard Control : http://www.divil.co.uk/net/controls/wizardcontrol/
Docking Suite : http://www.divil.co.uk/net/controls/dockingsuite/
Document Manager : http://www.divil.co.uk/net/controls/documentmanager/
DotNet Widgets : http://www.divil.co.uk/net/controls/dotnetwidgets/

Enfin, on peut citer (je ne l’ai ai pas utilisées) :
DockPanel Suite de Weifen Luo
CommandBar de Lutz Roeder (l’auteur de Reflector !)

En conclusion, ces deux librairies sont très intéressantes et complémentaires. En effet, bien qu’elles fournissent toutes les deux les mêmes types de contrôles, en fonction du goût de chacun on pourra choisir l’une ou l’autre ou encore les panacher ; par exemple, je préfère le wizard Magic, mais le docking Divil fonctionne mieux (en mode design comme à l’exécution).

Le gros point fort de Magic est la disponibilité du code source, celui de Divil, la finition (même dans les versions < 1

PS : la version de Magic téléchargeable depuis les articles sur CodeGuru est la 1.7 ; l’IDE Open Source SharpDevelop utilisait aussi Magic mais, il me semble, dans une version un tout petit peu plus récente : la 1.7.4. On doit pouvoir retrouver cette version de la librairie dans une des anciennes versions de SharpDevelop (jusqu’à la 0.99b). Depuis la version Fidalgo Beta 1, c’est la DockPanel Suite de Weifen Luo qui remplace la librairie Magic pour la gestion des fenêtres dockables.
A noter que SharpDevelop utilisait bien Magic pour les fenêtres dockables, remplacé par DockPanel, mais a toujours utilisé et continue d’utiliser CommandBar de Lutz Roeder pour les barres d’outil…

Proxys en .NET

Articles intéressants sur DotNetGuru :

  • classe dériviée de RealProxy,
  • Attribut de contexte,
  • Génération de code avec CodeDOM
  • Génération de IL avec Reflection.Emit1
  • La programmation par aspect (AOP) avec .NET et J2EE : dans cet article, dans la partie .NET, les attributs de contexte sont expliqués plus en détail que les méthodes Reflection.Emit et CodeDOM. En revanche, pour les développeurs Java, on a une présentation de XDoclet et AspectJ.
  • AOP, Intérêts et Usages : dossier complet sur l’AOP.
  • (1) A noter que l’auteur de l’article développe un framework de proxys dynamiques sur le prinipe de l’émission d’IL : DynaProx.NET. On peut aussi se rendre compte sur son blog que d’autres ont eu la même idée ; c.f. Apache Avalon Castle – DynamicProxy