Interpretar marcação de formatação

A utilização mais potente do controlo FormText ocorre quando se adicionam tags de formatação ao texto. O tag raiz esperado é form. Pode ter um ou mais descendentes que sejam <p> ou <li>. Qualquer um deles pode ter texto normal, texto entre tags <b> ou <span>, imagens, ligações e controlos SWT. As imagens são declaradas com <img href="chave da imagem"/> (sem conteúdo), ao passo que as ligações são expressas com <a href="href">texto</a>.

Alguns dos tags mencionados supra têm atributos adicionais. O tag <a> pode aceitar nowrap="true" para impedir a ligação de ser translineada na nova linha. O tag <p> pode ter o atributo vspace="false" (true por predefinição) que adiciona mais espaço entre parágrafos. O tag <li> dispõe de mais atributos:

Os tags que afectam a aparência do texto normal são <b> (funciona como esperado) e <span>. O último permite alterar tipo de letra e/ou cor do texto dentro do tag. Por fim, podem ser adicionadas quebras de linha suaves com o tag <br/> (repare que isto é XML, por isso não se pode utilizar <br> aberto como em HTML).

Desde a edição 3.1, FormText pode ser utilizado para misturar widgets de SWT dentro de texto, hiperligações e imagens. Os controlos de SWT são criados como descendentes de FormText, o que torna FormText numa espécie de gestor de esquemas, com instruções sobre onde colocar o controlo relativamente ao texto incorporado directamente no código XML.

Um tema recorrente é que o FormText não é responsável por carregar imagens, tipos de letra, nem por resolver ligações ou cores. Não se trata de um browser, por isso é muito melhor separar preocupações e atribuir simplesmente imagens e cores geridas noutro local. Tanto as ligações como as imagens têm somente o atributo 'href' para as referenciar. No caso das ligações, o valor deste atributo será fornecido no evento de hiperligação quando forem notificados ouvintes. As imagens devem ser registadas junto do controlo de texto que utiliza a chave 'href' correspondente. Desta forma, o controlo não tem de tratar do carregamento de imagens - tem-nas na tabela de indexações e pode apresentá-las imediatamente.

Foi utilizada uma abordagem semelhante para cores e tipos de letra. As cores já são tratadas pelo kit de ferramentas, de modo que pode atribuir tantas quantas quiser com uma chave única e valores RGB chamando toolkit.getColors().createColor(). Só falta definir todas as cores referenciadas no tag 'span' para que o controlo as possa utilizar na apresentação.