Ο καθορισμός της πρόσθετης λειτουργίας μιας εφαρμογής εμπλουτισμένου πελάτη ξεκινά με παρόμοιο τρόπο όπως και οι άλλες πρόσθετες λειτουργίες τις οποίες εξετάσαμε. Η μόνη διαφορά στο αρχείο MANIFEST.MF είναι ότι η λίστα των απαιτούμενων πρόσθετων λειτουργιών είναι κατά πολύ μικρότερη από αυτή που είχαμε συνηθίσει!
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.ui.examples.rcp.browser; singleton:=true Bundle-Version: 3.2.0.qualifier Bundle-ClassPath: browser.jar Bundle-Activator: org.eclipse.ui.examples.rcp.browser.BrowserPlugin Bundle-Vendor: %providerName Bundle-Localization: plugin Require-Bundle: org.eclipse.core.runtime, org.eclipse.ui Eclipse-AutoStart: true Eclipse-AutoStart-comment: Use Eclipse-AutoStart instead of Eclipse-LazyStart because the browser example should run against 3.1 as well as 3.2.
Μέχρι τώρα, συνεισφέραμε συναρτήσεις στον πάγκο εργασίας της πλατφόρμας δηλώνοντας επεκτάσεις οι οποίες προσθέτουν στοιχεία στον πάγκο εργασίας. Σε όλο το περιεχόμενο του αρχείου plugin.xml το οποίο αναθεωρήσαμε ως τώρα, εξετάσαμε μόνο μεμονωμένες συνεισφορές σε έναν πάγκο εργασίας που υποτίθεται ότι υπάρχει εκεί. Στην πλατφόρμα εμπλουτισμένου πελάτη, δεν έχει ακόμα καθοριστεί κάποια εφαρμογή. Η πρόσθετη λειτουργία εμπλουτισμένου πελάτη που χρησιμοποιείτε έχει την αποκλειστική ευθύνη για τον προσδιορισμό της κλάσης που θα πρέπει να εκτελεστεί κατά την εκκίνηση της πλατφόρμας. Αυτή η ενέργεια πραγματοποιείται στην επέκταση org.eclipse.core.runtime.applications.
<extension point="org.eclipse.core.runtime.applications" id="app" name="%appName"> <application> <run class="org.eclipse.ui.examples.rcp.browser.BrowserApp"> </run> </application> </extension>
Στην επέκταση αυτή, προσδιορίζουμε την κλάση που θα πρέπει να εκτελείται κατά την εκκίνηση της πλατφόρμας για πρώτη φορά. Η κλάση αυτή πρέπει να υλοποιεί το IPlatformRunnable, που σημαίνει απλά ότι πρέπει να υλοποιήσει μια μέθοδο εκτέλεσης. Η μέθοδος εκτέλεσης είναι υπεύθυνη για τη δημιουργία της εμφάνισης SWT και την εκκίνηση του πάγκου εργασίας. Η κλάση PlatformUI υλοποιεί εύχρηστες μεθόδους για την εκτέλεση αυτών των εργασιών.
public Object run(Object args) throws Exception { Display display = PlatformUI.createDisplay(); try { int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); // exit the application with an appropriate return code return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK; } finally { if (display != null) display.dispose (); } }
Η κλήση προς το createAndRunWorkbench δεν επιστρέφει αποτέλεσμα μέχρι το κλείσιμο του πάγκου εργασίας. Ο χειρισμός του βρόγχου συμβάντος SWT και άλλων στοιχείων οργάνωσης χαμηλού επιπέδου πραγματοποιείται μέσα στη μέθοδο. Σε αυτό το στάδιο, η κατανόηση από εσάς των υποκείμενων μηχανισμών εκτέλεσης μιας εφαρμογής SWT δεν είναι απαραίτητη. Αυτός ο κώδικας μπορεί να αντιγραφεί στην εφαρμογή εμπλουτισμένου πελάτη σας με ελάχιστες αλλαγές. Στην πραγματικότητα, η ρουτίνα που θα πρέπει να προσθέσετε για την ενίσχυση της λειτουργικότητας είναι το WorkbenchAdvisor το οποίο περνά ως όρισμα κατά τη δημιουργία του πάγκου εργασίας. Ας το εξετάσουμε πιο αναλυτικά όμως.