Το αρχικό σύνολο συνεισφοράς για μια λειτουργία επεξεργασίας ορίζεται από ένα άλλο σημείο επέκτασης (org.eclipse.ui.editors). Ένα σύνολο ενεργειών δημιουργείται και είναι κοινόχρηστο για όλες τις χρήσεις του ίδιου είδους λειτουργίας επεξεργασίας. Όταν κληθούν, αυτές οι ενέργειες εφαρμόζονται στην ενεργή λειτουργία επεξεργασίας. Αυτό το σημείο επέκτασης ακολουθεί το ίδιο μοτίβο. Κάθε επέκταση ενέργειας δημιουργείται και είναι κοινόχρηστη για όλες τις χρήσεις του ίδιου είδους λειτουργίας επεξεργασίας. Η κλάση της ενέργειας είναι απαραίτητο να υλοποιεί τη διεπαφή org.eclipse.ui.IEditorActionDelegate. Η ενεργή λειτουργία επεξεργασίας μεταβιβάζεται στον εκπρόσωπο με κλήση της μεθόδου IEditorActionDelegate.setActiveEditor.
Η ενεργοποίηση ή/και η ορατότητα μιας ενέργειας μπορεί να οριστεί χρησιμοποιώντας τα στοιχεία enablement και visibility αντίστοιχα. Αυτά τα δύο στοιχεία περιέχουν μια λογική έκφραση που αποτιμάται για τον καθορισμό των στοιχείων enablement ή/και visibility.
Η σύνταξη είναι η ίδια για τα στοιχεία enablement και visibility. Και τα δύο περιέχουν ένα υποστοιχείο λογικής έκφρασης. Στην πιο απλή περίπτωση, θα πρόκειται για ένα στοιχείο objectClass, objectState, pluginState ή systemProperty. Στην πιο σύνθετη περίπτωση, είναι δυνατός ο συνδυασμός των στοιχείων and, or και not για τη διαμόρφωση μιας λογικής έκφρασης. Τόσο το στοιχείο and, όσο και το or πρέπει να περιέχουν 2 υποστοιχεία. Το στοιχείο not πρέπει να περιέχει μόνο 1 υποστοιχείο.
<!ELEMENT extension (editorContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT editorContribution (menu* , action*)>
<!ATTLIST editorContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
Αυτό το στοιχείο χρησιμοποιείται για τον ορισμό μιας ομάδας ενεργειών ή/και μενού λειτουργιών επεξεργασίας.
<!ELEMENT action (selection* | enablement?)>>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
accelerator CDATA #IMPLIED
definitionId CDATA #IMPLIED
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
actionID 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.editorActions"
>
<editorContribution id=
"com.xyz.xyzContribution"
targetID=
"com.ibm.XMLEditor"
>
<menu id=
"XYZ"
label=
"&XYZ Menu"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
menubarPath=
"XYZ/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>
</editorContribution>
</extension>
Στο παραπάνω παράδειγμα, η προσδιορισμένη ενέργεια θα εμφανιστεί ως στοιχείο τετραγωνιδίου επιλογής στο νέο μενού ανωτέρου επιπέδου που ονομάζεται "Μενού XYZ" και ως κουμπί εναλλαγής στη γραμμή εργαλείων. Η ενέργεια ενεργοποιείται αν η επιλογή περιέχει μόνο πόρους αρχείου Java.
Ακολουθεί ένα άλλο παράδειγμα επέκτασης ενέργειας λειτουργίας επεξεργασίας:
<extension point=
"org.eclipse.ui.editorActions"
>
<editorContribution id=
"com.xyz.xyz2Contribution"
targetID=
"com.ibm.XMLEditor"
>
<menu id=
"XYZ2"
label=
"&XYZ2 Menu"
path=
"edit/additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ2"
label=
"&Run XYZ2 Tool"
menubarPath=
"edit/XYZ2/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>
</editorContribution>
</extension>
Στο παραπάνω παράδειγμα, η προσδιορισμένη ενέργεια θα εμφανιστεί ως στοιχείο μενου στο υπο-μενού με το όνομα "Μενού XYZ2" στο ανωτέρου επιπέδου μενού "Επεξεργασία". Η ενέργεια ενεργοποιείται αν η επιλογή δεν περιέχει πόρους αρχείου Java.
Αυτό το σημείο επέκτασης μπορεί να χρησιμοποιηθεί για τη συνεισφορά ενεργειών σε μενού που έχουν δημιουργηθεί νωρίτερα από τη λειτουργία επεξεργασίας προορισμού. Επίσης, μπορεί να γίνει συνεισφορά μενού και ενεργειών στο παράθυρο του πάγκου εργασίας. Οι ταυτότητες για τις ενέργειες και τις κύριες ομάδες του παραθύρου του πάγκου εργασίας ορίζονται στη διεπαφή org.eclipse.ui.IWorkbenchActionConstants. Αυτές πρέπει να χρησιμοποιούνται ως σημείο αναφοράς για την προσθήκη νέων ενεργειών. Τα μενού ανωτέρου επιπέδου δημιουργούνται με τη βοήθεια των ακόλουθων τιμών για το γνώρισμα διαδρομής:
Οι ενέργειες και τα μενού που προστίθενται σε αυτές τις διαδρομές θα εμφανίζονται μόνο όταν είναι ενεργή η συσχετισμένη λειτουργία επεξεργασίας. Όταν είναι κλειστή η λειτουργία επεξεργασίας, τα μενού και οι ενέργειες αφαιρούνται.
Τα κριτήρια ενεργοποίησης για μια επέκταση ενέργειας καθορίζονται αρχικά από το γνώρισμα 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) 2000, 2005 IBM Corporation και άλλων.
Με την επιφύλαξη παντός δικαιώματος. Αυτό το πρόγραμμα και τα
συνοδευτικά του υλικά διατίθενται βάσει των όρων της κοινής άδειας
χρήσης Eclipse Public License v1.0 που συνοδεύει αυτή τη διανομή και
διατίθεται στην ακόλουθη διεύθυνση:
http://www.eclipse.org/legal/epl-v10.html.