Realizzare controlli
Antonio Cisternino
L’esperienza del bottone
Il progetto Bottone (vedere bottone.zip) ci ha
consentito di analizzare la struttura di un
componente
Osserviamo che:
 Si fa uso del bubbling degli eventi piuttosto che della
delegation
 Esistono messaggi come Paint che non sono
direttamente correlati all’input dell’utente
 Il disegno viene fatto utilizzando il contesto grafico:
una struttura dati che consente il disegno
Il punto di vista del controllo
Un controllo:
Ha uno stato interno
È responsabile per disegnarsi nell’area che gli
è stata assegnata
Viene configurato mediante l’impostazione di
proprietà del controllo
Del proprio stato disegna solo la porzione
visibile
Quando lo stato viene modificato l’area del
controllo viene invalidato causando la
generazione del metodo paint
Il controllo
Eventi
Stato
Paint
OnPaint
Controllo
Disegna usando
contesto grafico
Model-View-Controller
Un pattern di programmazione molto ricorrente
in grafica è il model-view-controller (MVC)
Può essere istanziato a vari livelli nel dominio
delle interfacce: a livello dell’applicazione, o dei
componenti
Elemento essenziale è il disaccoppiamento tra le
azioni compiute da un utente (o un’altra
porzione del programma) e la visualizzazione
successiva: tutto è mediato dal modello che
viene aggiornato e utilizzato per la
visualizzazione aggiornata
Il MVC
Utente
Usa
Vede
View
Controller
Aggiorna
Manipola
Model
Dominio Applicativo del Problema
Model
Il modello è costituito dall’insieme di
informazioni utilizzate per la
visualizzazione
Il suo compito è anche quello di mediare
le azioni e le reazioni di un elemento
grafico
Questo è necessario poiché non tutti gli
eventi sono causati da interazione diretta
(ad esempio l’evento paint)
View
La vista è la porzione del modello che può
essere rappresentata
Tipicamente la callback associata
all’evento paint è responsabile per la sua
implementazione
La vista di componenti grafici complessi
può richiedere l’individuazione di un
sottoinsieme del modello da visualizzare
Le scroll-bar vengono spesso utilizzate per
spostare la vista
Controller
Il controllo è la componente responsabile
per mediare la manipolazione del modello
Nel caso di controlli grafici è tipicamente
costituito da un insieme di proprietà e
dalle callback per la gestione degli eventi
In generale si tratta dell’insieme di
strumenti messi a disposizione dell’utente
del componente grafico per la sua
manipolazione
Un esempio: l’albero
Il modello del TreeView è un
albero
La sua vista è responsabile
per mostrare solo la parte
visibile
Accanto ad ogni nodo
interno il controllo consente
di controllare lo stato di
visualizzazione del
sottoalbero
Il bottone
Eventi
Stato
Paint
OnPaint
Controllo
Bottone
Disegna usando
contesto grafico
Vista
Modello