Η ενεργοποίηση ή/και η ορατότητα μιας ενέργειας μπορεί να οριστεί χρησιμοποιώντας τα στοιχεία enablement και visibility αντίστοιχα. Αυτά τα δύο στοιχεία περιέχουν μια λογική έκφραση που αποτιμάται για τον καθορισμό των στοιχείων enablement ή/και visibility.
Η σύνταξη είναι η ίδια για τα στοιχεία enablement και visibility. Και τα δύο περιέχουν ένα υποστοιχείο λογικής έκφρασης. Στην πιο απλή περίπτωση, θα πρόκειται για ένα στοιχείο objectClass, objectState, pluginState ή systemProperty. Στην πιο σύνθετη περίπτωση, είναι δυνατός ο συνδυασμός των στοιχείων and, or και not για τη διαμόρφωση μιας λογικής έκφρασης. Τόσο το στοιχείο and, όσο και το or πρέπει να περιέχουν 2 υποστοιχεία. Το στοιχείο not πρέπει να περιέχει μόνο 1 υποστοιχείο.
<!ELEMENT extension (viewContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT viewContribution (menu* , action*)>
<!ATTLIST viewContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
Αυτό το στοιχείο χρησιμοποιείται για τον ορισμό μιας ομάδας ενεργειών ή/και μενού προβολής.
<!ELEMENT action (selection* | enablement?)>>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
menubarPath CDATA #IMPLIED
toolbarPath CDATA #IMPLIED
icon CDATA #IMPLIED
disabledIcon CDATA #IMPLIED
hoverIcon CDATA #IMPLIED
tooltip CDATA #IMPLIED
helpContextId CDATA #IMPLIED
style (push|radio|toggle) "push"
state (true | false)
class CDATA #REQUIRED
enablesFor CDATA #IMPLIED>
Αυτό το στοιχείο ορίζει μια ενέργεια την οποία μπορεί ο χρήστης να καλέσει στο περιβάλλον χρήστη.
push | - ως κανονικό στοιχείο μενού ή στοιχείο εργαλείου. | |
radio | - ως στοιχείο μενού ή στοιχείο εργαλείου σε στυλ κουμπιού επιλογής. Ενέργειες με το στυλ κουμπιού επιλογής εντός της ίδιας ομάδας μενού ή γραμμής εργαλείων συμπεριφέρονται ως ένα σύνολο κουμπιών επιλογής. Η αρχική τιμή προσδιορίζεται από το γνώρισμα state. | |
toggle | - ως στοιχείο μενού με στυλ σημαδιού επιλογής ή ως στοιχείο εργαλείου ενεργοποίησης. Η αρχική τιμή προσδιορίζεται από το γνώρισμα state. |
! | - έχουν επιλεγεί 0 στοιχεία | |
? | - έχουν επιλεγεί 0 ή 1 στοιχεία | |
+ | - έχουν επιλεγεί 1 ή περισσότερα στοιχεία | |
multiple, 2+ | - έχουν επιλεγεί 2 ή περισσότερα στοιχεία | |
n | - έχει επιλεγεί ακριβής αριθμός στοιχείων. Για παράδειγμα: Το γνώρισμα enablesFor=" 4" ενεργοποιεί την ενέργεια μόνο όταν επιλεγούν 4 στοιχεία | |
* | - έχει επιλεγεί οποιοσδήποτε αριθμός στοιχείων |
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Αυτό το στοιχείο χρησιμοποιείται για να ορίσει ένα νέο μενού.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Αυτό το στοιχείο χρησιμοποιείται για τη δημιουργία ενός διαχωριστικού στο νέο μενού.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Αυτό το στοιχείο χρησιμοποιείται για τη δημιουργία μιας επώνυμης ομάδας στο νέο μενού. Δεν έχει οπτική αναπαράσταση στο νέο μενού, αντίθετα με το στοιχείο separator.
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Αυτό το στοιχείο χρησιμοποιείται για τον καθορισμό της ενεργοποίησης ενέργειας με βάση την τρέχουσα επιλογή. Παραβλέπεται εάν έχει προσδιοριστεί το στοιχείο enablement.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Αυτό το στοιχείο χρησιμοποιείται για τον ορισμό της ενεργοποίησης της επέκτασης.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Αυτό το στοιχείο χρησιμοποιείται για τον ορισμό της ορατότητας της επέκτασης.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Το στοιχείο αυτό εκφράζει ένα λογικό τελεστή AND στο αποτέλεσμα της αποτίμησης των εκφράσεων των δύο υποστοιχείων του.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Το στοιχείο αυτό εκφράζει ένα λογικό τελεστή OR στο αποτέλεσμα της αποτίμησης των εκφράσεων των δύο υποστοιχείων του.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Το στοιχείο αυτό εκφράζει ένα λογικό τελεστή ΝΟΤ στο αποτέλεσμα της αποτίμησης των εκφράσεων των υποστοιχείων του.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Αυτό το στοιχείο χρησιμοποιείται για την αποτίμηση της κλάσης ή της διεπαφής κάθε αντικειμένου στην τρέχουσα επιλογή. Εάν κάθε αντικείμενο στην επιλογή υλοποιεί την προσδιορισμένη κλάση ή διεπαφή, η έκφραση αποτιμάται ως "true".
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Αυτό το στοιχείο χρησιμοποιείται για την αποτίμηση γνωρίσματος state κάθε αντικειμένου της τρέχουσας επιλογής. Εάν κάθε αντικείμενο στην επιλογή έχει προσδιορισμένο το γνώρισμα state, η έκφραση αποτιμάται ως true. Για την αποτίμηση αυτού του είδους έκφρασης, κάθε αντικείμενο στην επιλογή πρέπει να υλοποιεί ή να προσαρμόζεται στη διεπαφή org.eclipse.ui.IActionFilter.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Αυτό το στοιχείο χρησιμοποιείται για την αποτίμηση της κατάστασης μιας πρόσθετης λειτουργίας. Μια πρόσθετη λειτουργία μπορεί να βρίσκεται σε μία από τις παρακάτω καταστάσεις: installed (ισοδύναμη με την έννοια "resolved" του OSGi) ή activated (ισοδύναμη με την έννοια "active"του OSGi).
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Αυτό το στοιχείο χρησιμοποιείται για την αποτίμηση της κατάστασης μερικών ιδιοτήτων συστήματος. Η τιμή ιδιότητας ανακτάται από το java.lang.System.
<extension point=
"org.eclipse.ui.viewActions"
>
<viewContribution id=
"com.xyz.xyzViewC1"
targetID=
"org.eclipse.ui.views.navigator.ResourceNavigator"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/additions"
style=
"toggle"
state=
"true"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
</viewContribution>
</extension>
Στο παραπάνω παράδειγμα, η προσδιορισμένη ενέργεια θα ενεργοποιηθεί μονο για μια μοναδική επιλογή (γνώρισμα enablesFor). Επίσης, το αντικείμενο στην επιλογή πρέπει να αποτελεί πόρο αρχείου Java.
Ακολουθεί ένα άλλο παράδειγμα επέκτασης ενέργειας προβολής:
<extension point=
"org.eclipse.ui.viewActions"
>
<viewContribution id=
"com.xyz.xyzViewC1"
targetID=
"org.eclipse.ui.views.navigator.ResourceNavigator"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ2"
label=
"&Run XYZ2 Tool"
menubarPath=
"com.xyz.xyzMenu/group1"
style=
"push"
icon=
"icons/runXYZ2.gif"
tooltip=
"Run XYZ2 Tool"
helpContextId=
"com.xyz.run_action_context2"
class=
"com.xyz.actions.RunXYZ2"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
</viewContribution>
</extension>
Στο παραπάνω παράδειγμα, η προσδιορισμένη ενέργεια θα εμφανιστεί ως στοιχείο μενού. Η ενέργεια ενεργοποιείται αν η επιλογή δεν περιέχει πόρους αρχείου Java.
Η διεπαφή org.eclipse.ui.IViewActionDelegate επεκτείνει τη διεπαφή org.eclipse.ui.IActionDelegate και προσθέτει μια νέα μέθοδο που επιτρέπει στην παραπομπή να αποδώσει αρχικές τιμές στη χρήση προβολής στην οποία πραγματοποιεί συνεισφορά.
Αυτό το σημείο επέκτασης μπορεί να χρησιμοποιηθεί για τη συνεισφορά ενεργειών σε μενού που έχουν δημιουργηθεί νωρίτερα από την προβολή προορισμού. Η παράβλεψη του γνωρίσματος διαδρομής μενού θα οδηγήσει στην προσθήκη του νέου μενού ή της ενέργειας στο τέλος του αναπτυσσόμενου μενού.
Τα κριτήρια ενεργοποίησης για μια επέκταση ενέργειας καθορίζονται αρχικά από το γνώρισμα enablesFor, και επίσης από τα στοιχεία selection ή enablement. Ωστόσο, μόλις δημιουργηθεί χρήση για την παραπομπή ενέργειας, μπορεί άμεσα να ελέγχει την κατάσταση ενεργοποίησης της ενέργειας από τη μέθοδο selectionChanged.
Οι ετικέτες ενεργειών και μενού μπορούν να περιέχουν ειδικούς χαρακτήρες για την κωδικοποίηση μνημονικών με χρήση των παρακάτω κανόνων:
Τα στοιχεία selection και enablement δεν μπορούν να συνυπάρχουν. Το στοιχείο enablement μπορεί να αντικαταστήσει το στοιχείο selection χρησιμοποιώντας τα υπο-στοιχεία objectClass και objectState. Για παράδειγμα, το ακόλουθο:
μπορεί να εκφραστεί χρησιμοποιώντας:<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
>
</selection>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<objectState name=
"extension"
value=
"java"
/>
</and>
</enablement>
Copyright (c) 2002, 2005 IBM Corporation και άλλων.
Με την επιφύλαξη παντός δικαιώματος. Αυτό το πρόγραμμα και τα
συνοδευτικά του υλικά διατίθενται βάσει των όρων της κοινής άδειας
χρήσης Eclipse Public License v1.0 που συνοδεύει αυτή τη διανομή και
διατίθεται στην ακόλουθη διεύθυνση:
http://www.eclipse.org/legal/epl-v10.html.