Εντολές

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

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

Ορισμός εντολής

Οι εντολές ορίζονται χρησιμοποιώντας το σημείο επέκτασης org.eclipse.ui.commands.  Το παρακάτω προέρχεται από τη μορφοποίηση του πάγκου εργασίας:

<extension
	point="org.eclipse.ui.commands">
	...
	<command
		name="%command.save.name"
		description="%command.save.description"
		categoryId="org.eclipse.ui.category.file"
		id="org.eclipse.ui.file.save">
	</command>
	...

Ο ορισμός εντολής προσδιορίζει τα γνωρίσματα name, description και id για την ενέργεια.   Προσδιορίζει επίσης την ταυτότητα μιας κατηγορίας για την εντολή, η οποία χρησιμοποιείται για την ομαδοποίηση εντολών στο πλαίσιο διαλόγου προτιμήσεων.  Οι κατηγορίες ορίζονται επίσης στο σημείο επέκτασης org.eclipse.ui.commands:

      ...
      <category
            name="%category.file.name"
            description="%category.file.description"
            id="org.eclipse.ui.category.file">
      </category>
      ...

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

Συσχετισμός ενέργειας με εντολή

Οι ενέργειες μπορούν να συσχετισθούν με εντολή σε κώδικα ή στο αρχείο plugin.xml για σύνολα ενεργειών.  Η επιλογή σας εξαρτάται από το πού ορίζεται η ενέργεια.

Οι ενέργειες για τις οποίες δημιουργούνται χρήσεις σε κώδικα μπορούν επίσης να συσχετισθούν με έναν ορισμό ενέργειας χρησιμοποιώντας το πρωτόκολλο IAction.  Αυτό συνήθως γίνεται όταν δημιουργείται η ενέργεια.  Η SaveAction χρησιμοποιεί αυτή την τεχνική όταν αποδίδει αρχικές τιμές στην ίδια.

public SaveAction(IWorkbenchWindow window) {
	...
	setText...
	setToolTipText...
	setImageDescriptor...
	setActionDefinitionId("org.eclipse.ui.file.save"); 
}

(Σημείωση:  Το όνομα μεθόδου setActionDefinitionID θα μπορούσε να είναι καλύτερα setCommandID.  Το όνομα μεθόδου αντικατοπτρίζει την αρχική υλοποίηση δεσμών πλήκτρων και χρησιμοποιεί ξεπερασμένη ορολογία.)

Καλώντας την setActionDefinitionID, η ενέργεια υλοποίησης (SaveAction) συσχετίζεται με το γνώρισμα id της εντολής που χρησιμοποιήθηκε στη μορφοποίηση του ορισμού της εντολής. Αποτελεί καλή πρακτική να ορίζετε σταθερές για τους ορισμούς ενεργειών σας, ώστε να γίνεται εύκολα παραπομπή σε αυτούς στον κώδικα.

Εάν ορίσετε μια ενέργεια σε ένα σύνολο ενεργειών, τότε συνήθως δεν χρειάζεται να δημιουργήσετε ο ίδιος χρήση για την ενέργεια.  Ο πάγκος εργασίας θα το κάνει για εσάς όταν ο χρήστης καλέσει την ενέργειά σας από μενού ή το πληκτρολόγιο.   Σε αυτή την περίπτωση, μπορείτε να συσχετίσετε την ενέργειά σας με το γνώρισμα ID εντολής στη μορφοποίηση XML. Το παρακάτω παρουσιάζει μια υποθετική μορφοποίηση για ένα σύνολο ενεργειών:

<extension point = "org.eclipse.ui.actionSets">
	   <actionSet id="com.example.actions.actionSet"
		   label="Example Actions"
		   visible="true">
		   <action id="com.example.actions.action1"
			   menubarPath="additions"
			   label="Example Save Action"
			   class="org.example.actions.ExampleActionDelegate"
			   definitionID="org.eclipse.ui.file.save">
		</action>
		   ...
	</actionSet>
    </extension>

Το γνώρισμα definitionID χρησιμοποιείται για τη δήλωση ενός γνωρίσματος ID εντολής γα την ενέργεια.

Χρησιμοποιώντας οποιαδήποτε από τις τεχνικές, ο συσχετισμός της ενέργειάς σας με ένα γνώρισμα ID εντολής έχει ως αποτέλεσμα κάθε δεσμός πλήκτρων που ορίζεται από την εντολή org.eclipse.ui.file.save να καλεί την ενέργειά σας όταν χρειάζεται. 

Ας δούμε τώρα πώς ορίζονται οι δεσμοί πλήκτρων.