Quando un plugin fornisce un'azione all'interfaccia utente del workbench utilizzando uno dei punti di estensione di menu, può specificare le condizioni in base alle quali la voce di menu viene attivata (o visualizzata) nel menu. Oltre a fornire semplici condizioni di attivazione, ad esempio conteggi delle selezioni e classi delle selezioni, i plugin possono utilizzare espressioni booleane per una maggiore flessibilità nel determinare quando un'azione deve essere visibile o attivata.
Le espressioni booleane possono contenere gli operatori booleani (NOT, AND, OR) combinati con una sintassi predefinita per la valutazione di determinate condizioni. Molte di queste condizioni verificano un particolare oggetto. L'identità dell'oggetto attivo (l'oggetto da verificare) dipende dal contesto specifico dell'espressione di attivazione:
Quando si specifica un valore da verificare con una di queste espressioni, si assume che il valore sia una stringa, tranne quando sono effettuate correttamente le seguenti conversioni:
Una definizione completa della sintassi di attivazione XML si trova nella documentazione di riferimento del punto di estensione, per qualsiasi estensione che definisce un elemento enablement, come org.eclipse.ui.popupMenus.
Prima della versione 3.0, queste espressioni booleane generalizzate non erano disponibili. Le espressioni predefinite riportate di seguito erano utilizzate per valutare determinate condizioni senza generare un'espressione generale. Si noti che alcune di queste espressioni possono ora essere espresse con una sintassi più generalizzata. Le espressioni predefinite possono ancora essere utilizzate nel modo seguente:
objectClass - true se ogni oggetto nella selezione suddivide in classi secondarie o implementa la classe.
objectState - true se l'attributo denominato corrisponde al valore specificato. IActionFilter fornisce il supporto necessario nella valutazione dell'espressione. Un filtro di azioni elabora in maniera dinamica i criteri di attivazione per un'azione in base alla selezione della destinazione e al valore degli attributi denominati.
systemProperty - true se la proprietà di sistema denominata equivale al valore specificato.
pluginState - indica se il plugin specificato (tramite ID) deve essere installato o attivato.
Ad esempio, i frammenti riportati di seguito rappresentano espressioni di attivazione che è possibile utilizzare per un'azione ipotetica di un insieme di azioni:
<action id="org.eclipse.examples.actionEnablement.class" label="Red Element" menubarPath="additions" class="org.eclipse.examples.actionEnablement.ObjectTestAction"> <enablement> <and> <objectClass name="org.eclipse.examples.actionEnablement.TestElement"/> <objectState name="name" value="red"/> </and> </enablement> </action>
<action id="org.eclipse.examples.actionEnablement.property" label="Property" menubarPath="additions" class="org.eclipse.examples.actionEnablement.PropertyTestAction"> <enablement> <systemProperty name="MyTestProperty" value="puppy"/> </enablement> </action>
<action id="org.eclipse.examples.actionEnablement.pluginState" label="Installed" menubarPath="additions" class="org.eclipse.examples.actionEnablement.PluginTestAction"> <enablement> <pluginState id="x.y.z.anotherPlugin" value="installed"/> </enablement> </action>
Per ulteriori esempi di questo tipo di espressioni e per una descrizione completa dell'XML, fare riferimento alla documentazione sui punti di estensione.
Nella tabella seguente sono elencati i punti di estensione che aggiungono azioni e sono illustrate le modalità di utilizzo delle espressioni booleane e degli attributi di tag XML per l'attivazione.
Nome del punto di estensione |
Attributi che influenzano l'attivazione |
Espressioni booleane |
---|---|---|
enablesFor - specifica il conteggio delle selezioni che è necessario raggiungere per attivare l'azione selection class - la classe che gli oggetti selezionati devono suddividere in classi secondarie o implementare per attivare l'azione selection name - un filtro con caratteri jolly che può essere applicato agli oggetti selezionati. |
visibility - un'espressione booleana. Controlla se la voce di menu è visibile nel menu. enablement - un'espressione booleana. Controlla se la voce di menu è abilitata nel menu. È necessario specificare l'attributo enablesFor e selection class e name prima di applicare l'espressione di attivazione. |
|
(Solo per i contributi relativi agli oggetti.) objectClass - specifica la classe che gli oggetti selezionati devono suddividere in classi secondarie o implementare (Per i contributi relativi agli oggetti e ai visualizzatori) enablesFor - specifica il conteggio delle selezioni che è necessario raggiungere per attivare l'azione selection class - la classe che gli oggetti selezionati devono suddividere in classi secondarie o implementare per attivare l'azione selection name - un filtro con caratteri jolly che può essere applicato agli oggetti selezionati.
|
(Per i contributi relativi agli oggetti e ai visualizzatori) visibility - un'espressione booleana. Controlla se la voce di menu è visibile nel menu. enablement - un'espressione booleana. Controlla se la voce di menu è abilitata nel menu. È necessario specificare l'attributo enablesFor e selection class e name prima di applicare l'espressione di attivazione. |
La capacità di definire i tipi di contenuto (fare riferimento alla sezione Tipi di contenuto) può essere unita alle espressioni booleane per definire condizioni molto specifiche di abilitazione o visibilità, basate sul tipo di contenuto di una risorsa. Ad esempio, il frammento di seguito riportato costituisce una voce di menu a comparsa visibile solo se il contenuto del file selezionato corrisponde ai tipi di contenuto specifici del plugin.
<extension point="org.eclipse.ui.popupMenus"> <objectContribution id="com.example.objectContributions" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.xml"> <visibility> <or> <objectState name="contentTypeId" value="com.example.employeeRecordContentType"/> <objectState name="contentTypeId" value="com.example.customerRecordContentType"/> </or> </visibility> <action id="com.example.action1" ...L'attributo contentTypeId può essere utilizzato in un'espressione objectState per verificare il tipo di contenuto del file xml selezionato. Ciò consente ad un plugin di applicare una verifica del contenuto molto specifica, prima di abilitare o di visualizzare le azioni del menu relative a specifici tipi di file. Per ulteriori dettagli sull'estensione del tipo di contenuto, fare riferimento alla sezione Tipi di contenuto.