Αναδυόμενα μενού

org.eclipse.ui.popupMenus

Αυτό το σημείο επέκτασης χρησιμοποιείται για την προσθήκη νέων ενεργειών σε μενού περιβάλλοντος άλλων πρόσθετων λειτουργιών. Συνεισφορές ενεργειών μπορούν να πραγματοποιηθούν σε ένα συγκεκριμένο είδος αντικειμένου (objectContribution) ή σε ένα συγκεκριμένο μενού περιβάλλοντος ενός τμήματος προβολής ή λειτουργίας επεξεργασίας (viewerContribution). Όταν χρησιμοποιείται το στοιχείο objectContribution, η συνεισφορά θα εμφανίζεται σε όλα τα μενού περιβάλλοντος του τμήματος προβολής ή λειτουργίας επεξεργασίας, όπου έχουν επιλεγεί αντικείμενα του συγκεκριμένου είδους. Αντίθετα, όταν χρησιμοποιείται στο στοιχείο viewerContribution, η συνεισφορά θα εμφανίζεται μόνο στο προσδιορισμένο μενού περιβάλλοντος του τμήματος προβολής ή λειτουργίας επεξεργασίας, ανεξάρτητα από την επιλογή.

Όταν η επιλογή είναι ετερογενής, η συνεισφορά θα εμφανίζεται εάν έχει καταχωρηθεί σε ένα κοινό είδος της επιλογής, εάν αυτό είναι εφικτό. Εάν δεν είναι εφικτό το απευθείας ταίριασμα, τότε γίνεται προσπάθεια ταιριάσματος υπερκλάσεων και υπερ-διεπαφών.

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

Μεμονωμένες ενέργειες σε μια συνεισφορά αντικειμένου μπορούν να χρησιμοποιούν το γνώρισμα enablesFor για να προσδιορίζουν εάν θα πρέπει να εφαρμόζονται σε ένα μοναδικό, σε πολλά ή σε άλλα είδη επιλογής.

Αν αυτοί οι μηχανισμοί φιλτραρίσματος είναι ανεπαρκείς, τότε μια συνεισφορά ενεργειών μπορεί να χρησιμοποιήσει το μηχανισμό filter. Σε αυτή την περίπτωση, τα γνωρίσματα του αντικειμένου προορισμού περιγράφονται σε μια σειρά που αποτελείται από ζεύγη ονομάτων-τιμών. Τα γνωρίσματα που εφαρμόζονται στην επιλογή καθορίζονται ειδικά για το κάθε είδος και ισχύουν πέρα από τον τομέα του ίδιου του πάγκου εργασίας. Έτσι ο πάγκος εργασίας θα αναθέτει το φιλτράρισμα σε αυτό το επίπεδο στη συγκεκριμένη επιλογή.

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

Η σύνταξη είναι η ίδια για τα στοιχεία enablement και visibility. Και τα δύο περιέχουν ένα υποστοιχείο λογικής έκφρασης. Στην πιο απλή περίπτωση, θα πρόκειται για ένα στοιχείο objectClass, objectState, pluginState ή systemProperty. Στην πιο σύνθετη περίπτωση, είναι δυνατός ο συνδυασμός των στοιχείων and, or και not για τη διαμόρφωση μιας λογικής έκφρασης. Τόσο το στοιχείο and, όσο και το or πρέπει να περιέχουν 2 υποστοιχεία. Το στοιχείο not πρέπει να περιέχει μόνο 1 υποστοιχείο.

<!ELEMENT extension (objectContribution , viewerContribution)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT objectContribution (filter* , visibility? , enablement? , menu* , action*)>

<!ATTLIST objectContribution

id          CDATA #REQUIRED

objectClass CDATA #REQUIRED

nameFilter  CDATA #IMPLIED

adaptable   (true | false) "false">

Το στοιχείο αυτό χρησιμοποιείται για τον ορισμό μιας ομάδας ενεργειών ή/και μενού για οποιοδήποτε μενού περιβάλλοντος προβολής, για το οποίο έχουν επιλεχθεί τα αντικείμενα του συγκεκριμένου είδους.



<!ELEMENT viewerContribution (visibility? , menu* , action*)>

<!ATTLIST viewerContribution

id       CDATA #REQUIRED

targetID CDATA #REQUIRED>

Το στοιχείο αυτό χρησιμοποιείται για τον ορισμό μιας ομάδας ενεργειών ή/και μενού για ένα συγκεκριμένο μενού περιβάλλοντος τμήματος προβολής ή λειτουργίας επεξεργασίας.



