Είναι κοινό για προβολές και λειτουργίες επεξεργασίας πρόσθετης λειτουργίας να υλοποιούν ενέργειες που είναι σημασιολογικά παρόμοιες με υπάρχουσες ενέργειες του πάγκου εργασίας, όπως αποκοπή/αντιγραφή/επικόλληση στο πρόχειρο, ανανέωση προβολής ή ιδιότητες. Το αναδυόμενο μενού για προβολές και λειτουργίες επεξεργασίας μπορεί να γίνει πολύ μπερδεμένο εάν κάθε προβολή η λειτουργία επεξεργασίας πρέπει να ορίσει μοναδικές ενέργειες για τις λειτουργίες αυτές και να τις συμπεριλάβει στο μενού της.
Για την επίλυση αυτού του προβλήματος, ο πάγκος εργασίας ορίζει ενέργειες μεταβλητής εμβέλειας (ονομάζονται επίσης και καθολικές) τις οποίες μπορεί να χειριστεί κάθε προβολή ή λειτουργία επεξεργασίας.Όταν μια προβολή ή λειτουργία επεξεργασίας είναι ενεργή, η ρουτίνα χειρισμού της θα εκτελεστεί όταν ο χρήστης επιλέξει την ενέργεια από το μενού ή τη γραμμή εργαλείων του πάγκου εργασίας. Αυτό επιτρέπει στις προβολές και τις λειτουργίες επεξεργασίας να κάνουν κοινή χρήση του χώρου μενού του πάγκου εργασίας για σημασιολογικά παρόμοιες ενέργειες.
Η IWorkbenchActionConstants τεκμηριώνει όλες τις ενέργειες του πάγκου εργασίας και δηλώνει ενέργειες μεταβλητής εμβέλειας ως καθολικές.Για παράδειγμα, ακολουθεί ο ορισμός της ενέργειας Ιδιότητες.
public static final String PROPERTIES = "properties"; // Global action.
Ο παρακάτω πίνακας συνοψίζει μερικές από τις πιο κοινές ενέργειες μεταβλητής εμβέλειας που υλοποιούνται από προβολές και λειτουργίες επεξεργασίας:
Μενού "Αρχείο" | Μενού "Τροποποίηση" | Μενού "Πλοήγηση" | Μενού "Έργο" | |
προβολές | μετακίνηση μετονομασία ανανέωση ιδιότητες |
εισχώρηση μετάβαση σε πόρο συγχρονισμός με λειτουργία επεξεργασίας πίσω μπροστά πάνω επόμενο προηγούμενο |
άνοιγμα κλείσιμο δόμηση αναδόμηση |
|
λειτουργίες επεξεργασίας | επαναφορά εκτύπωση |
εύρεση | ||
προβολές και λειτουργίες επεξεργασίας | αποκοπή αντιγραφή επικόλληση διαγραφή επιλογή όλων αναίρεση ακύρωση αναίρεσης |
Οι ενέργειες μεταβλητής εμβέλειας δημιουργούνται χρησιμοποιώντας την RetargetAction. Το παρακάτω τμήμα κώδικα είναι από τη WorkbenchActionBuilder.
propertiesAction = createGlobalAction(IWorkbenchActionConstants.PROPERTIES, "file", false);
Η μέθοδος createGlobalAction μας δείχνει πώς ακριβώς δημιουργούμε μια RetargetAction.
private RetargetAction createGlobalAction(String id, String actionDefPrefix, boolean labelRetarget) { RetargetAction action; if (labelRetarget) { action = new LabelRetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); } else { action = new RetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); } ... return action; }
Κατά τη δημιουργία μιας ενέργειας μεταβλητής εμβέλειας, ο πάγκος εργασίας αντιστοιχεί το γνώρισμα id για την ενέργεια και την προεπιλεγμένη ετικέτα. Σημειώστε ότι υπάρχουν δύο στυλ ενεργειών μεταβλητής εμβέλειας . Η RetargetAction απλά επιτρέπει σε μια προβολή ή λειτουργία επεξεργασίας να υλοποιήσει ξανά μια ενέργεια. Η LabelRetargetAction επιτρέπει επίσης σε προβολές και λειτουργίες επεξεργασίας να επαναφέρουν την ετικέτα της ενέργειας. Αυτό είναι χρήσιμο για τον ακριβή προσδιορισμό της ετικέτας του μενού, όπως η επαναπόδοση ετικέτας στην ενέργεια Αναίρεση ως Αναίρεση πληκτρολόγησης.
Τώρα γνωρίζουμε πώς ενέργειες μεταβλητής εμβέλειας ορίζονται από τον πάγκο εργασίας. Ας εξετάσουμε στη συνέχεια πώς η προβολή ή λειτουργίας επεξεργασίας παρέχει υλοποίηση της ενέργειας μεταβλητής εμβέλειας. Αυτό γίνεται με ρύθμιση μιας καθολική ρουτίνας χειρισμού ενεργειών.