Nel giugno 2012 è avvenuto un passaggio importante per Eclipse: la piattaforma e4 ha sostituito la storica versione 3.x, avviata nel 2004 con il rilascio della versione 3.0. In questi otto anni sono stati fatti enormi passi avanti, che hanno portato Eclipse a diventare un IDE e una piattaforma di sviluppo senza pari. Senza dimenticare inoltre che è completamente Open Source e con una licenza “commercially friendly” (EPL)!
La platform e4 è una sorta di rivoluzione rispetto alla precedente. Per cominciare è completamente basata su EMF (Eclipse Modeling Framework), si è completamente liberata di quel fardello di gerarchia di classi Application* del Workbench tipiche della 3.x e fa un intenso e pervasivo uso del meccanismo di Injection. Questi sono naturalmente solo alcuni tra gli aspetti pi├╣ salienti; in questa sede intendiamo piuttosto andare direttamente al sodo e toccare con mano questa innovativa piattaforma.
Solo una considerazione prima di iniziare: nonostante le novità introdotte, la piattaforma è retro-compatibile, cioè in grado di importare e gestire progetti realizzati con la versione 3.x, grazie al Compatibility Layer, che implementa i vecchi meccanismi del workbench attraverso i nuovi paradigmi di e4. Per chi volesse comunque continuare a lavorare con la platform 3.x è disponibile l’ultimo rilascio 3.x (il 3.8) all’indirizzo http://download.eclipse.org/eclipse/downloads/eclipse3x.html
Setup dell’IDE
All’indirizzo http://www.eclipse.org/downloads potete trovare diversi package di e4. Scaricate il package
All’avvio noterete alcune novità grafiche principali: uno splash screen e un look and feel rinnovati.
Nota: è sempre consigliabile indicare un workspace completamente nuovo (un workspace precedentemente utilizzato con altre versioni di Eclipse può determinare comportamenti inattesi).
Installiamo ora i Tool che ci permetteranno di creare una applicazione e4 utilizzando il seguente update site:
http://download.vogella.com/kepler/e4tools
dal quale installiamo le seguenti feature:
* CSS spy for e4 / e4 CSS Spy (Incubation)
* e4 core tools / e4 Tools (Incubation)
Prima applicazione
Grazie ai Tools appena installati siamo ora in grado di eseguire File -> New -> Other… -> e4 Application Project.
Premiamo Next, inseriamo un nome per il progetto, ad es. it.rcpvision.e4training.application e premiamo nuovamente Next, Next, selezioniamo il check box “Create sample content (parts, menu etc. )“, poi Finish.
Ora, a differenza di quanto si faceva in stile 3.x (dove si selezionava il link “Launch an Eclipse Application”) procediamo in modo diverso: notiamo infatti che il nostro nuovo progetto contiene un Product (es. it.rcpvision.e4training.application.product).
E’ questo che deve essere ora lanciato, tramite tasto destro Run As/Debug As -> Eclipse Application. Ed ecco apparire la nostra prima applicazione e4
Vediamo che lo wizard ha creato una applicazione con una Part (avremmo usato i termini View o Editor in precedenza: ora questa differenziazione è diventata obsoleta!), alcune voci di Menu, associate a dei Command, implementati da Handler (questi concetti invece sono rimasti, sebbene siano realizzati in modo diverso e molto pi├╣ semplice).
Se diamo uno sguardo al codice generato vedremo che non sono pi├╣ presenti quelle classi legate al workbench che avevamo in 3.x. Infatti le uniche classi che troviamo
sono quelle relative agli Handler di esempio generati e alla Part.
Ma come fare per aggiungere una nuova Part dove poter inserire componenti grafici? Ci basterà agire sul file Application.e4xmi, che rappresenta il modello EMF della nostra applicazione.
Espandiamo quindi il nodo Windows fino ad arrivare a selezionare l’oggetto Part Stack
e a destra, nel dettaglio dell’elemento selezionato, premiamo il button Add… dopo aver verificato che la combo immediatamente accanto mostri Part. In pratica stiamo aggiungendo una Part all’oggetto Part Stack selezionato.
ora indichiamo una Label per questa Part, ad es. Orders
e salviamo. Ecco che lanciando ora l’applicazione vedremo apparire la nuova Part (notate che non abbiamo creato una corrispondente classe Java)
Per riempire la Part appena creata torniamo sul dettaglio della stessa e selezioniamo l’hyperlink Class URI
impostiamo un package (es. it.rcpvision.e4training.application.parts) e un nome per la nuova classe, ad es. Orders, poi Finish.
notate come la classe ottenuta non estenda altre classi, nè implementi nessuna interfaccia: è una semplice classe Java con alcune Annotation.
package it.rcpvision.e4training.application.parts; import javax.inject.Inject; import org.eclipse.e4.ui.di.Focus; public class Orders { @Inject public Orders() { } @Focus public void onFocus() { } }
A questo punto aggiungete il seguente metodo
@PostConstruct public void createPartControl(Composite parent) { }
Notate che il nome del metodo può essere diverso, l’importante è che sia presente l’Annotation @PostConstruct e il parametro di tipo Composite). Ora infatti potete aprire la classe con WindowBuilder
e procedere a popolarla di componenti come avete imparato a fare nei tutorial precedenti (ad es. WindowBuilder: advanced databinding with CDO).
e finalmente potete lanciare l’applicazione e vedere i primi risultati concreti
Un particolare ringraziamento a Lars Vogel, per i suoi insuperabili tutorial, i preziosi consigli e il suo ultimo libro su e4!
Per consulenza o sviluppo su Eclipse e4 info@rcp-vision.com
Per informazioni sui corsi Eclipse e4 clicca qui
Riferimenti
Lars Vogel
e4 Application Development: The complete guide to e4 RCP development
Building Eclipse RCP applications based on e4
Jonas Helming
Eclipse 4 (e4) Tutorial Part 1 ÔÇô The e4 Application Model
Tom Schindl
Eclipse / e4
Ciao Vincenzo,
Infatti seguendo una discussione su https://bugs.eclipse.org/bugs/show_bug.cgi?id=387018 abbiamo deciso di introdurre anche una MPart nel progetto generato dal Wizard (come nello screenshot). Il fix e gia in master quindi sara anche nel seguente stable build.
Grazie per il tutorial,
Sopot
Hi Sopot,
the tutorial has been updated.
Now it makes use of Lars Vogel’s Update site, so that the fix about MPart is already there!
Thank you
Vincenzo
Excellent tutorial. Thanks a lot.