Μενού, Γραμμές εργαλείων και Ενέργειες της λειτουργίας επεξεργασίας

org.eclipse.ui.editorActions

Αυτό το σημείο επέκτασης χρησιμοποιείται για την προσθήκη ενεργειών στο μενού και τη γραμμή εργαλείων για λειτουργίες επεξεργασίας που καταχωρούνται από άλλες πρόσθετες λειτουργίες.

Το αρχικό σύνολο συνεισφοράς για μια λειτουργία επεξεργασίας ορίζεται από ένα άλλο σημείο επέκτασης (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>

Αυτό το στοιχείο ορίζει μια ενέργεια την οποία μπορεί ο χρήστης να καλέσει στο περιβάλλον χρήστη.



<!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.

Η τιμή του γνωρίσματος κλάσης πρέπει να είναι ένα πλήρες όνομα κλάσης Java που υλοποιεί τη διεπαφή org.eclipse.ui.IEditorActionDelegate. Αυτή η κλάση φορτώνεται όσο το δυνατόν αργότερα για την αποφυγή φόρτωσης ολόκληρης της πρόσθετης λειτουργίας προτού αυτή καταστεί αναγκαία. Η μέθοδος setActiveEditor θα κληθεί κάθε φορά που ενεργοποιείται μια λειτουργία επεξεργασίας του προσδιορισμένου είδους. Θα δημιουργηθεί μόνο ένα σύνολο ενεργειών και μενού για όλες τις χρήσεις του προσδιορισμένου είδους λειτουργίας επεξεργασίας ανεξάρτητα από τον αριθμό των χρήσεων λειτουργίας επεξεργασίας που είναι ανοιχτές τη συγκεκριμένη στιγμή στον πάγκο εργασίας.

Αυτό το σημείο επέκτασης μπορεί να χρησιμοποιηθεί για τη συνεισφορά ενεργειών σε μενού που έχουν δημιουργηθεί νωρίτερα από τη λειτουργία επεξεργασίας προορισμού. Επίσης, μπορεί να γίνει συνεισφορά μενού και ενεργειών στο παράθυρο του πάγκου εργασίας. Οι ταυτότητες για τις ενέργειες και τις κύριες ομάδες του παραθύρου του πάγκου εργασίας ορίζονται στη διεπαφή org.eclipse.ui.IWorkbenchActionConstants. Αυτές πρέπει να χρησιμοποιούνται ως σημείο αναφοράς για την προσθήκη νέων ενεργειών. Τα μενού ανωτέρου επιπέδου δημιουργούνται με τη βοήθεια των ακόλουθων τιμών για το γνώρισμα διαδρομής:

Παράλειψη του γνωρίσματος διαδρομής θα έχει ως αποτέλεσμα την προσθήκη του νέου μενού στην ομάδα γραμμής μενού "Προσθήκες".

Οι ενέργειες και τα μενού που προστίθενται σε αυτές τις διαδρομές θα εμφανίζονται μόνο όταν είναι ενεργή η συσχετισμένη λειτουργία επεξεργασίας. Όταν είναι κλειστή η λειτουργία επεξεργασίας, τα μενού και οι ενέργειες αφαιρούνται.

Τα κριτήρια ενεργοποίησης για μια επέκταση ενέργειας καθορίζονται αρχικά από το γνώρισμα enablesFor, και επίσης από τα στοιχεία selection ή enablement. Ωστόσο, μόλις δημιουργηθεί χρήση για την παραπομπή ενέργειας, μπορεί άμεσα να ελέγχει την κατάσταση ενεργοποίησης της ενέργειας από τη μέθοδο selectionChanged.

Οι ετικέτες ενεργειών και μενού μπορούν να περιέχουν ειδικούς χαρακτήρες για την κωδικοποίηση μνημονικών με χρήση των παρακάτω κανόνων:

  1. Τα μνημονικά προσδιορίζονται χρησιμοποιώντας το σύμβολο '&' μπροστά από τον επιλεγμένο χαρακτήρα στο μεταφρασμένο κείμενο. Εφόσον το σύμβολο "&" δεν επιτρέπεται σε σειρές χαρακτήρων XML, μπορείτε να χρησιμοποιήσετε την οντότητα χαρακτήρα &.
Εάν γίνεται συνεισφορά δύο ή περισσοτέρων ενεργειών σε μενού ή γραμμή εργαλείων με μία μοναδική επέκταση, οι ενέργειες θα εμφανιστούν με την αντίστροφη σειρά από αυτή που ακολουθούν στη λίστα του αρχείου plugin.xml. Αυτή η συμπεριφορά είναι ομολογουμένως μη διαισθητική. Ωστόσο, ανακαλύφθηκε μετά το κλείδωμα του ΑΡΙ της πλατφόρμας Eclipse. Η αλλαγή της συμπεριφοράς αυτή τη στιγμή θα διέκοπτε κάθε πρόσθετη λειτουργία που βασίζεται στην υπάρχουσα συμπεριφορά.

Τα στοιχεία 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>

Ο πάγκος εργασίας παρέχει μια ενσωματωμένη προεπιλεγμένη λειτουργία επεξεργασίας κειμένου. Οι πρόσθετες λειτουργίες μπορούν να συνεισφέρουν σε αυτή την προεπιλεγμένη λειτουργία επεξεργασίας ή σε λειτουργίες που παρέχονται από άλλες πρόσθετες λειτουργίες.