Informazioni avanzate sul workbench

Una vasta serie di classi e interfacce è disponibile per creare interfacce utente complesse. Per cominciare a utilizzarle, non è necessaria conoscerle in maniera esaustiva. In questa sezione, saranno innanzitutto analizzati alcuni concetti esposti nell'interfaccia utente del workbench e la corrispondente struttura sottostante.

Workbench

Il termine workbench indica comunemente "la finestra che si apre all'avvio della piattaforma." Di seguito sono illustrati alcuni dei componenti visivi da cui è costituito.

Nel resto della trattazione, con il termine workbench sarà indicata esclusivamente la finestra di workbench IWorkbenchWindow. La finestra di workbench è la finestra che viene visualizzata in primo piano in un workbench. Costituisce il frame, all'interno del quale vengono posizionate barra dei menu e degli strumenti, barra di stato, barra di scelta rapida e pagine. Generalmente, la finestra di workbench non richiede alcuna programmazione ed è rilevante solo per il suo contenuto.

Nota:  è possibile aprire più finestre di workbench, utilizzando Prospettiva->Apri. Per impostazione predefinita, le nuove prospettive vengono aperte nella stessa finestra di workbench,  anche se sono disponibili altre opzioni (per maggiori dettagli, consultare la pagina delle preferenze del workbench).  Poiché ciascuna finestra rappresenta un mondo indipendente di editor e visualizzazioni, è possibile concentrarsi su una soltanto di esse.

Dal punto di vista dell'utente, un workbench contiene visualizzazioni ed editor. Altre classi contribuiscono all'implementazione della finestra del workbench. 

Pagina

All'interno della finestra del workbench, sono reperibili una o più pagine IWorkbenchPage, contenenti a loro volta delle parti. Le pagine rappresentano il meccanismo attraverso il quale vengono implementate associazioni di parti. Generalmente non è necessario programmare la pagina, tuttavia, essa sarà visibile nel contesto della programmazione e del debug.

Nota:  le pagine sono utilizzate nell'implementazione delle prospettive. Permettono di posizionare parti di workbench in un contenitore esterno, indipendentemente dal fatto che le prospettive vengano aperte nella stessa finestra o in una nuova finestra di workbench.

Visualizzazioni ed editor

Visualizzazioni ed editor costituiscono le opzioni di implementazione di alcune comuni programmazioni plug-in. Quando viene aggiunto un componente visivo al workbench, è necessario decidere se si desidera implementare una visualizzazione o un editor. In base a quali considerazioni, viene effettuata la scelta?

Visualizzazione ed editor devono essere, comunque, entrambi creati secondo un ciclo di vita standard.

Durante tutto questo ciclo di vita, gli eventi notificheranno, dalla pagina del workbench in cui sono contenuti, alle parti interessate l'apertura, attivazione, disattivazione e chiusura delle visualizzazioni ed editor.

Come si vede,  visualizzazioni ed editor del workbench sono molto semplici. Contengono semplicemente i widget e, a seconda delle esigenze dell'utente, possono risultare semplici o complessi. La visualizzazione più semplice è stata illustrata in precedenza nell'esempio Hello World. In questa sezione, l'argomento è stato leggermente approfondito.

package org.eclipse.examples.helloworld;

import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;

import org.eclipse.ui.part.ViewPart;



public class HelloWorldView extends ViewPart {
    Label label;
    public HelloWorldView() {
    }
    public void createPartControl(Composite parent) {
        label = new Label(parent, SWT.WRAP);
        label.setText("Hello World");
    }
    public void setFocus() {
        // impostare come attivo il widget.  Per un'etichetta, non
        // ha importanza, ma per serie più complesse di widget
        // è necessario decidere quale attivare.
    }

}

Si osservi che non è stato necessario implementare alcun metodo dispose(), visto che è stata soltanto creata un'etichetta nel metodo createPartControl(principale). Qualsiasi risorsa dell'interfaccia utente allocata, come immagini o tipi di carattere, avrebbe dovuto essere eliminata in questo punto. Poiché è stata estesa la classe ViewPart, è stata ereditata l'implementazione di dispose(), "do nothing".