Menu, barre degli strumenti e azioni dell'editor

Identificativo: org.eclipse.ui.editorActions

Descrizione: questo punto di estensione consente di aggiungere azioni al menu e alla barra degli strumenti degli editor registrati da altri plug-in.

La serie iniziale di contributi di un editor è definita da un altro punto di estensione (org.eclipse.ui.editors). Un'unica serie di azioni viene creata e condivisa da tutte le istanze dello stesso tipo di editor.  Quando vengono richiamate, queste azioni agiscono sull'editor attivo.  Questo punto di estensione segue lo stesso modello.  Ciascuna estensione dell'azione viene creata e condivisa da tutte le istanze dello stesso tipo di editor.  E necessaria la classe di azione che implementa org.eclipse.ui.IEditorActionDelegate.  L'editor attivo è trasferito al delegato richiamando IEditorActionDelegate#setActiveEditor.

Tag di configurazione:

   <!ELEMENT editorContribution (menu | action)*>
   <!ATTLIST editorContribution
      id         CDATA #REQUIRED
      targetID   CDATA #REQUIRED
   >

  • id - un identificativo univoco che può essere utilizzato per fare riferimento a questi elementi
  • editorID - un identificativo univoco di un editor registrato in precedenza che costituisce la destinazione di questo contributo.
  •    <!ELEMENT menu (separator)+>
       <!ATTLIST menu
          id         CDATA #REQUIRED
          label      CDATA #REQUIRED
          path       CDATA #IMPLIED
       >    <!ELEMENT separator EMPTY>
       <!ATTLIST separator
          name       CDATA #REQUIRED
       >
  • name - un nome del separatore a cui si può in seguito fare riferimento come ultimo token nel percorso dell'azione. Pertanto, i separatori fungono da gruppi denominati in cui è possibile aggiungere azioni.
  •    <!ELEMENT action (selection)* (enablement)?>
       <!ATTLIST action
          id                NMTOKEN #REQUIRED
          label             CDATA #REQUIRED
          accelerator       CDATA #IMPLIED
          menubarPath       CDATA #IMPLIED
          toolbarPath       CDATA #IMPLIED
          icon              CDATA #IMPLIED
          disabledIcon      CDATA #OPTIONAL
          hoverIcon         CDATA #OPTIONAL
          tooltip           CDATA #IMPLIED
          helpContextId     CDATA #IMPLIED
          state             (true | false) #IMPLIED
          class             CDATA #REQUIRED
          enablesFor        CDATA #IMPLIED
       >    <!ELEMENT selection EMPTY>
       <!ATTLIST selection
          class             CDATA #REQUIRED
          name              CDATA #IMPLIED
       >    <!ELEMENT enablement (and | or | not | objectClass | objectState | systemProperty
            | pluginState)>
       <!ATTLIST enablement EMPTY>
    In Eclipse 2.0, è possibile utilizzare un elemento enablement per definire l'abilitazione dell'azione.  Per ulteriori informazioni sull'utilizzo dell'elemento enablement, consultare actionExpressions.html.
    I criteri di abilitazione per l'estensione di un'azione sono inizialmente definiti da enablesFor, selection e enablement.  Tuttavia, dopo aver creato l'istanza di gestione dell'azione, è possibile controllare lo stato di abilitazione dell'azione utilizzando direttamente il relativo metodo selectionChanged.

    L'utente può includere nelle etichette delle azioni e dei menu caratteri speciali, che codificano tasti di scelta e tasti di scelta rapida, utilizzando le seguenti regole:

    1. I tasti di scelta vengono specificati mediante il carattere e commerciale ('&') davanti al carattere selezionato nel testo tradotto. Dal momento che il carattere e commerciale non è supportato nelle stringhe XML, utilizzare il carattere &amp;.
    2. I tasti di scelta rapida facoltativi vengono specificati alla fine della stringa del nome, utilizzando @ seguito da una serie di modificatori e il carattere di scelta rapida finale (ad esempio, &amp;Save@Ctrl+S). I modificatori possono essere uniti tramite il simbolo '+' come il delimitatore (ad esempio, @Ctrl+Shift+S).
    Se due o più azioni sono fornite a un menu o una barra degli strumenti mediante una singola estensione, le azioni verranno visualizzate in ordine inverso rispetto a come sono elencate nel file plugin.xml. Questo comportamento non era francamente intenzionale.  E stato, tuttavia, scoperto dopo che la versione delle   API della piattaforma Eclipse era diventata definitiva.  La modifica del comportamento adesso danneggerebbe tutti i plug-in basati sul comportamento esistente.

    Esempi:

    di seguito è riportato un esempio di punto di estensione per un'azione di editor:

       <extension point="org.eclipse.ui.editorActions">
          <editorContribution
             id="com.xyz.xyzContribution"
             targetID="com.ibm.XMLEditor">
             <menu id="XYZ" label="&amp;XYZ Menu">
                <separator name="group1"/>
             </menu>
             <action
                  id="com.xyz.runXYZ"
                  label="&amp;Run XYZ Tool"
                  menubarPath="XYZ/group1"
                  toolbarPath="Normal/additions"
                  state="true"
                  icon="icons/runXYZ.gif"
                  tooltip="Run XYZ Tool"
                  helpContextId="com.xyz.run_action_context"
                  class="com.xyz.actions.RunXYZ">
             </action>
          </editorContribution>
       </extension>

    Nell'esempio sopra riportato, l'azione specificata viene visualizzata come una casella di controllo nel nuovo menu di livello superiore denominato "XYZ Menu" e come pulsante di attivazione/disattivazione nella barra degli strumenti.

    di seguito è riportato un esempio di punto di estensione per un'azione di editor:

       <extension point="org.eclipse.ui.editorActions">
          <editorContribution
             id="com.xyz.xyz2Contribution"
             targetID="com.ibm.XMLEditor">
             <menu
                id="XYZ2"
                label="&amp;XYZ2 Menu"
                path="edit/additions">
                <separator name="group1"/>
             </menu>
             <action
                  id="com.xyz.runXYZ2"
                  label="&amp;Run XYZ2 Tool"
                  menubarPath="edit/XYZ2/group1"
                  state="true"
                  icon="icons/runXYZ2.gif"
                  tooltip="Run XYZ2 Tool"
                  helpContextId="com.xyz.run_action_context2"
                  class="com.xyz.actions.RunXYZ2">
             </action>
          </editorContribution>
       </extension>

    Nell'esempio sopra riportato, l'azione specificata viene visualizzata come una casella di controllo nel sottomenu "XYZ2 Menu" del menu di livello principale "Modifica".

    Informazione API: il valore dell'attributo class deve essere un nome completo di una classe Java che implementi org.eclipse.ui.IEditorActionDelegate. Questa interfaccia viene caricata per ultima, in modo da evitare il caricamento dell'intero plug-in prima del necessario. Il metodo setActiveEditor viene richiamato ogni qualvolta è attivato uno specifico tipo di editor. Per tutte le istanze del tipo di editor specificato viene creata un'unica serie di azioni e di menu, indipendentemente dalla quantità di istanze correntemente aperte nel workbench.

    Questo punto di estensione può essere utilizzato per contribuire con azioni ai menu precedentemente creati dall'editor di destinazione. Inoltre, è possibile contribuire con menu e azioni alla finestra del workbench.  Gli identificativi delle azioni e i maggiori gruppi all'interno della finestra del workbench vengono definiti in org.eclipse.ui.IWorkbenchActionConstants  e devono essere utilizzati come punto di riferimento per l'aggiunta di nuove azioni.  I menu di livello superiore vengono creati utilizzando i seguenti valori per l'attributo path:

    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.

    Implementazione fornita: il workbench fornisce un editor di testo predefinito incorporato. I plug-in possono contribuire all'editor predefinito o a editor forniti da altri plug-in.

    Copyright
IBM Corporation e altri 2000, 2002.