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
Scarica

5 - Realizzazione di controlli