Il supporto introduttivo è un insieme di punti di estensione e parti del workbench che consente ai plugin di definire pagine specifiche che introducono un prodotto di piattaforma ai nuovi utenti. Le informazioni introduttive vengono in genere visualizzate la prima volta che un prodotto viene avviato. Il supporto introduttivo è in genere configurato a livello di prodotto, nonostante i singoli plugin possano fornire informazioni introduttive alle configurazioni introduttive di prodotti noti.
Dal punto di vista di un workbench, l'elemento principale del supporto introduttivo è la parte introduttiva. Questa parte è specifica di una definizione di estensione. Quando viene inizializzato il workbench, si crea un sito introduttivo, il cui spazio è riservato alle pagine introduttive. L'implementazione delle parti introduttive per il sito è determinata dalle informazioni sulla configurazione del prodotto. Una volta visualizzata una parte introduttiva, questa parte può essere utilizzata in due modalità:
Una volta individuata una parte introduttiva, questa parte deve essere configurata con informazioni introduttive. Questa operazione viene eseguita utilizzando una config introduttiva fornita utilizzando un'estensione. I singoli plugin possono aggiungere al prodotto di base la config introduttiva mediante estensioni proprie.
Di seguito viene riportata la pagina introduttiva della piattaforma SDK come esempio per una maggiore conoscenza di questi argomenti.
L'interfaccia IIntroPart ed il punto di estensione org.eclipse.ui.intro costituiscono il meccanismo generico che può essere utilizzato per creare il supporto introduttivo per un determinato prodotto. Lo scopo principale di questa estensione è definire la classe che implementa IIntroPart e specificare l'associazione tra l'id di un prodotto e una parte introduttiva. Ad esempio, il contributo di seguito riportato definisce una parte introduttiva ipotetica da visualizzare mediante il workbench all'avvio:
<extension point="org.eclipse.ui.intro"> <intro class="com.example.SampleIntroPart" id="someId"> icon="someIcon.gif" </intro> <introProductBinding introId="someId" productId="com.example.someProductId"> </introProductBinding> </extension>Questo contributo definisce la parte introduttiva e assegna a tale parte l'id "someId". Collega quindi questa parte introduttiva ad un prodotto il cui id è "com.example.someProductId". All'avvio della piattaforma, la classe specificata nell'attributo class viene istanziata dal workbench e presentata all'utente come introduzione al prodotto. Questa è l'integrazione di livello più basso nell'interfaccia IIntroPart.
La piattaforma fornisce una propria implementazione IIntroPart chiamata CustomizableIntroPart che consente la personalizzazione del contenuto e della presentazione dell'introduzione. Di seguito viene riportato il frammento che definisce la parte introduttiva del workbench. Non verranno approfonditi i meccanismi di implementazione di una parte introduttiva perché si desidera concentrare l'attenzione sul contenuto dell'introduzione. Per ulteriori dettagli, fare riferimento alla documentazione sul punto di estensione e al javadoc di riferimento.
<extension point="org.eclipse.ui.intro"> <intro class="org.eclipse.ui.intro.config.CustomizableIntroPart" id="org.eclipse.platform.intro"> </intro> <introProductBinding introId="org.eclipse.platform.intro" productId="org.eclipse.platform"> </introProductBinding> </extension>Il contributo riportato definisce la parte CustomizableIntroPart come la parte introduttiva da utilizzare per la piattaforma SDK Eclipse. Il resto di questa sezione mostra come utilizzare ed estendere questa parte.
La parte CustomizableIntroPart della piattaforma consente la personalizzazione del contenuto e della presentazione dell'introduzione mediante il punto di estensione org.eclipse.ui.intro.config. La config introduttiva può essere estesa utilizzando il punto di estensione org.eclipse.ui.intro.configExtension. Questa struttura consente agli sviluppatori del plugin del prodotto di concentrarsi sullo sviluppo del contenuto dell'introduzione anziché implementare uno schema della parte introduttiva da zero. Se viene specificata una classe introduttiva diversa, questi due punti di estensione non vengono utilizzati e la classe specificata deve implementare il proprio schema per il formato e la configurazione del contenuto dell'introduzione.
org.eclipse.ui.intro.config descrive l'id della config introduttiva che deve visualizzate il contenuto e il nome del file XML contenente la definizione specifica per il contenuto dell'introduzione. Si prevede che solo una config introduttiva sia definita per una determinata CustomizableIntroPart. Solo la prima config introduttiva individuata può essere visualizzata in una CustomizableIntroPart.
<extension id="intro" point="org.eclipse.ui.intro.config"> <config introId="org.eclipse.platform.intro" id="org.eclipse.platform.introConfig" content="$nl$/introContent.xml"> <presentation home-page-id="root" standby-page-id="standby"> <implementation ws="win32" style="css/shared.css" kind="html" os="win32"> </implementation> <implementation kind="swt"> </implementation> </presentation> </config> </extension>Il percorso del file è relativo alla directory del plugin. La variabile $nl$ viene utilizzata nel nome della directory, il che significa che il file verrà inserito in una directory specifica della lingua nazionale dell'ambiente di destinazione.
L'estensione config consente di specificare il contenuto e la presentazione del contenuto. Mentre l'elemento contenuto definisce le pagine, l'elemento presentazione descrive gli attributi relativi alla presentazione che definiscono in modo in cui vengono visualizzate le pagine. L'id pagina per la pagina home introduttiva (nella modalità completa) deve essere specificato, mentre l'id della pagina standby (in modalità standby) è facoltativo. La pagina home è la pagina che viene visualizzata quando il prodotto viene avviato per la prima volta. Una presentazione può specificare una o più implementazioni per la visualizzazione delle pagine. Le implementazioni sono specificate per piattaforma e sistema di finestre, consentendo all'utente di trarre vantaggio dalle funzioni specifiche della piattaforma per la visualizzazione del contenuto della pagina. Ad esempio, la piattaforma delle finestre presenta un widget efficace per il browser HTML, per cui un'implementazione basata su HTML viene utilizzata per il contenuto dell'introduzione. Altre piattaforme senza questa funzione utilizzano un'implementazione basata su SWT che associa le descrizioni delle pagine a un formato basato su SWT. Un'implementazione che non specifica un sistema di finestre o un sistema operativo viene considerata implementazione generica, per garantire che un'introduzione venga visualizzata su tutte le piattaforme è importante definire tale implementazione. Il workbench ricerca prima un'implementazione che corrisponde al sistema operativo corrente e al sistema di finestre. Se non rileva un'implementazione di questo tipo, sceglie l'implementazione generica. La maggior parte dei dettagli viene gestita a livello di configurazione del prodotto, per cui tali dettagli non verranno esaminati ulteriormente in questa sezione.
È ora possibile esaminare il contenuto. Il contenuto viene descritto in termini di pagine. Tutte le pagine presentano un attributo id. Si tratta dell'id che viene utilizzato quando si definiscono le pagine home e standby e altre ubicazioni in cui esiste il riferimento ad una pagina. Altrimenti, gli attributi importanti dipendono dal tipo di pagina definito. Esistono due tipi di pagine di base:
Il modo migliore per avere un'idea del formato di definizione del contenuto è esaminare le implementazioni nell'SDK. Nel frammento di seguito riportato viene visualizzata solo la prima parte del contenuto per la pagina principale SDK, che rappresenta la prima pagina introduttiva visualizzata.
<introContent> <page alt-style="css/root_swt.properties" style="css/root.css" id="root" style-id="page"> <title style-id="intro-header">Welcome to Eclipse Platform 3.0</title> <group id="links-background"> <group id="page-links"> <link label="Overview" url="http://org.eclipse.ui.intro/showPage?id=overview" id="overview" style-id="left"> <text>Find out what Eclipse is all about</text> </link> <link label="Tutorials" url="http://org.eclipse.ui.intro/showPage?id=tutorials" id="tutorials" style-id="left"> <text>Let us guide you through Eclipse end-to-end tutorials</text> </link> <link label="Samples" url="http://org.eclipse.ui.intro/showPage?id=samples" id="samples" style-id="right"> <text>Explore Eclipse development through code samples</text> </link> <link label="Whats New" url="http://org.eclipse.ui.intro/showPage?id=news" id="news" style-id="right"> <text>Find out what is new in this release</text> </link> </group> </group>
Gli elementi di una pagina possono anche essere filtrati da una determinata implementazione. Ciò consente agli addetti alla progettazione di progettare pensando a determinate piattaforme. Esistono molti altri attributi che possono essere utilizzati quando si descrivono una pagina ed il relativo contenuto. Fare riferimento alla documentazione del punto di estensione per org.eclipse.ui.intro.config e alla specifica del formato file del contenuto dell'introduzione associata per un riferimento completo ad elementi, elementi secondari e attributi validi.
Una configurazione introduttiva può essere estesa in tre modi:
I plugin possono fornire il contenuto dell'introduzione in una pagina definita altrove. Tuttavia, la pagina di definizione deve specificare un attributo anchor che agisca come segnaposto di ubicazione per il nuovo contenuto. La pagina di panoramica SDK definisce due ancoraggi per l'aggiunta degli elementi correlati JDT e PDE.
<group id="page-content"> <text style-id="page-title" id="page-title">OVERVIEW</text> <text style-id="page-description" id="page-description">Eclipse è un tipo di piattaforma di strumentazione universale - un IDE estensibile aperto per tutto e nulla in particolare. Fornisce un ambiente di sviluppo ricco di funzioni che consente allo sviluppatore di creare strumenti in modo efficiente che vengono integrati nella piattaforma Eclipse.</text> <group id="overview-links"> <link label="Workbench basics" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.platform.doc.user/concepts/concepts-2.htm" id="basics"> <text>Learn about basic Eclipse workbench concepts</text> </link> <link label="Team support" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.platform.doc.user/concepts/concepts-26.htm" id="team"> <text>Find out how to collaborate with other developers</text> </link> <anchor id="jdtAnchor"/> <anchor id="pdeAnchor"/> </group> </group>Questi ancoraggi possono essere utilizzati come riferimento dai plugin che aggiungono il contenuto alla pagina. Il contenuto viene aggiunto utilizzando l'estensione org.eclipse.ui.intro.configExtension. Oltre ad estendere il contenuto della pagina, questo punto di estensione consente anche di fornire parti standby del contenuto ed azioni personalizzate.
Per estendere una config introduttiva esistente, è possibile utilizzare l'elemento configExtension. In questo elemento, specificare il configId della config introduttiva da estendere e il file del contenuto che descrive il nuovo contenuto.
<extension point="org.eclipse.ui.intro.configExtension"> <configExtension configId="org.eclipse.platform.introConfig" content="$nl$/overviewExtensionContent.xml"/> ... </extension>Il formato del file del contenuto è simile a quello del contenuto della config introduttiva, eccetto che per il fatto che tale file deve contenere un elemento extensionContent che definisce il percorso all'ancoraggio in cui deve essere inserito il contenuto dell'estensione.
<introContent> <extensionContent alt-style="css/swt.properties" style="css/overview.css" path="overview/page-content/overview-links/jdtAnchor"> <link label="Java development" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.jdt.doc.user/gettingStarted/qs-BasicTutorial.htm" id="java"> <text>Get familiar with developing Java programs using Eclipse</text> </link> </extensionContent> </introContent>Una volta fornito il contenuto personalizzato ai punti di ancoraggio predefiniti di un'introduzione, un determinato prodotto può essere collegato a quell'introduzione mediante l'elemento org.eclipse.ui.intro precedentemente definito. Quando viene eseguito il prodotto, l'introduzione estesa verrà visualizzata con il contenuto supplementare. Ciò consente al prodotto di avere un marchio proprio e altre informazioni specifiche, durante il riutilizzo di un'introduzione del prodotto strettamente correlata e del contenuto chiave.
Un determinata introduzione può anche includere parti dell'introduzione di un prodotto correlato. In questo caso, il prodotto potrebbe definire la propria introduzione e la propria config introduttiva e fare riferimento a elementi importanti definiti in un'altra config introduttiva utilizzando un metodo include nel file del contenuto. Questo meccanismo può essere valutato in situazioni in cui i prodotti correlati vengono generati uno sull'altro ed è necessario introdurre agli utenti i concetti chiave dei prodotti di livello superiore.
I plugin possono anche implementare una parte per la visualizzazione del contenuto alternativo, quando la pagina introduttiva è in modalità standby. Ad esempio, la piattaforma definisce una parte standby che visualizza una pagina di aiuto per il contenuto correlato dell'introduzione. Questa parte viene avviata utilizzando il collegamento di una pagina con un URL specifico. Le parti standby vengono avviate mediante un URL contenente un comando speciale per la visualizzazione di una parte standby, ad esempio http://org.eclipse.ui.intro/showStandby?partId=somePartId. Questa parte viene definita nell'elemento secondario standbyContentPart dell'estensione org.eclipse.ui.intro.configExtension. Per questa parte devono essere specificati un id, un pluginId e una classe.La classe deve implementare IStandbyContentPart.Il frammento riportato di seguito mostra come la piattaforma definisce la parte standby per la visualizzazione delle pagine di aiuto.
<extension point="org.eclipse.ui.intro.configExtension"> <standbyContentPart id="org.eclipse.platform.cheatsheet" class="org.eclipse.platform.internal.CheatSheetStandbyContent" pluginId="org.eclipse.platform"/> </extension>Questa pagina di aiuto potrebbe essere avviata da una pagina introduttiva utilizzando un elemento secondario collegamento il cui URL è http://org.eclipse.ui.intro/showStandby?partId=org.eclipse.platform.cheatsheet&input=org.eclipse.pde.helloworld. Questo IntroURL avvia la parte del contenuto standby org.eclipse.platform.cheatsheet e imposta l'input su "org.eclipse.pde.helloworld". I meccanismi dettagliati per l'implementazione di una parte standby vanno oltre l'ambito di questa discussione. Per ulteriori informazioni, fare riferimento a IStandbyContentPart e alle classi correlate.
Utilizzando il punto di estensione org.eclipse.ui.intro.configExtension, i plugin possono fornire azioni personalizzate che possono essere utilizzate come un valore url per un elemento di collegamento in una pagina. Si consideri ad esempio il seguente collegamento:
http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction&id=org.eclipse.sdk.samples.swt.examples
Questa azione IntroURL esegue una classe di azione chiamata ShowSampleAction, che si trova in un pacchetto "org.eclipse.pde.ui.internal.samples" del plugin "org.eclipse.pde.ui". L'id dell'esempio da eseguire è "org.eclipse.sdk.samples.swt.examples".
Per definire una versione personalizzata di questo URL introduttivo, è possibile utilizzare il seguente tag:
<extension point="org.eclipse.ui.intro.configExtension"> <action name="myCommand" replaces="runAction?pluginID=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction"> </action> </extension>Con l'estensione precedente, è possibile ora utilizzare il seguente URL per eseguire la stessa azione:
http://org.eclipse.ui.intro/myCommand?id=org.eclipse.sdk.samples.swt.examples
L'azione "myCommand" verrà sostituita dal valore dell'attributo replaces e i parametri restanti dell'URL verranno aggiunti alla fine. Una volta eseguita la sostituzione, l'URL risultante verrà esteso in:
http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction&id=org.eclipse.sdk.samples.swt.examples