Μπορείτε να προσθέσετε έναν οδηγό στις επιλογές μενού
Αρχείο > Δημιουργία
του πάγκου εργασίας χρησιμοποιώντας το σημείο επέκτασης
org.eclipse.ui.newWizards. Το παράδειγμα του εργαλείου διαχείρισης αρχείων readme χρησιμοποιεί αυτό τον ορισμό του σημείου επέκτασης για να προσθέσει τον οδηγό αρχείου readme:
<extension point = "org.eclipse.ui.newWizards"> <category id = "org.eclipse.ui.examples.readmetool.new" parentCategory="org.eclipse.ui.Examples" name="%NewWizard.category"> </category> <wizard id = "org.eclipse.ui.examples.readmetool.wizards.new.file" name = "%NewWizard.name" class="org.eclipse.ui.examples.readmetool.ReadmeCreationWizard" category="org.eclipse.ui.Examples/org.eclipse.ui.examples.readmetool.new" icon="icons/obj16/newreadme_wiz.png"> <description>%NewWizard.desc</description> <selection class="org.eclipse.core.resources.IResource"/> </wizard> </extension>
Η category περιγράφει την ομαδοποίηση του οδηγού. Μια προαιρετική parentCategory καθιερώνει τη νέα κατηγορία ως το θυγατρικό μιας υπάρχουσας κατηγορίας.
Οι κατηγορίες ανωτέρου επιπέδου θα εμφανιστούν στο μενού Αρχείο > Δημιουργία . Σε αυτό το παράδειγμα, η parentCategory ορίζεται σε μια κατηγορία "Παραδείγματα". Από πού προήλθε η γονική κατηγορία; Η πρόσθετη λειτουργία org.eclipse.ui ορίζει μια κατηγορία τυπικών παραδειγμάτων στη μορφοποίησή της:
<extension point="org.eclipse.ui.newWizards"> <category name="%NewWizards.Category.Examples" id="org.eclipse.ui.Examples"> </category> ...
Αυτή η κατηγορία εμφανίζεται στο μενού Αρχείο > Δημιουργία .
Η κατηγορία εργαλείου διαχείρισης αρχείων readme name ορίζει την ετικέτα που χρησιμοποιείται για το επόμενο επίπεδο ομαδοποίησης κάτω από τη γονική κατηγορία. Αυτές οι κατηγορίες εμφανίζονται ως το δεύτερο επίπεδο στη διακλάδωση που εμφανίζεται στον οδηγό Δημιουργία παραδείγματος. Το όνομα και το εικονίδιο του οδηγού εμφανίζονται από κάτω όταν αναπτύξετε την κατηγορία. Η περιγραφή του επιλεγμένου οδηγού εμφανίζεται στην αρχή του οδηγού όταν τον επιλέξετε.
Αυτές οι πληροφορίες σχετικά με τον οδηγό εμφανίζονται μόνο λόγω της μορφοποίησης στο αρχείο plugin.xml. Κανένα τμήμα του κώδικα της πρόσθετης λειτουργίας δεν εκτελείται μέχρι να επιλέξει ο χρήστης το κουμπί Επόμενο. Μόλις γίνει αυτό, ο πάγκος εργασίας θα δημιουργήσει μια χρήση της class του οδηγού που προσδιορίζεται στη μορφοποίηση και θα της περάσει μια αναμενόμενη class επιλογής.
Η κλάση που ταυτοποιείται σε αυτή τη επέκταση (ReadmeCreationWizard) πρέπει να υλοποιεί τη διεπαφή INewWizard. Αυτό συμβαίνει στους περισσότερους οδηγούς με την επέκταση της κλάσης Wizard της πλατφόρμας, παρόλο που αυτό αποτελεί ένα μηχανισμό υλοποίησης και δεν απαιτείται από το σημείο επέκτασης.
Ο οδηγός δεν κάνει τίποτα περισσότερο από το να δημιουργήσει τις σελίδες μέσα σε αυτόν. Ας εξετάσουμε πρώτα την υλοποίηση της σελίδας και κατόπιν θα επιστρέψουμε στον οδηγό.
Ο πάγκος εργασίας παρέχει βασικές κλάσεις σελίδων των οδηγών που υποστηρίζουν το είδος επεξεργασίας που εκτελείται για κάθε σημείο επέκτασης οδηγού. Μπορείτε να χρησιμοποιήσετε αυτές τις σελίδες ή να τις επεκτείνετε για να προσθέσετε επιπρόσθετη επεξεργασία.
Ο σκοπός της ReadmeCreationWizard είναι να δημιουργήσει ένα νέο αρχείο, να προσθέσει το απαιτούμενο περιεχόμενο στο αρχείο και, ως επιλογή, να ανοίξει μια λειτουργία επεξεργασίας στο αρχείο. Η σελίδα μας χρειάζεται να ορίσει τα στοιχεία ελέγχου που επιτρέπουν στον χρήστη να καθορίσει το περιεχόμενο που θα εισαχθεί στο αρχείο και το εάν θα πρέπει να εκκινήσει μια λειτουργία επεξεργασίας.
Δημιουργούμε την σελίδα οδηγού, ReadmeCreationPage, επεκτείνοντας την κλάση WizardNewFileCreationPage. Τα στοιχεία ελέγχου για μια σελίδα οδηγού ορίζονται με παρόμοιο τρόπο όπως αυτόν που γίνεται για τα στοιχεία ελέγχου για μια προβολή ή μια λειτουργία επεξεργασίας. Η σελίδα υλοποιεί μια μέθοδο createControl, δημιουργώντας τα απαραίτητα όργανα SWT ως θυγατρικά της παρεχόμενης κλάσης Composite. Εφόσον η υπερκλάση προσθέτει ήδη όργανα τα οποία υποστηρίζουν την επεξεργασία νέων αρχείων, χρειαζόμαστε μόνον να επεκτείνουμε τη μέθοδο createControl στη σελίδα του οδηγού μας για να προστεθούν τα επιπρόσθετα τετραγωνίδια επιλογής τα οποία ελέγχουν τη δημιουργία των ενοτήτων και το άνοιγμα της λειτουργίας επεξεργασίας.
public void createControl(Composite parent) { // inherit default container and name specification widgets super.createControl(parent); Composite composite = (Composite)getControl(); ... // sample section generation group Group group = new Group(composite,SWT.NONE); group.setLayout(new GridLayout()); group.setText(MessageUtil.getString("Automatic_sample_section_generation")); group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); ... // sample section generation checkboxes sectionCheckbox = new Button(group,SWT.CHECK); sectionCheckbox.setText(MessageUtil.getString("Generate_sample_section_titles")); sectionCheckbox.setSelection(true); sectionCheckbox.addListener(SWT.Selection,this); subsectionCheckbox = new Button(group,SWT.CHECK); subsectionCheckbox.setText(MessageUtil.getString("Generate_sample_subsection_titles")); subsectionCheckbox.setSelection(true); subsectionCheckbox.addListener(SWT.Selection,this); ... // open file for editing checkbox openFileCheckbox = new Button(composite,SWT.CHECK); openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done")); openFileCheckbox.setSelection(true); ... }
Θα πρέπει να μπορείτε να ακολουθήσετε αυτόν τον κώδικα, εάν κατανοείτε τις έννοιες στην ενότητα Standard Widget Toolkit.
Τα βασικά μοτίβα για την υλοποίηση μιας σελίδα περιλαμβάνουν:
Η κλάση ReadmeCreationPage κληρονομεί πολλά στοιχεία της συμπεριφοράς αυτής από την WizardNewFileCreationPage. Εξετάστε την υλοποίηση αυτών των κλάσεων για περισσότερες πληροφορίες.
Τώρα που κατανοούμε τη λειτουργίας μιας σελίδας, ας εξετάσουμε ξανά τον οδηγό.
Ο οδηγός ευθύνεται για τη δημιουργία των σελίδων και την παροχή της λογικής "finish".
Τα βασικά μοτίβα για την υλοποίηση ενός οδηγού περιλαμβάνουν:
public void init(IWorkbench workbench,IStructuredSelection selection) { this.workbench = workbench; this.selection = selection; setWindowTitle(MessageUtil.getString("New_Readme_File")); setDefaultPageImageDescriptor(ReadmeImages.README_WIZARD_BANNER); }
public void addPages() { mainPage = new ReadmeCreationPage(workbench, selection); addPage(mainPage); }
public boolean performFinish() { return mainPage.finish(); }
Ο ολοκληρωμένος οδηγός έχει αυτή τη μορφή: