Editor interni ed esterni

org.eclipse.ui.editors

Questo punto di estensione viene utilizzato per aggiungere nuovi editor al workbench. Un editor è un componente visivo all'interno del workbench. Viene generalmente utilizzato per modificare o esaminare un documento o un oggetto. Per aprire un editor, in genere si impartisce il comando "Apri" su un file IFile. Quando viene eseguita questa azione, il registro del workbench viene consultato per determinare un editor appropriato al tipo di file e viene creata una nuova istanza del tipo di editor. Il risultato effettivo dipende dal tipo di editor. Il workbench supporta la creazione di editor interni, strettamente integrati nel workbench, e di editor esterni, che vengono avviati in una finestra frame separata. Esistono, inoltre, vari livelli di integrazione intermedi.

Un editor interno può essere strettamente integrato alla finestra del workbench. Nel menu e nella barra degli strumenti del workbench sono precaricate molte azioni comuni, come taglia, copia e incolla. La parte attiva, editor o vista, è incaricata di implementare queste azioni. Un editor interno, inoltre, può definire nuove azioni che vengono visualizzate nella finestra del workbench. Queste azioni vengono visualizzate soltanto quando l'editor è attivo.

L'integrazione tra il workbench e gli editor esterni è più debole. In questo caso, il workbench può avviare un editor ma poi non è in grado di determinare lo stato dell'editor esterno o di collaborare se non attraverso il file system.

<!ELEMENT extension (editor*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT editor (contentTypeBinding*)>

<!ATTLIST editor

id               CDATA #REQUIRED

name             CDATA #REQUIRED

icon             CDATA #IMPLIED

extensions       CDATA #IMPLIED

class            CDATA #IMPLIED

command          CDATA #IMPLIED

launcher         CDATA #IMPLIED

contributorClass CDATA #IMPLIED

default          (true | false) "false"

filenames        CDATA #IMPLIED

symbolicFontName CDATA #IMPLIED

matchingStrategy CDATA #IMPLIED>


<!ELEMENT contentTypeBinding EMPTY>

<!ATTLIST contentTypeBinding

contentTypeId CDATA #REQUIRED>

Indica che l'editor riconosce il tipo di contenuto fornito ed è adatto alla modifica di file di questo tipo.



Di seguito è riportato un esempio di definizione dell'estensione dell'editor interno:

   

<extension point=

"org.eclipse.ui.editors"

>

<editor id=

"com.xyz.XMLEditor"

name=

"Fancy XYZ XML editor"

icon=

"./icons/XMLEditor.gif"

extensions=

"xml"

class=

"com.xyz.XMLEditor"

contributorClass=

"com.xyz.XMLEditorContributor"

symbolicFontName=

"org.eclipse.jface.textfont"

default=

"false"

>

</editor>

</extension>

L'attributo command, se utilizzato, sarà considerato come riga comandi di un programma esterno, la cui modalità di esecuzione dipende dalla piattaforma.

Se viene utilizzato l'attributo launcher, anche l'editor sarà considerato come un programma esterno. In questo caso, la classe specificata deve implementare org.eclipse.ui.IEditorLauncher. Dopo la creazione di un'istanza dell'utilità di avvio, verrà richiamato open(IFile file) per avviare l'editor.

Se viene utilizzato un attributo di classe, il workbench lo considera come un editor interno e la classe specificata deve implementare org.eclipse.ui.IEditorPart. Di norma si definisce una sottoclasse org.eclipse.ui.EditorPart durante la definizione di un nuovo tipo di editor. Occorre anche definire un attributo contributorClass. La classe specificata deve implementare org.eclipse.ui.IEditorActionBarContributor, ed è utilizzata per aggiungere nuove azioni al menu e alla barra degli strumenti del workbench che riflettono le funzioni del tipo di editor.

All'interno del workbench può essere aperto più di un editor di un determinato tipo. Ad esempio, può essere presente più di un editor Java aperto. Per evitare la creazione di azioni e immagini di azione duplicate, il concetto di editor viene suddiviso in due componenti. IEditorActionBarContributor è responsabile della creazione delle azioni. L'editor è responsabile dell'implementazione dell'azione. L'elemento responsabile del contributo, inoltre è condiviso da ciascun editor aperto. Di conseguenza, esiste un solo insieme di azioni per uno o più editor aperti.

La classe contributor è utilizzata per aggiungere nuove azioni al menu e alla barra degli strumenti del workbench che riflettono il tipo di editor. Queste azioni sono condivise e, se richiamate, agiscono sull'editor attivo. L'editor attivo è trasferito al contributor richiamando IEditorActionBarContributor.setActiveEditor. Gli identificativi delle azioni e i maggiori gruppi all'interno della finestra del workbench vengono definiti in org.eclipse.ui.IWorkbenchActionConstants. Questi devono essere utilizzati come punto di riferimento per l'aggiunta di nuove azioni. I menu di livello superiore vengono creati utilizzando per l'attributo path i seguenti valori:

Le azioni e i menu aggiunti in questi percorsi vengono visualizzati soltanto quando l'editor ad essi associato è attivo. Alla chiusura dell'editor, menu ed azioni vengono rimossi.

Il workbench fornisce un editor di testo predefinito. Il prodotto dell'utente finale potrebbe avere in dotazione altri editor. Gli editor, nel caso, saranno registrati come estensioni utilizzando la sintassi sopra descritta.