Όταν μια πρόσθετη λειτουργία συνεισφέρει μια ενέργεια στο περιβάλλον χρήστη του πάγκου εργασίας χρησιμοποιώντας ένα από τα σημεία επέκτασης μενού, μπορεί να καθορίσει τις συνθήκες κάτω από τις οποίες το στοιχείο μενού θα είναι ορατό ή/και ενεργοποιημένο στο μενού. Εκτός από την παροχή απλών συνθηκών ενεργοποίησης, όπως καταμετρήσεις επιλογών και κλάσεις επιλογών, οι πρόσθετες λειτουργίες μπορεί να χρησιμοποιούν εκφράσεις λογικής τιμής για μεγαλύτερη ευελιξία στον καθορισμό της ορατότητας ή την ενεργοποίησης μιας ενέργειας.
Οι εκφράσεις λογικής τιμής μπορεί να περιέχουν λογικούς τελεστές (NOT, AND, OR) σε συνδυασμό με μια προκαθορισμένη σύνταξη για την αποτίμηση ορισμένων συνθηκών. Πολλές από αυτές τις συνθήκες δοκιμάζουν ένα συγκεκριμένο αντικείμενο. Η ταυτότητα του εστιαζόμενου αντικειμένου (το αντικείμενο που δοκιμάζεται) εξαρτάται από το συγκεκριμένο περιβάλλον της έκφρασης "enablement":
Όταν προσδιορίζετε μια τιμή η οποία θα δοκιμαστεί ως προς οποιαδήποτε από αυτές τις εκφράσεις, η τιμή θεωρείται ότι είναι μια σειρά χαρακτήρων, με εξαίρεση τις περιπτώσεις που οι ακόλουθες μετατροπές είναι επιτυχείς:
Ολοκληρωμένος ορισμός της σύνταξης XML του "enablement" μπορεί να βρεθεί στην τεκμηρίωση αναφοράς του σημείου επέκτασης για κάθε επέκταση που ορίζει ένα στοιχείο enablement, όπως το org.eclipse.ui.popupMenus.
Πριν το R3.0, αυτές οι γενικευμένες εκφράσεις λογικής τιμής δεν ήταν διαθέσιμες. Οι ακόλουθες προκαθορισμένες εκφράσεις χρησιμοποιήθηκαν για την αποτίμηση ορισμένων συνθηκών χωρίς τη δόμηση μιας γενικής έκφρασης. Σημειώστε ότι όλες αυτές οι εκφράσεις μπορούν τώρα να εκφραστούν με την πιο γενικευμένη σύνταξη. Οι προκαθορισμένες εκφράσεις μπορούν ακόμη να χρησιμοποιηθούν ως εξής:
objectClass - "true" εάν κάθε αντικείμενο στην επιλογή δημιουργεί υποκλάσεις ή υλοποιεί την κλάση.
objectState - "true" αν το ονομασμένο γνώρισμα είναι ίσο με την καθορισμένη τιμή. IActionFilter βοηθά στην αποτίμηση της έκφρασης. Ένα φίλτρο ενεργειών υπολογίζει δυναμικά τα κριτήρια της έκφρασης "enablement" για μια ενέργεια με βάση την επιλογή προορισμού και την τιμή των ονομασμένων γνωρισμάτων.
systemProperty - "true" εάν η ονομασμένη ιδιότητα συστήματος είναι ίση με την καθορισμένη τιμή.
pluginState - καθορίζει αν η καθορισμένη πρόσθετη λειτουργία (σύμφωνα με το id) θα πρέπει να είναι installed ή activated
Για παράδειγμα, τα ακόλουθα τμήματα κώδικα αντιπροσωπεύουν εκφράσεις "enablement" που θα μπορούσαν να χρησιμοποιηθούν σε μια υποθετική ενέργεια σε ένα σύνολο ενεργειών:
<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>
Ανατρέξτε στην τεκμηρίωση αναφοράς των σημείων επέκτασης για πιο περίπλοκα δείγματα αυτών των εκφράσεων και για πλήρη περιγραφή του XML.
Ο ακόλουθος πίνακας περιέχει τη λίστα των σημείων επέκτασης που συνεισφέρουν ενέργειες και αναφέρει περιληπτικά τον τρόπο με τον οποίο τα γνωρίσματα σήμανσης XML και οι εκφράσεις λογικής τιμής μπορούν να χρησιμοποιηθούν για να επηρεάσουν την έκφραση "enablement".
Όνομα σημείου επέκτασης |
Γνωρίσματα που επηρεάζουν την έκφραση "enablement" |
Εκφράσεις λογικής τιμής |
---|---|---|
enablesFor - καθορίζει το πλήθος των επιλογών που πρέπει να ισχύουν για να ενεργοποιηθεί η ενέργεια selection class - η κλάση την οποία τα επιλεγμένα αντικείμενα πρέπει να υλοποιούν ή στην οποία πρέπει να δημιουργούν υποκλάσεις, προκειμένου να ενεργοποιηθεί η ενέργεια selection name - ένα φίλτρο χαρακτήρων υποκατάστασης που μπορεί να εφαρμοστεί στα αντικείμενα της επιλογής. |
visibility - μια έκφραση λογικής τιμής.Ελέγχει εάν το στοιχείο μενού είναι ορατό στο μενού. enablement - μια έκφραση λογικής τιμής.Ελέγχει αν το στοιχείο μενού είναι ενεργοποιημένο στο μενού.Το γνώρισμα enablesFor και τα selection class και name πρέπει να ικανοποιούνται πριν την εφαρμογή της έκφρασης "enablement". |
|
(Μόνο για συνεισφορές αντικειμένων.) objectClass - καθορίζει την κλάση την οποία πρέπει υλοποιούν τα αντικείμενα στην επιλογή ή στην οποία πρέπει να δημιουργούν υποκλάσεις (Και για συνεισφορές αντικειμένου και για συνεισφορές λειτουργίας προβολής) enablesFor - καθορίζει το πλήθος των επιλογών που πρέπει να ισχύουν για να ενεργοποιηθεί η ενέργεια selection class - η κλάση την οποία τα επιλεγμένα αντικείμενα πρέπει να υλοποιούν ή στην οποία πρέπει να δημιουργούν υποκλάσεις, προκειμένου να ενεργοποιηθεί η ενέργεια selection name - ένα φίλτρο χαρακτήρων υποκατάστασης που μπορεί να εφαρμοστεί στα αντικείμενα της επιλογής.
|
(Και για συνεισφορές αντικειμένου και για συνεισφορές λειτουργίας προβολής) visibility - μια έκφραση λογικής τιμής.Ελέγχει εάν το στοιχείο μενού είναι ορατό στο μενού. enablement - μια έκφραση λογικής τιμής.Ελέγχει αν το στοιχείο μενού είναι ενεργοποιημένο στο μενού.Το γνώρισμα enablesFor και τα selection class και name πρέπει να ικανοποιούνται πριν την εφαρμογή της έκφρασης "enablement". |
Η δυνατότητα ορισμού ειδών περιεχομένου (ανατρέξτε στην ενότητα Είδη περιεχομένου) μπορεί να συνδυαστεί με εκφράσεις λογικής τιμής για να καθορίσει πολύ συγκεκριμένες συνθήκες ενεργοποίησης ή ορατότητας με βάση το είδος του περιεχομένου ενός πόρου. Για παράδειγμα, το ακόλουθο τμήμα κώδικα κάνει ορατό ένα στοιχείο αναδυόμενου μενού μόνο αν το περιεχόμενο του επιλεγμένου αρχείου συμφωνεί με τα εξειδικευμένα είδη περιεχομένου της πρόσθετης λειτουργίας.
<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" ...Το γνώρισμα contentTypeId μπορεί να χρησιμοποιηθεί σε μια έκφραση "objectState" για να ελεγχθεί το είδος περιεχομένου του επιλεγμένου αρχείου xml. Αυτό επιτρέπει στην πρόσθετη λειτουργία να εφαρμόσει πολύ συγκεκριμένο έλεγχο περιεχομένου, πριν από την ενεργοποίηση ή την προβολή ενεργειών μενού που σχετίζονται με συγκεκριμένα είδη αρχείων. Ανατρέξτε στην ενότητα Είδη περιεχομένου για περισσότερες λεπτομέρειες σχετικά με την επέκταση είδους περιεχομένου.