Αυτό το σημείο επέκτασης χρησιμοποιείται για την προσθήκη μενού, στοιχείων μενού και κουμπιών γραμμής εργαλείων στις κοινές περιοχές στο παράθυρο "Πάγκος εργασίας". Αυτές οι συνεισφορές είναι συλλογικά γνωστές ως σύνολο ενεργειών και εμφανίζονται εντός του παραθύρου "Πάγκος εργασίας" από το χρήστη που προσαρμόζει μια προοπτική.
Υπάρχει ένας περιορισμός υλοποίησης ο οποίος επηρεάζει τα σύνολα ενεργειών. Είναι σημαντικό να οριστεί ολόκληρη η δομή μενού στην οποία θα γίνεται παραπομπή εντός του συνόλου εργασιών. Έτσι, για παράδειγμα, αν ένα διαφορετικό σύνολο ενεργειών ορίζει ένα μενού με την ονομασία "παράδειγμα", δεν είναι δυνατό να βασίζεται στην ύπαρξη "παραδείγματος". Ο καθορισμός εκ νέου του μενού "παράδειγμα" είναι απαραίτητος σε κάθε σύνολο ενεργειών που επιθυμεί να το χρησιμοποιήσει.
Η ενεργοποίηση ή/και η ορατότητα μιας ενέργειας μπορεί να οριστεί χρησιμοποιώντας τα στοιχεία enablement και visibility αντίστοιχα. Αυτά τα δύο στοιχεία περιέχουν μια λογική έκφραση που αποτιμάται για τον καθορισμό των στοιχείων enablement ή/και visibility.
Η σύνταξη είναι η ίδια για τα στοιχεία enablement και visibility. Και τα δύο περιέχουν ένα υποστοιχείο λογικής έκφρασης. Στην πιο απλή περίπτωση, θα πρόκειται για ένα στοιχείο objectClass, objectState, pluginState ή systemProperty. Στην πιο σύνθετη περίπτωση, είναι δυνατός ο συνδυασμός των στοιχείων and, or και not για τη διαμόρφωση μιας λογικής έκφρασης. Τόσο το στοιχείο and, όσο και το or πρέπει να περιέχουν 2 υποστοιχεία. Το στοιχείο not πρέπει να περιέχει μόνο 1 υποστοιχείο.
<!ELEMENT extension (actionSet+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT actionSet (menu* , action*)>
<!ATTLIST actionSet
id CDATA #REQUIRED
label CDATA #REQUIRED
visible (true | false)
description CDATA #IMPLIED>
Αυτό το στοιχείο χρησιμοποιείται για τον ορισμό μιας ομάδας ενεργειών ή/και μενού.
<!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|pulldown) "push"
state (true | false)
pulldown (true | false)
class CDATA #IMPLIED
retarget (true | false)
allowLabelUpdate (true | false)
enablesFor CDATA #IMPLIED>
Αυτό το στοιχείο ορίζει μια ενέργεια την οποία μπορεί ο χρήστης να καλέσει στο περιβάλλον χρήστη.
push | - ως κανονικό στοιχείο μενού ή στοιχείο εργαλείου. | |
radio | - ως στοιχείο μενού ή στοιχείο εργαλείου σε στυλ κουμπιού επιλογής. Ενέργειες με το στυλ κουμπιού επιλογής εντός της ίδιας ομάδας μενού ή γραμμής εργαλείων συμπεριφέρονται ως ένα σύνολο κουμπιών επιλογής. Η αρχική τιμή προσδιορίζεται από το γνώρισμα state. | |
toggle | - ως στοιχείο μενού με στυλ σημαδιού επιλογής ή ως στοιχείο εργαλείου ενεργοποίησης. Η αρχική τιμή προσδιορίζεται από το γνώρισμα state. | |
pulldown | - ως στοιχείο μενού με διαδοχικό στυλ ή ως αναπτυσσόμενο μενού δίπλα σε στοιχείο εργαλείου. |
! | - έχουν επιλεγεί 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.actionSets"
>
<actionSet id=
"com.xyz.actionSet"
label=
"My Actions"
>
<menu id=
"com.xyz.xyzMenu"
label=
"XYZ Menu"
path=
"additions"
>
<separator name=
"group1"
/>
<separator name=
"option1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
style=
"toggle"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/group1"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
enablesFor=
"1"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
<action id=
"com.xyz.runABC"
label=
"&Run ABC Tool"
style=
"push"
menubarPath=
"com.xyz.xyzMenu/group1"
toolbarPath=
"Normal/XYZ"
icon=
"icons/runABC.gif"
tooltip=
"Run ABC Tool"
helpContextId=
"com.xyz.run_abc_action_context"
retarget=
"true"
allowLabelUpdate=
"true"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
<action id=
"com.xyz.runDEF"
label=
"&Run DEF Tool"
style=
"radio"
state=
"true"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runDEF.gif"
tooltip=
"Run DEF Tool"
class=
"com.xyz.actions.RunDEF"
helpContextId=
"com.xyz.run_def_action_context"
>
</action>
<action id=
"com.xyz.runGHI"
label=
"&Run GHI Tool"
style=
"radio"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runGHI.gif"
tooltip=
"Run GHI Tool"
class=
"com.xyz.actions.RunGHI"
helpContextId=
"com.xyz.run_ghi_action_context"
>
</action>
<action id=
"com.xyz.runJKL"
label=
"&Run JKL Tool"
style=
"radio"
state=
"false"
menubarPath=
"com.xyz.xyzMenu/option1"
icon=
"icons/runJKL.gif"
tooltip=
"Run JKL Tool"
class=
"com.xyz.actions.RunJKL"
helpContextId=
"com.xyz.run_jkl_action_context"
>
</action>
</actionSet>
</extension>
Στο παραπάνω παράδειγμα, το προσδιορισμένο σύνολο ενεργειών, με όνομα "My Actions", δεν είναι αρχικά ορατό σε κάθε προοπτική διότι το γνώρισμα visible δεν έχει προσδιοριστεί.
Η ενέργεια XYZ θα εμφανιστεί ως στοιχείο μενού με τη μορφή τετραγωνιδίου επιλογής, αποεπιλεγμένο αρχικά. Ενεργοποιείται μόνο εάν η καταμέτρηση επιλογών είναι 1 και εάν η επιλογή περιέχει πόρο αρχείου Java.
Η ενέργεια ABC θα εμφανιστεί στο μενού και τη γραμμή εργαλείων. Ενεργοποιείται μόνο εάν η επιλογή δεν περιέχει πόρους αρχείου Java. Σημειώστε επίσης ότι πρόκειται για ενέργεια μεταβλητής εμβέλειας ετικέτας, συνεπώς δεν παρέχει γνώρισμα class.
Οι ενέργειες DEF, GHI και JKL εμφανίζονται ως στοιχεία μενού με κουμπιά επιλογής. Είναι ενεργοποιημένα συνέχεια, ανεξάρτητα από την τρέχουσα κατάσταση της επιλογής.
Τα κριτήρια ενεργοποίησης για μια επέκταση ενέργειας καθορίζονται αρχικά από το γνώρισμα 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>
Τα μενού ανωτέρου επιπέδου δημιουργούνται με τη βοήθεια των ακόλουθων τιμών για το γνώρισμα διαδρομής:
Οι προεπιλεγμένες ομάδες σε έναν πάγκο εργασίας ορίζονται στη διεπαφή IWorkbenchActionConstants. Αυτές οι σταθερές μπορούν να χρησιμοποιηθούν σε κώδικα για δυναμική συνεισφορά. Είναι επίσης δυνατή η αντιγραφή των τιμών σε ένα αρχείο XML για ιδιαίτερη ενοποίηση με τα υπάρχοντα μενού και γραμμές εργαλείων του πάγκου εργασίας.
Τα διάφορα στοιχεία μενού και γραμμών εργαλείων στον πάγκο εργασίας ορίζονται αλγοριθμητικά. Σε αυτές τις περιπτώσεις, πρέπει να χρησιμοποιηθεί ξεχωριστός μηχανισμός για την επέκταση του παραθύρου. Για παράδειγμα, η προσθήκη νέων αποτελεσμάτων προβολής του πάγκου εργασίας σε ένα νέο στοιχείο μενού που εμφανίζεται στο μενού "Προοπτική". Οι επεκτάσεις για τους οδηγούς εισαγωγής, εξαγωγής και δημιουργίας νέων στοιχείων προστίθενται αυτόματα στο παράθυρο.
Copyright (c) 2000, 2004 IBM Corporation και άλλων.
Με την επιφύλαξη παντός δικαιώματος. Αυτό το πρόγραμμα και τα
συνοδευτικά του υλικά διατίθενται βάσει των όρων της κοινής άδειας
χρήσης Eclipse Public License v1.0 που συνοδεύει αυτή τη διανομή και
διατίθεται στην ακόλουθη διεύθυνση:
http://www.eclipse.org/legal/epl-v10.html.