XML SWT Design

Après XSWT par Dave J. Orme pour SWT en XML, Tom Schindl l’a fait evoluer avec EXSWT.
Lorsque j’ai choisi RCP pour développer mes applications riches, j’ai commencé directement par créer mes UI avec du XML. Je pense que c’est la bonne méthode car ça réduit considérablement la taille de code (bien qu’aujourd’hui les editeurs Java le masque facilement), mais la plus importante raison est l’aspect couplage lâche et la capacité à avoir plusieurs version d’interfaces utilisateur. Par exemple si votre application est destinée à différents clients il est probable que certains utilisateurs voudront bénéficier de certaines parties personnalisées de l’interface. Une UI en XML est la meilleure approche pour répondre à cette attente. Par exemple l’utilisation de XInclude dans un fichier EXSWT vous donne la possibilité d’avoir une version spécifique d’une partie de votre UI en gérant la résolution de l’attribut « href ».

Voici quelques exemples EXSWT qui donnent une idée de la simplicité de composition d’UI avec cette méthode :
– Composite, Label, Text, ComboViewer

<w:composite background="#82cff1">
  <a:layout x:class="gridLayout" f:numColumns="2" />
  <w:label background="#82cff1" text="Raison :">
    <a:layoutData x:class="gridData" f:horizontalAlignment="GridData.END" />
  </w:label>
  <w:text w:style="SWT.BORDER" x:id="callReason" font="Arial,10,SWT.BOLD">
    <a:layoutData x:class="gridData" f:widthHint="320" f:horizontalAlignment="GridData.BEGINNING" />
  </w:text>
  <w:label background="#82cff1" text="Type :">
    <a:layoutData x:class="gridData" f:horizontalAlignment="GridData.END" />
  </w:label>
  <v:comboViewer x:id="missionType" v:style="SWT.READ_ONLY" font="Arial,10,SWT.BOLD">
    <a:combo.layoutData x:class="gridData" f:widthHint="120" f:horizontalAlignment="GridData.BEGINNING" />
  </v:comboViewer>
</w:composite>

– TableViewer, Group, ToolBar

<w:group text="Victimes" background="#82cff1" x:id="victimGroup" enabled="false">
  <a:layout x:class="gridLayout" f:numColumns="2" f:marginHeight="0" f:marginWidth="0" marginTop="5" f:verticalSpacing="4" />
  <v:tableViewer x:id="victims" v:style="SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.HIDE_SELECTION" table.linesVisible="true" table.headerVisible="true">
    <a:table.layoutData x:class="gridData" f:horizontalAlignment="GridData.FILL" f:grabExcessHorizontalSpace="true" f:heightHint="95" />
    <v:tableViewerColumn column.text="Nom" x:id="victim.name" />
    <v:tableViewerColumn column.text="Sexe/Age" x:id="victim.sexeAge" v:column.style="SWT.CENTER" />
    <v:tableViewerColumn column.text="Motif" x:id="victim.motif" v:column.style="SWT.CENTER" />
    <v:tableViewerColumn column.text="Transport" x:id="victim.transport" />
  </v:tableViewer>
  <w:toolBar background="#82cff1" w:style="SWT.FLAT | SWT.VERTICAL">
    <w:toolItem toolTipText="Supprimer" x:id="victim.remove" />
    <w:toolItem toolTipText="Ajouter" x:id="victim.add" />
    <w:toolItem toolTipText="Exporter" x:id="victim.export" />
  </w:toolBar>
</w:group>

– Combo, ListViewer, CDateTime (Nebula Widget)

<a:layout x:class="fillLayout" />
<w:composite background="#82cff1">
  <a:layout x:class="gridLayout" f:marginHeight="0" f:marginWidth="0" />
  <w:combo x:id="filter" w:style="SWT.READ_ONLY">
    <a:layoutData x:class="gridData" f:horizontalAlignment="GridData.CENTER" f:grabExcessHorizontalSpace="true" f:widthHint="140" />
  </w:combo>
  <v:listViewer v:style="SWT.MULTI | SWT.BORDER | SWT.V_SCROLL" x:id="resources">
    <a:list.layoutData x:class="gridData" f:horizontalAlignment="GridData.CENTER" f:verticalAlignment="GridData.FILL" f:grabExcessVerticalSpace="true" f:widthHint="140" />
  </v:listViewer>
</w:composite>
<w:cDateTime background="#82cff1" x:id="takeAt" w:style="CDT.TIME_SHORT | CDT.BORDER | CDT.SIMPLE | CDT.CLOCK_12_HOUR">
</w:cDateTime>

Je rêve d’un jour où VE me générera mon code EXSWT en WYSIWYG.
A noter que Tom a aussi implémenté JFace Data Binding avec EXSWT (XBL) et il est simple de relier l’UI à son modèle de donnée dans le XML.

2 réflexions sur « XML SWT Design »

  1. Bon, ben rien de nouveau sous le soleil 😉

    tu ferais bien de venir au barcamp de sun le 8 décembre tu devrais y voir des choses qui t’interesserons je pense.

    Autant je suis d’accord sur la méthode, autant je pense que les outils utilisés ne sons pas les bons…

    Mais suis-je reellement objectif 😉

    dans tous les cas, une génération de XML UI en wysiwig permettant de faire du couplage lâche, cela existe déjà depuis longtemp … mais pas dans eclipse.

  2. tu veux parler de xwidglets je pense ? quels autres outils connais tu pour faire du WYSIWYG XML UI ? Pourquoi SWT et Eclipse ne seraient pas les bons outils pour cela ?
    Je ne pourrais pas être au barcamp le 8, je suis déjà pris dommage, j’aurais bien aimé en effet voir ces demos.

Les commentaires sont fermés.