<!ELEMENT action (selection* , enablement?)>>

<!ATTLIST action

id               CDATA #REQUIRED

label            CDATA #REQUIRED

definitionId     CDATA #IMPLIED

menubarPath      CDATA #IMPLIED

icon             CDATA #IMPLIED

helpContextId    CDATA #IMPLIED

style            (push|radio|toggle|pulldown)

state            (true | false)

class            CDATA #REQUIRED

enablesFor    CDATA #IMPLIED

overrideActionId CDATA #IMPLIED

tooltip          CDATA #IMPLIED>

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



<!ELEMENT filter EMPTY>

<!ATTLIST filter

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Αυτό το στοιχείο χρησιμοποιείται για την αποτίμηση γνωρίσματος state κάθε αντικειμένου της τρέχουσας επιλογής. Αντιστοίχιση γίνεται μόνο αν κάθε αντικείμενο στην επιλογή έχει την καθορισμένη κατάσταση γνωρίσματος. Κάθε αντικείμενο στην επιλογή πρέπει να υλοποιεί ή να προσαρμόζεται στη διεπαφή org.eclipse.ui.IActionFilter.



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



<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Γενικό κεντρικό στοιχείο. Το στοιχείο μπορεί να χρησιμοποιηθεί σε ένα σημείο επέκτασης για τον ορισμό της έκφρασης ενεργοποίησης. Τα θυγατρικά στοιχεία μιας έκφρασης ενεργοποίησης συνδυάζονται με τη χρήση του τελεστή "and".



<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>

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



<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

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



<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

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



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Αυτό το στοιχείο χρησιμοποιείται για την εκτέλεση μιας χρήσης ελέγχου του εστιαζόμενου αντικειμένου. Η έκφραση επιστρέφει EvaluationResult.TRUE αν το είδος του αντικειμένου αποτελεί υπο-είδος του του είδους που προσδιορίζεται από την τιμή γνωρίσματος. Διαφορετικά, επιστρέφει EvaluationResult.FALSE.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Αυτό το στοιχείο χρησιμοποιείται για την αποτίμηση γνωρίσματος state του εστιαζόμενου αντικειμένου. Το σύνολο των ιδιοτήτων που μπορούν να τεθούν υπό δοκιμή μπορεί να επεκταθεί με τη χρήση του σημείου επέκτασης λειτουργίας δοκιμής ιδιοτήτων. Η έκφραση δοκιμής επιστρέφει την EvaluationResult.NOT_LOADED αν η λειτουργία δοκιμής ιδιοτήτων που εκτελεί στην ουσία τη δοκιμή δεν έχει φορτωθεί ακόμα.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Δοκιμάζει μια ιδιότητα συστήματος καλώντας τη μέθοδο System.getProperty και συγκρίνει το αποτέλεσμα με την τιμή που καθορίζεται μέσω του γνωρίσματος value.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Αυτό το στοιχείο χρησιμοποιείται για την εκτέλεση ενός ελέγχου ισοδυναμίας (equals) του εστιαζόμενου αντικειμένου. Η έκφραση επιστρέφει EvaluationResult.TRUE αν το αντικείμενο ισούται με την τιμή που παρέχεται από την τιμή γνωρίσματος. Διαφορετικά, επιστρέφει EvaluationResult.FALSE.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

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



<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST with

variable CDATA #REQUIRED>

Αυτό το στοιχείο αλλάζει το αντικείμενο προς επιθεώρηση για όλα τα θυγατρικά στοιχεία του με το αντικείμενο στο οποίο γίνεται αναφορά από τη δεδομένη μεταβλητή. Αν η μεταβλητή δεν μπορεί να αναλυθεί, τότε η έκφραση θα εμφανίσει ένα ExpressionException κατά την αποτίμησή του. Τα θυγατρικά στοιχεία μιας έκφρασης "with" συνδυάζονται με τη χρήση του τελεστή "and".



<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

Αυτό το στοιχείο αλλάζει το αντικείμενο προς επιθεώρηση για όλα τα θυγατρικά στοιχεία του με το αντικείμενο στο οποίο γίνεται αναφορά από τη δεδομένη μεταβλητή. Αν η μεταβλητή δεν μπορεί να αναλυθεί, τότε η έκφραση θα εμφανίσει ένα ExpressionException κατά την αποτίμησή του. Τα θυγατρικά στοιχεία μιας έκφρασης "with" συνδυάζονται με τη χρήση του τελεστή "and".



