MokaByte Numero 10 - Luglio 1997
 

 
Netscape CONSTRUCTOR
 
di
Antonino S. Cutri' 
Il tool, scritto interamente in Java, per creare interfaccie utente per le IFC

 

Introduzione

Uno degli aspetti piu' onerosi durante la realizzazione di software che sfrutti le moderne interfaccie grafiche e' stato sempre quello della costruzione dell'interfaccia utente. Anche le IFC non sfuggono a questa regola, e difatti, costruire manualmente le varie finestre e' un compito oneroso e che distoglie il programmatore dal suo lavoro naturale. Per venirci incontro la Netscape ha reso disponibile per il download il suo Netscape Constructor. Questo tool, scritto interamente in Java e con l'ausilio delle IFC, permette di disegnare visualmente le varie finestre necessarie, rendendo, tutta l'operazione semplicissima permettendoci in tal modo di concentrarci solamente sul nostro programma.

Benche' il Constructor ci permetta di aumentare di fatto la nostra produttivita' non risolve tutti i problemi, difatti esso non e' un tool RAD, cioe' non crea il codice sorgente necessario, ma piuttosto un file che potremmo, molto sommariamente, considerarlo alla stregua di un file risorse Windows, che contiene le informazioni necessarie per poter riscostruire i componenti utilizzati all'interno del nostro programma.

Installazione ed esecuzione

L'archvio, in formato ZIP o TAR, contentene il Netscape Constructor puo' essere scaricato dal sito http://developer.netscape.com/library/ifc/ , per funzionare correttamente nella nostra macchina deve essere presente lo JDK versione 1.02 o superiore (benche', come avverte la documentazione allegata, con la recente 1.1.1 ci possono essere alcuni problemi, soprattutto durante il ridisegno dello schermo) e le Internet Foundation Classes versione 1.1.

Dopo aver estratto i contenuti dal file compresso ci troveremo sotto constructor10b3 le directory:

per avviare il programma ci si dovra' portare nella directory constructor10b3\constructor.applet e lanciare: appletviewer index.html.

Descrizione

Dopo il caricamento il Netscape Constructor si presenta nel seguente modo (Figura 1.1):
 

(clicca sulla figura per vederne la versione ingrandita in formato JPEG - 648 x 547,  67k -) 

Constructor
Figura 1.1

notiamo che possiamo suddividere idalmente la finestra in 7 zone (Figura 1.2):
 

1 2

 

3 

 

 

 

4
5

6
7
Figura 1.2

dove  troviamo, rispettivamente:

  1. la barra dei menu
  2. il titolo del file corrente
  3. l'area di lavoro nella quale si posizionano i controlli prelevandoli dalla zona 5, e dove se ne definiscono visualmente i collegamenti
  4. le proprieta' del controllo attualmente selezionato (colore, testo contenuto, impostazioni varie)
  5. la barra di stato, a destra, e a sinistra una lista e che ci permette di scegliere se utilizzare la palette di componenti standard delle IFC oppure una che contiene dei componenti creati da noi
  6. la barra contenente tutti i componenti disponibili (sia standard che utente)
  7. i campi dove e' possibile variare la posizione e la dimensione del controllo attuale, inserendo valori numerici
Il formato PLAN

Come abbiamo accennato nell'introduzione il Constructor per ogni nostro progetto genera un file che contiene la descrizione dei componenti disegnati, questo file ha come estensione planb o plana, la differenza tra i due formati sta nel fatto che il primo e' un formato binario, quindi compatto e piu' veloce da leggere, mentre il secondo e' un formato ASCII e puo' essere utilizzato, ad esempio, per studiare come sono memorizzati i componenti.

Per accedere agli oggetti memorizzati all'interno del file plan bisogna includere, nella propria applicazione/applet, il package netscape.constructor (aggiunto alle IFC solo nella loro ultima revisione, la 1.1) che mette a disposizione, tra le altre cose, una classe plan che serve proprio per la lettura/scrittura del file generato col Constructor.

