org.eclipse.ui.editors

Un editor è una parte del workbench che consente all'utente di modificare un oggetto (spesso un file). Gli editor operano come gli strumenti di modifica di un file system, tranne che per il fatto che sono strettamente integrati nell'interfaccia utente del workbench della piattaforma. Un editor è sempre associato a un oggetto di input IEditorInput. Un oggetto di input può essere considerato il documento o il file che viene modificato. Per le modifiche apportate nell'editor non viene eseguito il commit finché queste non vengono salvate.

In una pagina del workbench è possibile aprire un solo editor per qualsiasi input particolare di editor. Ad esempio, se l'utente sta modificando il file readme.txt nel workbench, quando apre nuovamente il file nella stessa prospettiva attiverà lo stesso editor. Un altro editor può essere aperto sullo stesso file utilizzando una finestra o prospettiva differente.  Diversamente dalle viste, comunque, è possibile aprire molte volte lo stesso tipo di editor (ad esempio, un editor di testo) in una pagina del workbench per gestire differenti input.

Il punto di estensione del workbench org.eclipse.ui.editors viene utilizzato dai plug-in per aggiungere editor al workbench. I plug-in che forniscono un editor possono registrare la corrispondente estensione, insieme alle informazioni sulla relativa configurazione, nel loro file plugin.xml . Alcune informazioni relative all'editor, come la classe di implementazione, il nome e l'icona da utilizzare nei menu e nelle etichette del workbench, sono simili alle informazioni relative alla vista. Inoltre, le estensioni di editor specificano i modelli di estensioni o nome del file per i tipi di file compresi dall'editor. Gli editor possono anche definire contributorClass, una classe che aggiunge azioni ai menu e alle barre degli strumenti del workbench quando l'editor è attivo.

L'interfaccia per gli editor è definita in IEditorPart, ma i plug-in possono scegliere di estendere la classe EditorPart, invece di implementare una classe IEditorPart partendo da zero.

Nota:  un'estensione di editor può anche essere configurata per avviare un programma esterno o per richiamare codice Java preesistente. In questa sezione, vengono analizzati soltanto gli editor che sono effettivamente integrati strettamente al workbench e che vengono implementati mediante IEditorPart.

Lo strumento readme fornisce un editor personalizzato principalmente per fornire la propria pagina di funzione di struttura del contenuto alla vista della struttura del workbench.  

La configurazione per l'estensione dell'editor è definita come segue:

<extension
    point = "org.eclipse.ui.editors">
	<editor
  id = "org.eclipse.ui.examples.readmetool.ReadmeEditor"
  	   name="%Editors.ReadmeEditor"
      	   icon="icons/obj16/editor.gif"
      	   class="org.eclipse.ui.examples.readmetool.ReadmeEditor"
	   extensions="readme"
           contributorClass="org.eclipse.ui.examples.readmetool.ReadmeEditorActionBarContributor">
	</editor>
</extension>

Oltre al tag conosciuto di configurazione per id, name, icon e class,  l'attributo extensions descrive i tipi di file compresi dall'editor.  (Se occorre essere più specifici, è possibile definire anche filenames).  class implementa l'editor, mentre contributorClass fornisce azioni correlate all'editor.   Si procederà ora ad analizzare più in dettaglio il concetto di contributor.

Contributor di azioni di editor

La classe contributor aggiunge al menu e alla barra degli strumenti del workbench le azioni relative a un editor. La classe deve implementare l'interfaccia IEditorActionBarContributor. Il contributor è separato dall'editor perché su una pagina del workbench possono essere presenti più editor dello stesso tipo. Un singolo contributor è condiviso da tutti gli editor di un determinato tipo senza che ciascuna istanza di un tipo di editor debba creare azioni e immagini. 

In ReadmeEditorActionBarContributor, vengono fornite tre azioni, "Editor Action1," "Editor Action2," e "Editor Action3"  , impostate nel costruttore.

   public ReadmeEditorActionBarContributor() {
      	...
	action1 = new EditorAction(MessageUtil.getString("Editor_Action1")); 
	action1.setToolTipText(MessageUtil.getString("Readme_Editor_Action1")); 
	action1.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_DISABLE);
	action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_ENABLE);
	...	
	action2 = new RetargetAction(IReadmeConstants.RETARGET2, MessageUtil.getString("Editor_Action2")); 
	action2.setToolTipText(MessageUtil.getString("Readme_Editor_Action2")); 
	action2.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_DISABLE);
	action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_ENABLE);
	...
	action3 = new LabelRetargetAction(IReadmeConstants.LABELRETARGET3, MessageUtil.getString("Editor_Action3"));
	action3.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_DISABLE);
	action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_ENABLE);
	...   
   }

I nomi e le icone per le azioni vengono impostate nel codice anziché nel file plugin.xml.  (Per ora verranno ignorate le differenze relative alle classi di azioni, che saranno invece analizzate nella sezione relativa alleazioni ridestinabili.)  

Si osservi come questa informazione sia simile all'informazione viewActions, illustrata nel tag per l'azione di visualizzazione.  Le azioni vengono impostate nel codice perché è necessario gestire la condivisione delle azioni tra diverse istanze dello stesso editor.  Quando vengono create nel constructor, le azioni sono indipendenti da qualsiasi istanza particolare dell'editor.

Quando un editor diventa attivo e dispone di azioni che devono essere installate nei menu e nelle barra degli strumenti del workbench, viene inviato al contributor il messaggio setActiveEditor, in modo che connetta le azioni dell'editor a un editor specifico.  

   public void setActiveEditor(IEditorPart editor) {
      ...
      action1.setActiveEditor(editor);
      ...
   }

Quando un editor di readme è attivo, le azioni vengono visualizzate nel menu e nella barra degli strumenti del workbench.

Voce del readme nella barra dei menu del workbench con tre azioni dell'editor

Barra degli strumenti del workbench con tre azioni del readme

Queste voci di menu e della barra degli strumenti vengono visualizzate soltanto quando l'editor è attivo. Per informazioni sul percorso delle voci di menu e della barra degli strumenti, consultare Percorsi di menu e barre degli strumenti.

Editor e funzioni di struttura del contenuto

Anche l'editor di readme, ReadmeEditor, non è molto complicato. Durante la modifica di un file readme, estende la classe TextEditor in modo da fornire una pagina personalizzata della funzione di struttura del contenuto alla vista Struttura. Non modifica alcun comportamento all'interno dell'editor di testo.

Gli editor presentano spesso delle funzioni di struttura del contenuto corrispondenti che forniscono una vista strutturata del contenuto dell'editor e assistono l'utente durante l'esplorazione.  Per ulteriori dettagli, consultare Funzioni di struttura del contenuto.

L'implementazione degli editor di testo è illustrata nella sezione Editor di testo e testo della piattaforma.

Copyright IBM Corporation e altri 2000, 2003.