<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST adapt

type CDATA #REQUIRED>

Αυτό το στοιχείο χρησιμοποιείται για την προσαρμογή του εστιαζόμενου στο είδος που καθορίζεται από το είδος γνωρίσματος. Η έκφραση επιστρέφει "not loaded" αν ο προσαρμογέας ή το είδος στο οποίο γίνεται παραπομπή δεν έχει φορτωθεί ακόμα. Εμφανίζει ExpressionException κατά την αποτίμηση αν το όνομα είδους δεν υπάρχει. Τα θυγατρικά στοιχεία μιας έκφρασης "adapt" συνδυάζονται με τη χρήση του τελεστή "and".



<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST iterate

operator (or|and) >

Αυτό το στοιχείο χρησιμοποιείται για την επαναληπτική προσέγγιση σε μια μεταβλητή του τύπου java.util.Collection. Αν το εστιαζόμενο αντικείμενο δεν είναι του τύπου java.util.Collection, τότε εμφανίζεται μια ExpressionException κατά την αποτίμηση της έκφρασης.



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

   

<extension point=

"org.eclipse.ui.popupMenus"

>

<objectContribution id=

"com.xyz.C1"

objectClass=

"org.eclipse.core.resources.IFile"

nameFilter=

"*.java"

>

<menu id=

"com.xyz.xyzMenu"

path=

"additions"

label=

"&XYZ Java Tools"

>

<separator name=

"group1"

/>

</menu>

<action id=

"com.xyz.runXYZ"

label=

"&Run XYZ Tool"

style=

"push"

menubarPath=

"com.xyz.xyzMenu/group1"

icon=

"icons/runXYZ.gif"

helpContextId=

"com.xyz.run_action_context"

class=

"com.xyz.actions.XYZToolActionDelegate"

enablesFor=

"1"

/>

</objectContribution>

<viewerContribution id=

"com.xyz.C2"

targetID=

"org.eclipse.ui.views.TaskList"

>

<action id=

"com.xyz.showXYZ"

label=

"&Show XYZ"

style=

"toggle"

state=

"true"

menubarPath=

"additions"

icon=

"icons/showXYZ.gif"

helpContextId=

"com.xyz.show_action_context"

class=

"com.xyz.actions.XYZShowActionDelegate"

/>

</viewerContribution>

</extension>

Στο παραπάνω παράδειγμα, η προσδιορισμένη ενέργεια συνεισφοράς αντικειμένου θα ενεργοποιείται μόνο για μία μοναδική επιλογή (γνώρισμα enablesFor). Επιπλέον, κάθε αντικείμενο της επιλογής πρέπει να υλοποιεί τη συγκεκριμένη διεπαφή (IFile) και πρέπει να είναι ένα αρχείο Java. Η ενέργεια αυτή θα προστεθεί στο υπο-μενού που δημιουργήθηκε προηγουμένως. Η συνεισφορά αυτή θα είναι ενεργή σε οποιαδήποτε προβολή που διαθέτει την απαιτούμενη επιλογή.

Αντίθετα, η παραπάνω συνεισφορά προβολής θα εμφανίζεται μόνο στο μενού περιβάλλοντος της προβολής "Εργασίες" και δεν θα επηρεάζεται από την επιλογή στην προβολή.

Ακολουθεί ένα παράδειγμα του μηχανισμού φιλτραρίσματος. Στην περίπτωση αυτή, η ενέργεια θα εμφανίζεται μόνο για IMarkers που έχουν ολοκληρωθεί και έχουν υψηλή προτεραιότητα.

   

<extension point=

"org.eclipse.ui.popupMenus"

>

<objectContribution id=

"com.xyz.C3"

objectClass=

"org.eclipse.core.resources.IMarker"

>

<filter name=

"done"

value=

"true"

/>

<filter name=

"priority"

value=

"2"

/>

<action id=

"com.xyz.runXYZ"

label=

"High Priority Completed Action Tool"

icon=

"icons/runXYZ.gif"

class=

"com.xyz.actions.MarkerActionDelegate"

>

</action>

</objectContribution>

</extension>

Παρακάτω δίνεται ένα άλλο παράδειγμα χρήσης του στοιχείου visibility:

   

<extension point=

"org.eclipse.ui.popupMenus"

>

<viewerContribution id=

"com.xyz.C4"

targetID=

"org.eclipse.ui.views.TaskList"

>

<visibility>

<and>

