Widget personalizzati

È possibile estendere SWT implementando un proprio widget personalizzato. SWT è infatti dotato di un pacchetto org.eclipse.swt.custom, in cui sono contenuti i controlli personalizzati che non fanno parte dell'insieme principale di controlli SWT, ma che sono necessari per implementare il workbench della piattaforma.

Controllo
Scopo
CBanner CBanner viene utilizzato nel workbench per tracciare l'area della barra degli strumenti e la barra degli strumenti di passaggio alla prospettiva.
CCombo Simile al controllo Combo, ma può essere ridimensionato in verticale per adattarsi alle celle di tabella.
CLabel Simile al controllo Label, ma supporta l'abbreviazione del testo con puntini di sospensione. Supporta, inoltre, un effetto a gradiente per il colore di sfondo nella vista del workbench attiva. Non supporta la disposizione del testo.
CTabFolder Simile al controllo TabFolder, ma supporta un'ulteriore configurazione dell'aspetto visivo di schede (superiore o inferiore) e bordi.
CTabItem Oggetto selezionabile dell'interfaccia utente corrispondente a una scheda di una pagina in una CTabFolder.
SashForm Controllo di struttura composta che dispone gli elementi secondari in righe o colonne e li separa mediante un controllo Sash per permettere all'utente di ridimensionarli.
ScrolledComposite Controllo di struttura composta che consente di scorrere il contenuto e, opzionalmente, di riempire lo spazio disponibile allargando il relativo contenuto.
StyledText Controllo modificabile mediante il quale è possibile immettere un testo. Gli intervalli di testo all'interno del controllo possono avere stili di colori e tipi di caratteri diversi.
ViewForm ViewForm viene utilizzato nel workbench per posizionare e ridimensionare un'etichetta, barra degli strumenti o barra locale dei menu di una vista.

Implementazione di un widget personalizzato

Una volta stabilito che è necessario utilizzare un widget personalizzato e si è deciso quali piattaforme deve supportare, è possibile considerare diverse tecniche di implementazione dello stesso. Tali tecniche possono essere mescolate e armonizzate a seconda delle disponibilità nella sottostante piattaforma del sistema operativo.

Implementazione nativa

Quando l'applicazione richiede un widget nativo che non è fornito da SWT, è necessario implementare un widget in modo nativo. Si può utilizzare un widget della piattaforma, un widget di terzi o qualsiasi altro widget di una libreria condivisa della piattaforma. Un esempio completo di implementazione di un widget nativo personalizzato è reperibile in Creazione di widget personali mediante SWT.

Combinazioni di widget esistenti

I widget possono essere combinati per formare widget più complessi. Ad esempio, un Combo può essere implementato utilizzando un widget di immissione testo insieme ad un pulsante e un elenco a discesa. Per implementare un widget combinato, si deve creare una sottoclasse di Composite e gestire la classe secondaria internamente.

Un esempio semplice può essere trovato in CCombo.

Implementazione personalizzata

A volte non esiste alcun codice nativo o widget che possa essere di supporto nell'implementazione del nuovo widget. In questo caso, è necessario progettare un widget personalizzato mediante il gestore dell'evento Paint. Sebbene questa tecnica sia diventata abbastanza complicata, ha il pregio di produrre un'implementazione completamente trasferibile.

I controlli personalizzati sono implementati creando una sottoclasse di Canvas o Composite. Creare una sottoclasse Canvas se il widget non avrà elementi secondari.

L'implementazione interna di un widget personalizzato generalmente implica le seguenti attività principali:

Molti dei widget implementati in org.eclipse.swt.custom si avvalgono di questo approccio. Un esempio semplice può essere trovato in CLabel.

Ulteriori informazioni sui widget personalizzati sono disponibili in Creazione di widget mediante SWT.