Ενέργειες μεταβλητής εμβέλειας

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

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

Η 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 επιτρέπει επίσης σε προβολές και λειτουργίες επεξεργασίας να επαναφέρουν την ετικέτα της ενέργειας.   Αυτό είναι χρήσιμο για τον ακριβή προσδιορισμό της ετικέτας του μενού, όπως η επαναπόδοση ετικέτας στην ενέργεια Αναίρεση ως Αναίρεση πληκτρολόγησης.  

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