<pluginState id=

"com.xyz"

value=

"activated"

/>

<systemProperty name=

"ADVANCED_MODE"

value=

"true"

/>

</and>

</visibility>

<action id=

"com.xyz.showXYZ"

label=

"&Show XYZ"

style=

"push"

menubarPath=

"additions"

icon=

"icons/showXYZ.gif"

helpContextId=

"com.xyz.show_action_context"

class=

"com.xyz.actions.XYZShowActionDelegate"

>

</action>

</viewerContribution>

</extension>

Στο παραπάνω παράδειγμα, η προσδιορισμένη ενέργεια θα εμφανίζεται ως στοιχείο μενού στο μενού περιβάλλοντος της προβολής "Εργασία", αλλά μόνο αν η πρόσθετη λειτουργία "com.xyz" είναι ενεργή και η προσδιορισμένη ιδιότητα συστήματος έχει την τιμή "true".

Η τιμή του γνωρίσματος class της ενέργειας πρέπει να είναι ένα πλήρες όνομα μιας κλάσης Java η οποία υλοποιεί το org.eclipse.ui.IObjectActionDelegate στην περίπτωση συνεισφοράς αντικειμένου, το org.eclipse.ui.IViewActionDelegate για συνεισφορές σε μενού περιβάλλοντος τα οποία ανήκουν σε προβολές ή το org.eclipse.ui.IEditorActionDelegate για συνεισφορές σε μενού περιβάλλοντος τα οποία ανήκουν σε λειτουργίες επεξεργασίας. Σε κάθε περίπτωση, η κλάση υλοποίησης φορτώνεται όσο το δυνατόν αργότερα για την αποφυγή φόρτωσης ολόκληρης της πρόσθετης λειτουργίας προτού αυτή καταστεί αναγκαία.

Σημείωση: Για λόγους συμβατότητας με προηγούμενες εκδόσεις, το org.eclipse.ui.IActionDelegate μπορεί να υλοποιείται για συνεισφορές αντικειμένου.

Η επέκταση μενού περιβάλλοντος μέσα σε ένα τμήμα είναι εφικτή μόνο όταν το τμήμα προορισμού δημοσιεύει ένα μενού για επέκταση. Αυτό συνιστάται, καθώς βελτιώνει την επεκτασιμότητα του προϊόντος. Για να επιτευχθεί, κάθε τμήμα θα πρέπει να δημοσιεύσει τα μενού περιβάλλοντος που ορίζονται με την κλήση του IWorkbenchPartSite.registerContextMenu. Αφού πραγματοποιηθεί αυτό, ο πάγκος εργασίας θα εισάγει αυτόματα όλες τις επεκτάσεις ενεργειών που υπάρχουν.

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

Κάθε μενού περιβάλλοντος το οποίο καταχωρείται στον πάγκο εργασίας θα πρέπει επίσης να περιέχει ένα τυπικό σημείο εισαγωγής με ταυτότητα IWorkbenchActionConstants.MB_ADDITIONS. Άλλες πρόσθετες λειτουργίες θα χρησιμοποιούν την τιμή αυτή ως σημείο αναφοράς για την εισαγωγή. Το σημείο εισαγωγής μπορεί να οριστεί από την προσθήκη ενός GroupMarker στο μενού, σε μια κατάλληλη θέση για εισαγωγή.

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

Οι ετικέτες ενεργειών και μενού μπορούν να περιέχουν ειδικούς χαρακτήρες που κωδικοποιούν μνημονικά στοιχεία, τα οποία ορίζονται με τη χρήση του συμβόλου ("&") μπροστά από έναν επιλεγμένο χαρακτήρα στο μεταφρασμένο κείμενο. Εφόσον το σύμβολο '&' δεν επιτρέπεται σε σειρές χαρακτήρων 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>

Οι προβολές του πάγκου εργασίας διαθέτουν ενσωματωμένα μενού περιβάλλοντος τα οποία περιέχουν ένα πλήθος ενεργειών. Πρόσθετες λειτουργίες μπορούν να συνεισφέρουν στα μενού αυτά. Αν μια λειτουργία προβολής διαθέτει δεσμευμένες υποδοχές για αυτές τις συνεισφορές και αυτές καθίστανται δημόσιες, τότε τα ονόματα των υποδοχών μπορούν να χρησιμοποιηθούν ως διαδρομές. Διαφορετικά, ενέργειες και υπο-μενού θα προστίθενται στο τέλος του αναδυόμενου μενού.