Costruiamo una finestra

Costruiamo adesso una semplice finestra con qualche componente al suo interno, ecco i passi da seguire:

A questo punto salviamo la nostra finestra utilizzando la voce File|Save e come nome impostiamo finestra.
Scegliamo adesso la voce Mode|Wire, ed entriamo nella modalita' di collegamento degli eventi. Notiamo che ogni componente ha, nell'angolo in basso a destra, un quadratino, allora portiamoci col mouse sul quadratino del componente Button teniamo premuto il pulsante del mouse e trasciniamolo sulla barra del titolo della nostra finestra. A questo punto nella zona 4 scegliamo l'evento OnClick e come comando Hide. Con questa semplice operazione abbiamo collegato la pressione del pulsante con la chiusura della finestra. Per provare se tutto va bene scegliamo la voce Mode|Test, entrando cosi' nella modalita' di test della nostra finestra, e premiamo il pulsante con il mouse. Se avete eseguito tutte le precedenti operazioni in maniera corretta vedremo la finestra chiudersi. Torniamo adessa nella modalita' di costruzione con la voce di menu Mode|Build e salviamo nuovamente la nostra finestra.
Ora non ci rimane altro che importare il file plan generato all'interno della nostra applicazione.

Visualizziamo la finestra dalla nostra applicazione

Per poter visualizzare la nostra finestra dovremo prima creare un oggeto Plan aprire il file creato dal constructor e richiamare la finestra che abbiamo memorizzato, il listato java che effettua tutte queste operazioni e' il seguente.

import netscape.application.*;

import netscape.constructor.*;

import java.io.*;
 
 

//

//

// provaConstructor

//

//

public class provaConstructor extends Application implements Target, WindowOwner

{
 
 

        // Inizializza l'oggetto plan che si occupa di

        // caricare i dati dal file generato dal Constructor

        Plan plan = null;
 
 

    public void init() {

        super.init();
 
 

                // Imposta il colore di sfondo

                mainRootView().setColor(Color.white);
 
 
 
 

                // Carica la finestra disegnata col Constructor e la visualizza
 
 

                if(plan == null)    {

                        try {

                                plan = new Plan("finestra.planb", this);

                        } catch (IOException e) {

                                System.err.println("Impossibile caricare finestra.planb\n" + e);

                                return;

                        }

                } else  {

                        // Elimina i riferimenti agli oggetti caricati precedentemente

                        plan.unarchiveObjects(this);

                }
 
 

                // Carica la finestra memorizzata

                InternalWindow miafinestra = (InternalWindow) plan.componentNamed("miaFinestra");

                // Visualizza la finestra

                miafinestra.showModally();

        }
 
 

     .

     .

     .

     .
 
 

}

Per scaricare l'archivio contenente il file che abbiamo generato in questo articolo (finestra.planb), il programma Java di esempio sia in formato sorgente che gia' compilato basta clickare su esempio.zip (4k).

Conclusioni

Nonostante non sia un tool RAD, il Constructor della Netscape riesce egregiamente nel suo compito, che e' quello di semplificare la creazione dell'interfaccia utente delle nostre applicazioni. Il fatto di essere scritto interamente in Java significa che puo' essere utilizzato da qualsiasi piattaforma per la quale sia disponibile il linguaggio della Sun. Inoltre rappresenta un valido esempio delle potenzialita', messe a disposizione agli sviluppatori, delle Internet Foundation Classes. Tutto questo pero' si paga dal punto di vista della velocita' di esecuzione e sicuramente l'uso di una VM che implementi la tecnologia JIT (come ad esempio quella della Microsoft) migliora notevolmente le cose, soprattuto se si ha una macchina di classe 486. 



 
  
 

MokaByte rivista web su Java

MokaByte ricerca nuovi collaboratori
Chi volesse mettersi in contatto con noi può farlo scrivendo a mokainfo@mokabyte.it