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

Εκδοχή 3.0 - Τελευταία αναθεώρηση στις 24 Ιουνίου 2004

Αποτελεί αρχειοθετημένη εκδοχή του εγγράφου. Μπορείτε να βρείτε την τρέχουσα εκδοχή πατώντας εδώ.

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

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

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

<?xml encoding="US-ASCII"?>
<!ELEMENT plugin (requires?, runtime?, extension-point*, extension*)>
<!ATTLIST plugin
  name               CDATA #REQUIRED
  id                 CDATA #REQUIRED
  version             CDATA #REQUIRED 
  provider-name       CDATA #IMPLIED
  class               CDATA #IMPLIED 
>

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

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

Η ενότητα <requires> της δήλωσης δηλώνει κάθε εξαρτύσεις σε άλλες πρόσθετες λειτουργίες.

<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
 plugin              CDATA #REQUIRED
 version             CDATA #IMPLIED
  match               (perfect | equivalent | compatible | greaterOrEqual) "compatible"
 export              (true | false) "false"
 optional            (true | false) "false"
>

Κάθε εξάρτηση καθορίζεται με τη χρήση ενός στοιχείου <import>. Περιέχει τα ακόλουθα γνωρίσματα:

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

<!ELEMENT runtime (library+)>
<!ELEMENT library (export*, packages?)>
<!ATTLIST library
  name               CDATA #REQUIRED
  type                (code | resource) "code"
>
<!ELEMENT export EMPTY>
<!ATTLIST export
  name               CDATA #REQUIRED
>
<!ELEMENT packages EMPTY>
<!ATTLIST packages
  prefixes            CDATA #REQUIRED
>

Το στοιχείο <runtime> δεν διαθέτε γνωρίσματα.

Τα στοιχεία <library> συλλογικά ορίζουν το περιβάλλον εκτέλεσης της πρόσθετης λειτουργίας. Πρέπει να οριστεί τουλάχιστον μια <library>. Κάθε στοιχείο <library> διαθέτει τα ακόλουθα γνωρίσματα:

Κάθε στοιχείο <library> μπορεί να καθορίζει το τμήμα της βιβλιοθήκης που θα πρέπει να εξαχθεί. Οι κανόνες εξαγωγής καθορίζονται ως ένα σύνολο μασκών εξαγωγής. Ως προεπιλογή (δεν καθορίζονται κανόνες εξαγωγής), η βιβλιοθήκη θεωρείται ιδιωτική. Κάθε μάσκα εξαγωγής καθορίζεται με τη χρήση του γνωρίσματος name, το οποίο μπορεί να λάβει τις εξής τιμές:

Μόνο για τις πρόσθετες λειτουργίες του Eclipse 2.1: Κάθε βιβλιοθήκη μπορεί επίσης να καθορίζει τα προθήματα των πακέτων. Αυτά χρησιμοποιούνται για τη βελτίωση της απόδοσης της φόρτωσης κλάσεων για την πρόσθετη λειτουργία και/ή για το τμήμα κώδικα. Εάν το στοιχείο <packages> δεν καθοριστεί, τότε ως προεπιλογή δεν χρησιμοποιούνται οι βελτιώσεις της φόρτωσης κλάσεων. Το στοιχείο <packages> διαθέτει το ακόλουθο γνώρισμα:

Η αρχιτεκτονική της πλατφόρμας βασίζεται στην έννοια των προσαρμόσιμων σημείων επέκτασης. Η ίδια η πλατφόρμα προκαθορίζει ένα σύνολο σημείων επέκτασης τα οποία καλύπτουν την εργασία επέκτασης της πλατφόρμας και της επιφάνειας εργασίας (για παράδειγμα, προσθήκη ενεργειών μενού, συνεισφορά ενσωματωμένης λειτουργίας επεξεργασίας). Επιπρόσθετα των προκαθορισμένων σημείων επέκτασης, κάθε πρόσθετη λειτουργία που παρέχεται μπορεί να δηλώσει επιπλέον σημεία επέκτασης. Δηλώνοντας ένα σημείο επέκτασης η πρόσθετη λειτουργίας στην πραγματικότητα αναφέρει την ικανότητα να ρυθμίζει τη λειτουργίας της πρόσθετης λειτουργίας με επεκτάσεις που παρέχονται εξωτερικά. Για παράδειγμα, η πρόσθετη λειτουργία του εργαλείου δόμησης σελίδας μπορεί να δηλώσει ένα σημείο επέκτασης για την προσθήκη νέων "Στοιχείων ελέγχου χρόνου σχεδίασης" (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"?> 
<!ELEMENT fragment (requires?, runtime?, extension-point*, extension*)>
<!ATTLIST fragment
  name               CDATA #REQUIRED
  id                 CDATA #REQUIRED
  version             CDATA #REQUIRED
  provider-name       CDATA #IMPLIED
  plugin-id           CDATA #REQUIRED
  plugin-version      CDATA #REQUIRED
  match               (perfect | equivalent | compatible | greaterOrEqual) "compatible"
>

Κάθε τμήμα κώδικα θα πρέπει να συσχετιστεί με μια συγκεκριμένη πρόσθετη λειτουργία. Η συσχετισμένη πρόσθετη λειτουργία προσδιορίζεται με το <plugin-id>, το <plugin-version> και προαιρετικά το <match>. Σημειώστε ότι εάν αυτή η προδιαγραφή αντιστοιχεί με περισσότερες από μια πρόσθετες λειτουργίες, θα χρησιμοποιηθεί η αντίστοιχη πρόσθετη λειτουργία με το μεγαλύτερο αριθμό εκδοχής.

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

Τα γνωρίσματα του <fragment> έχουν ως εξής: