Fondamenti di Informatica LB - anno 2002/2003

Esercitazione 05: "ACME Paint"


Data: 29 Maggio 2003

Questo documento fa parte del materiale impacchettato nel file es05.jar che si trova sul sito di Fondamenti di Informatica LB


Descrizione dell'esercitazione

La casa di riposo Villa Serena di Cesena commissiona alla softare house ACME la realizzazione di un programma per disegnare al computer per gli anziani, che chiamiamo ACME Paint.

Alcuni progettisti hanno suggerito un percorso per arrivare allo sviluppo del programma di disegno attraverso tre fasi:

Prima fase

Far comparire una finestra, centrata nello schermo (vedere servizi classe ToolKit), di dimensioni fisse, ad esempio 400 x 400. Alla chiusura della finestra l'applicazione deve terminare.

Il pannello della finestra diviso in due zone (BorderLayout): nella parte CENTER disegnare una crocetta (10x10) in mezzo, mentre nella zona SOUTH un pulsante centrato orizzontalmente, con la scritta 'Quit'. Quando lo si preme, la finestra deve essere chiusa,

La figura mostra uno schizzo della GUI (graphic user interface) dell'applicazione, dopo la prima fase.

Seconda fase: gestione eventi e layout

Nella parte SOUTH aggiungere quattro pulsanti ('Up','Down','Left','Right'), tutti allineati a sinistra Il pulsante 'Quit' è ora allineato a destra). Fissata una certa dimensione di griglia D (es.: 5 pixel), allora: la pressione di 'Up' deve far salire la crocetta di D pixel; la pressione di 'Down' fa scendere la crocetta di D pixel, e così via ... Evitare di far uscire la crocetta dai margini. Con un JTextField posizionata nella zona NORTH permettere la variazione di D: quando si preme Invio, la dimensione della griglia deve cambiare di conseguenza.

La figura mostra uno schizzo della GUI dell'applicazione, dopo la seconda fase.

Terza fase: gestione avanzata

La crocetta deve poter essere ora spostata dove si 'clicka' il mouse. Quindi è necessario gestire eventi e listener relativi al mouse (MouseEvent, MouseListener, ...). NOTA: la crocetta va inserita/spostata tenendo conto della griglia. Quindi vogliamo consentire il tracciamento di linee: l'utente mette la crocetta nel punto di partenza della linea, quindi preme un pulsante 'Start' (zona NORTH, assieme al JTextField). Alla pressione, lo 'Start' diventa 'Stop'. Ora spostando la crocetta viene sempre mostrata una linea tra la posizione di Start e quella corrente. Quindi l'utente clicka su 'Stop' (che diventa 'Start') e la linea deve rimanere impressa.

NOTE:

La figura mostra uno schizzo della GUI dell'applicazione, dopo la terza fase.

Obiettivo

L'obiettivo è quindi sviluppare l'applicazione ACMEPaint. L'applicazione può esser sviluppata passando dalla prima fino alla terza fase, oppure direttamente considerando la terza fase.

Note


Facoltativo (A1)

Vogliamo progettare e sviluppare le funzionalità di recording e playback delle interazioni dell'utente (gestione di macro). Ovvero si vogliono registrare (per poi rieseguire) sequenze di interazioni (sorta di macro) fra l'utente e il componente sviluppato. Ciò comporta la creazione di tre nuovi pulsanti: start recording, stop recording e playback. Dal momento che si agisce su start recording le azioni ritenute significative vengono 'registrate'/salvate/memorizzate. Come esempio di azioni ritenute significative abbiamo: la pressione pulsanti U,L,R,D, Start, Stop, e click del mouse... Agendo su stop recording si segnala la fine della registrazione. Agendo su playback si eseguono automaticamente le azioni registrate.

Facoltativo (A2)

Memorizzazione e recupero delle sequenze interattive su file (utilizzare la classe Swing JFileChooser come finestra di dialogo per scegliere il file).

Facoltativo (B)

Fornire all'utente la possibilità di scegliere il colore corrente con cui devono essere tracciate le linee, mediante opportuno combo box (contenente i nomi dei colori)