Analysere formateringskodetype

FormText-kontrollen er på sitt mest virkningsfulle når formateringskoder legges til i teksten. Den forventede rotkoden er form. Den kan ha en eller flere underordnede koder som enten kan være <p> eller <li>. Disse kodene kan ha vanlig tekst, tekst mellom kodene <b> eller <span>, bilder, linker og SWT-kontroller. Bilder deklareres ved hjelp av <img href="image key"/> (ikke noe innhold), mens linker uttrykkes ved hjelp av <a href="href">text</a>.

Noen av kodene ovenfor har ekstra attributter. Koden <a> godtar nowrap="true" når linken ikke skal kunne brytes på en ny linje. Koden <p> kan ha attributtet vspace="false" (true er standard), som legger til ekstra mellomrom mellom avsnitt. Koden <li> har flere attributter:

Koder som virker inn på utseende til vanlig tekst, er <b> (fungerer som forventet) og <span>. Den siste koden lar deg skifte font og/eller farge på teksten i koden. Endelig kan du legge til myke linjeskift ved hjelp av koden <br/> (merk at dette er XML, du kan ikke bruke åpen <br> som i HTML).

Siden versjon 3.1 kan FormText brukes til å blande SWT-widgeter i tekst, hyperlinker og bilder. SWT-kontroller opprettes som underordnede av FormText. FormText er en slags layoutstyrer med instruksjoner om hvor kontrollen skal plasseres i forhold til tekst som er innfelt direkte i XML.

FormText har vanligvis ikke ansvar for lasting av bilder, fonter, behandling av linker og farger. Dette er ikke en nettleser og det er mye bedre å holde ting atskilt og tildele bilder og farger som håndteres andre steder. Både linker og bilder har attributtet "href" som referanse. For linker oppgis verdien av dette attributtet i hyperlinkhendelsen når lyttere varsles. Bilder må registreres med tekstkontrollen ved hjelp av den samsvarende "href"-nøkkelen. Dermed trenger ikke kontrollen å laste inn bildene, de ligger i hash-tabellen og kan behandles umiddelbart.

En tilsvarende løsning er brukt for farger og fonter. Farger håndteres allerede av verktøysettet. Du kan derfor tildele så mange farger du vil, ved hjelp av en unik nøkkel og RGB-verdier, ved å kalle toolkit.getColors().createColor(). Det som gjenstår er å definere alle fargene som er referert i koden "span", slik at kontrollen kan bruke dem ved behandling.