Δήλωση πρόσθετης λειτουργίας πλατφόρμας Eclipse

Εκδοχή 3.2 - Τελευταία αναθεώρηση στις 9 Μαΐου 2006

Οι παρακάτω ορισμοί της μορφοποίησης δήλωσης χρησιμοποιούν διάφορα στοιχεία και ταυτότητες ονοματοθεσίας. Για την εξάλειψη αμφισημιών, δείτε μερικούς κανόνες παραγωγής για αυτά [υπάρχουν παραπομπές σε αυτά στο κείμενο που ακολουθεί]. Γενικά γίνεται διάκριση πεζών/κεφαλαίων για όλες τις ταυτότητες.

SimpleToken := sequence of characters from ('a-z','A-Z','0-9','_')
ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken)
QualifiedId := ComposedToken '.' SimpleToken
ExtensionId := SimpleToken | QualifiedId
ExtensionPointId := SimpleToken | QualifiedId
ExtensionPointReference := SimpleToken | QualifiedId

Το υπόλοιπο μέρος αυτής της ενότητας περιγράφει τη δομή του αρχείου plugin.xml ως μια σειρά τμημάτων κώδικα DTD. Το αρχείο plugin.dtd παρουσιάζει ολόκληρο τον ορισμό DTD.

<?xml encoding="US-ASCII"?>
<?eclipse version="3.2"?>
<!ELEMENT plugin (extension-point*, extension*)>

Το στοιχείο <plugin> ορίζει το κύριο σώμα της δήλωσης. Προαιρετικά, περιέχει δηλώσεις κάθε νέου σημείου επέκτασης που εισάγεται από την πρόσθετη λειτουργία, καθώς και ρυθμίσεις των λειτουργικών επεκτάσεων (που ρυθμίζονται σε σημεία επέκτασης που έχουν οριστεί από άλλες πρόσθετες λειτουργίες ή που έχουν εισαχθεί από τη συγκεκριμένη πρόσθετη λειτουργία).

Ο κανόνας κατασκευής του XML DTD element* σημαίνει καμία ή περισσότερες εμφανίσεις του στοιχείου. Το element? σημαίνει καμία ή μια εμφάνιση του στοιχείου και το element+ (που χρησιμοποιείται παρακάτω) σημαίνει μια ή περισσότερες εμφανίσεις του στοιχείου. Με βάση τον παραπάνω ορισμό του <plugin>, αυτό π.χ. σημαίνει ότι μια πρόσθετη λειτουργία που δεν περιέχει καμία δήλωση σημείου επέκτασης ή ρύθμιση επεκτάσεων είναι έγκυρη (για παράδειγμα, κοινές βιβλιοθήκες στις οποίες βασίζονται άλλες πρόσθετες λειτουργίες). Παρομοίως, μια πρόσθετη λειτουργία που περιέχει μόνο ρυθμίσεις επεκτάσεων και κανένα δικό της σημείο επέκτασης είναι επίσης έγκυρη (για παράδειγμα, κλάσεις ρυθμίσεων που παρέχονται σε άλλες πρόσθετες λειτουργίες σε σημεία επέκτασης που δηλώνονται σε άλλες πρόσθετες λειτουργίες).

Η αρχιτεκτονική του Eclipse βασίζεται στην έννοια των προσαρμόσιμων σημείων επέκτασης. Η ίδια η πλατφόρμα προκαθορίζει ένα σύνολο σημείων επέκτασης τα οποία καλύπτουν την εργασία επέκτασης της πλατφόρμας και της επιφάνειας εργασίας (για παράδειγμα, προσθήκη ενεργειών μενού, συνεισφορά ενσωματωμένης λειτουργίας επεξεργασίας). Επιπρόσθετα των προκαθορισμένων σημείων επέκτασης, κάθε πρόσθετη λειτουργία που παρέχεται μπορεί να δηλώσει επιπλέον σημεία επέκτασης. Δηλώνοντας ένα σημείο επέκτασης η πρόσθετη λειτουργίας στην πραγματικότητα αναφέρει την ικανότητα να ρυθμίζει τη λειτουργίας της πρόσθετης λειτουργίας με επεκτάσεις που παρέχονται εξωτερικά. Για παράδειγμα, η πρόσθετη λειτουργία του εργαλείου δόμησης σελίδας μπορεί να δηλώσει ένα σημείο επέκτασης για την προσθήκη νέων "Στοιχείων ελέγχου χρόνου σχεδίασης" (DTCs) στην παλέτα του εργαλείου δόμησής της. Αυτό σημαίνει ότι το εργαλείο δόμησης σελίδας έχει ορίσει μια αρχιτεκτονική για το τι σημαίνει ένα DTC και έχει υλοποιήσει τον κώδικα, ο οποίος αναζητάει για επεκτάσεις DTC που έχουν ρυθμιστεί στα σημεία επέκτασης.

