Στην ενότητα Προτιμήσεις περιβάλλοντος εκτέλεσης, εξετάσαμε την υποδομή για τον καθορισμό και την αποθήκευση προτιμήσεων με διαφορετικές εμβέλειες. Είδαμε επίσης ότι η επέκταση org.eclipse.core.runtime.preferences μπορεί να χρησιμοποιηθεί για τον καθορισμό επιπρόσθετων εμβελειών προτιμήσεων. Η πρόσθετη λειτουργία πόρων της πλατφόρμας ορίζει την δική της εμβέλεια προτιμήσεων, που ονομάζεται "Έργο," προκειμένου να καθορίσει προτιμήσεις εμβέλειας έργου. Οι προτιμήσεις εμβέλειας έργου αποθηκεύονται σε ένα αρχείο το οποίο βρίσκεται μέσα στο έργο. Διευκολύνεται έτσι η αποθήκευση ενός συνόλου προτιμήσεων και η ανταλλαγή τους με άλλους χρήστες που χρησιμοποιούν μηχανισμούς προσανατολισμένους σε πόρους, όπως ένα σύστημα ελέγχου εκδοχών.
Ο ορισμός νέων εμβελειών είναι αρκετά απλός. Η πρόσθετη λειτουργία καθορίζει το όνομα της εμβέλειας καθώς και την κλάση που την υλοποιεί. Η πρόσθετη λειτουργία πόρων ορίζει την εμβέλεια έργου ως εξής:
<extension id="preferences" point="org.eclipse.core.runtime.preferences" name="preferences"> <scope name="project" class="org.eclipse.core.internal.resources.ProjectPreferences"/> </extension>
Η καθορισμένη κλάση πρέπει να υλοποιεί τη διεπαφή IScope, δηλαδή πρέπει να είναι σε θέση να δημιουργήσει κόμβους προτιμήσεων για την εμβέλεια.
Δεδομένου ότι η εμβέλεια έργου για προτιμήσεις δεν είναι μια τυπική εμβέλεια περιβάλλοντος εκτέλεσης, η απόκτηση του κόμβου που αντιπροσωπεύει μια προτίμηση επιπέδου έργου, πρέπει να γίνεται ειδικά για αυτόν τον κόμβο. Από τον κεντρικό κόμβο προτίμησης, πρέπει να μεταβείτε στην προτίμηση εμβέλειας έργου. Αυτό επιτυγχάνεται με χρήση της κλάσης ProjectScope:
IScopeContext projectScope = new ProjectScope(MyProject);
Αφού εντοπίσετε την εμβέλεια έργου αναφορικά με κάποιο συγκεκριμένο έργο, μπορείτε να αποκτήσετε τις τιμές προτίμησης με χρήση των ίδιων μηχανισμών που περιγράψαμε νωρίτερα. Οι προτιμήσεις ονομάζονται με χρήση του ονόματος της σειράς χαρακτήρων της προτίμησης. Τα ονόματα προσδιορίζονται με μια άλλη σειρά χαρακτήρων (συχνά την ταυτότητα μιας πρόσθετης λειτουργίας) η οποία προσδιορίζει το χώρο ονομάτων της προτίμησης. Το ακόλουθο τμήμα κώδικα λαμβάνει έναν κόμβο προτίμησης από την εμβέλεια έργου. Θα παρατηρήσετε ότι μόλις αποκτήσετε τη σωστή εμβέλεια, η εργασία με τους κόμβους δεν διαφέρει καθόλου από αυτήν με κόμβους από άλλες εμβέλειες.
... Preferences projectNode = projectScope.node("com.example.myplugin"); if (projectNode != null) { value = node.getBoolean("MyPreference", "true"); //do something with the value. } ...
Για να αποθηκεύσετε μια τιμή σε κάποιο αρχείο στο έργο, γίνεται εκκαθάριση του κόμβου. Η πρόσθετη λειτουργία πόρων χειρίζεται τα στοιχεία οργάνωσης για τη διαχείριση του αρχείου προτιμήσεων επιπέδου έργου.
projectNode.flush();