<!ELEMENT extension-point EMPTY>  
<!ATTLIST extension-point 
  name               CDATA #REQUIRED 
  id                 CDATA #REQUIRED    
  schema             CDATA #IMPLIED 
>

Το στοιχείο <extension-point> διαθέτει τα ακόλουθα γνωρίσματα:

Οι πραγματικές επεκτάσεις ρυθμίζονται στα σημεία επέκτασης (προκαθορισμένα ή πρόσφατα δηλωμένα σε αυτή την πρόσθετη λειτουργία) στην ενότητα <extension>. Οι πληροφορίες ρυθμίσεων καθορίζονται ως ένα σωστά διαμορφωμένο XML που περιέχεται μεταξύ των προσδιοριστικών <extension> και </extension>. Η πλατφόρμα δεν καθορίζει την πραγματική μορφή της μορφοποίησης ρυθμίσεων (εκτός του ότι απαιτεί να αποτελεί σωστά διαμορφωμένο XML). Η μορφοποίηση ορίζεται από τον παροχέα της πρόσθετης λειτουργίας η οποία δήλωσε το σημείο επέκτασης. Η πλατφόρμα δεν ερμηνεύει στην πραγματικότητα τη μορφοποίηση ρυθμίσεων. Απλά μεταβιβάζει τις πληροφορίες ρυθμίσεων στην πρόσθετη λειτουργία ως μέρος της επεξεργασίας του σημείου επέκτασης (προς το παρόν η λογική του σημείου επέκτασης εκτελεί ερωτήματα σε όλες τις ρυθμισμένες επεκτάσεις του).

<!ELEMENT extension ANY> 
<!ATTLIST extension 
  point              CDATA #REQUIRED 
  id                 CDATA #IMPLIED 
  name               CDATA #IMPLIED 
>

Το στοιχείο <extension> διαθέτει τα ακόλουθα γνωρίσματα:

Σημαντικό: Το περιεχόμενο του στοιχείου <extension> δηλώνεται με τη χρήση του κανόνα ANY. Αυτό σημαίνει ότι οποιοσδήποτε σωστά διαμορφωμένος XML μπορεί να προσδιοριστεί εντός της ενότητας ρυθμίσεων επέκτασης (μεταξύ των προσδιοριστικών <extension> και </extension>).

Τμήματα

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

<?xml encoding="US-ASCII"?> 
<?eclipse version="3.2"?>
<!ELEMENT fragment (extension-point*, extension*)>

Τα συστατικά στοιχεία <extension-point> και <extension> ενός τμήματος κώδικα θα προστεθούν λογικά στην κεντρική πρόσθετη λειτουργία.

Σημείωση για τα ExtensionId και ExtensionPointId

Προστέθηκε ειδική δυνατότητα διεργασιών έτσι ώστε να υποστηριχθεί η συμβατότητα με παλαιότερες εκδόσεις για τα ExtensionId και ExtensionPointId που περιείχαν τελείες ('.') πριν από την εκδοχή 3.2. Ανάλογα με την εκδοχή που ορίζεται στο προσδιοριστικό <?eclipse version?>:

Ο κανόνας αυτός ισχύει μόνο για τα ExtensionId και ExtensionPointId που περιέχουν χαρακτήρα ή χαρακτήρες τελείας ('.').


Παλαιότερες εκδοχές της δήλωσης πρόσθετης λειτουργίας μπορούν να βρεθούν εδώ: