Παράδειγμα - Λειτουργία επεξεργασίας Java
Εισαγωγή
Το παράδειγμα "Λειτουργία επεξεργασίας Java" δείχνει τις τυπικές λειτουργίες που είναι διαθέσιμες για προσαρμοσμένες λειτουργίες επεξεργασίας κειμένου. Δείχνει επίσης τον τρόπο καταχώρησης μιας λειτουργίας επεξεργασίας για μια επέκταση αρχείου (σε αυτή την περίπτωση την .jav) και τον τρόπο ορισμού ενός προσαρμοσμένου παροχέα εγγράφου για χρήση από αυτή τη λειτουργία επεξεργασίας. Αυτό το παράδειγμα είναι μόνο για λόγους επίδειξης. Η υποστήριξη τροποποίησης Java παρέχεται από τα "Εργαλεία ανάπτυξης Eclipse Java".
Ο κώδικας για αυτό το παράδειγμα βρίσκεται στην πρόσθετη λειτουργία org.eclipse.ui.examples.javaeditor
.
Για να εξερευνήσετε τον κώδικα συνιστάται η εισαγωγή αυτής της λειτουργίας επεξεργασίας στο χώρο εργασίας σας.
Λειτουργίες που παρουσιάζονται στη λειτουργία επεξεργασίας παραδείγματος
-
επισήμανση σύνταξης
-
αυτόματη συμπλήρωση περιεχομένου με βάση το είδος περιεχομένου (Javadoc και κώδικας Java)
-
επικοινωνία ανάμεσα στη λειτουργία διάρθρωσης και τη λειτουργία επεξεργασίας, π.χ. η επιλογή της λειτουργίας διάρθρωσης περιεχομένου τροφοδοτεί την περιοχή επισήμανσης της λειτουργίας επεξεργασίας
-
δυο διαφορετικές λειτουργίες παρουσίασης
-
σήμανση της περιοχής επισήμανσης με τη χρήση γραφικού δείκτη εύρους
-
περιορισμός της λειτουργίας επεξεργασίας να εμφανίζει μόνο κείμενο εντός της περιοχής επισήμανσης (π.χ. εμφάνιση μιας μοναδικής μεθόδου μιας κλάσης Java)
-
χειρισμός δείκτη
-
κοινή χρήση εγγράφου
Λειτουργίες που δεν παρουσιάζονται
-
μορφοποίηση περιεχομένου
-
δυναμική διευθέτηση της σελίδας διάρθρωσης περιεχομένου
Εκτέλεση του παραδείγματος "Λειτουργία επεξεργασίας Java"
-
Δημιουργία έργου
-
Δημιουργία αρχείου με την επέκταση αρχείου ".jav" στο νέο έργο που δημιουργήθηκε.
Η λειτουργία επεξεργασίας παραδείγματος Java ανοίγει αυτόματα.
-
Εισαγωγή κώδικα Java. Ο κώδικας Java χρωματίζεται δυναμικά. Η λειτουργία επεξεργασίας παραδείγματος παρουσιάζει τα ακόλουθα στοιχεία γλώσσας σε διαφορετικά χρώματα: σχόλια πολλαπλών γραμμών, σχόλια μοναδικών γραμμών, δεσμευμένες λέξεις γλώσσας Java, σειρές χαρακτήρων και σταθερές χαρακτήρων, κανονικός κώδικας Java, καθώς και σχόλια πολλαπλών γραμμών ακολουθούμενα από οδηγίες Javadoc. Μέσα σε αυτά τα σχόλια Javadoc, οι λέξεις-κλειδιά Javadoc (πράσινο) και τα προσδιοριστικά HTML (γκρι) χρωματίζονται διαφορετικά.
-
Ανοίξτε ένα νέο σχόλιο Java πολλαπλών γραμμών εισάγοντας "/*" εκτός ενός σχολίου Java.
Όλο το κείμενο ανάμεσα στο εισαγόμενο "/*" και την πρώτη εμφάνιση του "*/" ή το τέλος του κειμένου αλλάζει το χρώμα του σε κόκκινο. Προσαρτήστε άλλο ένα "*". Η κόκκινη περιοχή αλλάζει χρώμα σε μαύρο καθώς το κανονικό σχόλιο πολλαπλών γραμμών θεωρείται πλέον ότι περιέχει Javadoc. Καλέστε τη αυτόματη συμπλήρωση κώδικα χρησιμοποιώντας CTRL-SPACE.
Η λειτουργία της αυτόματης συμπλήρωσης περιεχομένου υπάρχει για την υποστήριξη του χρήστη στη γραφή κώδικα.
Έτσι, με την κλήση της, η αυτόματη συμπλήρωση περιεχομένου θα πρέπει να διαθέτει μια λίστα με όλες τις πιθανές έγκυρες συμπληρώσεις στη θέση κλήσης της. Εντός του Javadoc, η λειτουργία επεξεργασίας παραδείγματος πάντα προτείνει όλες τις λέξεις-κλειδιά Javadoc.
-
Εκτός ενός σχολίου Java καλέστε την υπόδειξη περιεχομένου χρησιμοποιώντας CTRL+SHIFT+SPACE. Υπάρχει λίστα με πέντε προτάσεις. Επιλέξτε μια και πατήστε ENTER. Εμφανίζεται ένα μικρό κόκκινο κινητό παράθυρο πάνω από την τρέχουσα γραμμή εμφανίζοντας την επιλεγμένη πρόταση.
Οι υποδείξεις περιεχομένου χρησιμοποιούνται για να επιτρέψουν στο χρήστη να εκφράσει την πρόθεσή του (π.χ. καταχωρώντας μια μέθοδο κλήσης), και να παρουσιάσουν συμφραστικές πληροφορίες οι οποίες καθοδηγούν το χρήστη σε αυτό. Στη λειτουργία επεξεργασίας παραδείγματος η πρόταση θεωρείται έγκυρη πέντε χαρακτήρες γύρω από την αρχική θέση κλήσης. Ενώ η υπόδειξη περιεχομένου είναι ορατή, καλέστε την αυτόματη συμπλήρωση περιεχομένου χρησιμοποιώντας CTRL+SPACE.
Η αυτόματη συμπλήρωση περιεχομένου που καλείται σε αυτή την περίπτωση θα πρέπει να βοηθήσει το χρήστη να επιτύχει την πρόθεσή του που έχει δηλώσει, η οποία είναι ακόμα ορατή στην υπόδειξη περιεχομένου. Μέσα σε κανονικό κώδικα Java, η λειτουργία επεξεργασίας παραδείγματος προτείνει όλες τις λέξεις-κλειδιά Java.
-
Αποθηκεύστε τον κώδικα Java. Με την αποθήκευση ενημερώνεται η λειτουργία διάρθρωσης περιεχομένου. Η λειτουργία διάρθρωσης περιεχομένου περιέχει δέκα καταχωρίσεις, η κάθε μια από αυτές αντιπροσωπεύει ένα από δέκα ισομεγέθη τμήματα του κώδικα Java στη λειτουργία επεξεργασίας. Αυτό το στυλ της λειτουργίας διάρθρωσης περιεχομένου έχει επιλεγεί για να δείξουμε ότι η σημασιολογία των επισημασμένων περιοχών μπορεί να οριστεί αυθαίρετα. (Δείτε τα επόμενα βήματα.)
-
Επιλέξτε μια από τις καταχωρίσεις στη λειτουργία διάρθρωσης περιεχομένου. Οι αντίστοιχες γραμμές επισημαίνονται με μια μπλε γραμμή στον αριστερό κατακόρυφο χάρακα της λειτουργίας επεξεργασίας.
-
Τώρα μεταβείτε στη λειτουργία κατατμημένης παρουσίασης της λειτουργίας επεξεργασίας Java. Για αυτό βεβαιωθείτε ότι έχετε εστιάσει στη λειτουργία επεξεργασίας και πατήστε αυτό το κουμπί στη γραμμή εργαλείων της επιφάνειας εργασίας του οποίου η αναδυόμενη βοήθεια αναφέρει "Ενεργοποίηση/απενεργοποίηση λειτουργίας προβολής κατατμημένου πρωτογενούς κώδικα". Αυτή η λειτουργικότητα χρησιμοποιείται για προβολές μοναδικών μεθόδων και παρόμοιας λειτουργικότητας.
-
Επιλέξτε μια διαφορετική καταχώρηση στη λειτουργία διάρθρωσης περιεχομένου. Τώρα η λειτουργία επεξεργασίας εμφανίζει μόνο το επιλεγμένο τμήμα. Αποεπιλέγοντας την καταχώρηση στη λειτουργία διάρθρωσης περιεχομένου, εμφανίζεται πάλι ολόκληρος ο κώδικας Java.
-
Επιλέξτε μια καταχώρηση στη λειτουργία διάρθρωσης περιεχομένου, επιλέξτε ένα κομμάτι του ορατού κειμένου και προσθέστε μια εργασία για την επιλογή. Η εργασία εμφανίζεται στη λίστα εργασιών.
Τροποποιήστε τον ορατό κώδικα. Στη λίστα εργασιών επιλέξτε την εργασία που δημιουργήθηκε προηγουμένως και πατήστε το κουμπί "Μετάβαση σε αρχείο". Η εργασία είναι επιλεγμένη στην ορατή περιοχή, λαμβάνοντας σωστά υπόψη τις τροποποιήσεις που εφαρμόστηκαν προηγουμένως.
-
Επιλέξτε μια άλλη καταχώρηση στη λειτουργία διάρθρωσης περιεχομένου. Αποκαλύψτε την εργασία που προστέθηκε προηγουμένως από τη λίστα εργασιών. Η περιοχή επισήμανσης της λειτουργίας επεξεργασίας μεγενθύνεται αυτόματα για να συμπεριλάβει την περιοχή της αποκαλυπτόμενης εργασίας.
-
Ανοίξτε ένα νέο χώρο εργασίας. Στο νέο χώρο εργασίας ανοίξτε μια λειτουργία επεξεργασίας Java για το ίδιο αρχείο όπως στον αρχικό χώρο εργασίας. Τροποποιήστε το περιεχόμενο της λειτουργίας επεξεργασίας. Μεταβείτε πίσω στον αρχικό χώρο εργασίας. Η λειτουργία επεξεργασίας εμφανίζει τις αλλαγές που έγιναν στον άλλο χώρο εργασίας. Οι δυο λειτουργίες επεξεργασίας που εμφανίζουν το ίδιο αρχείο είναι διασυνδεδεμένοι.
Αρχές δημιουργίας προσαρμοσμένων λειτουργιών επεξεργασίας κειμένου
Τα ακόλουθα βήματα συνήθως είναι απαραίτητα για την ανάπτυξη μιας προσαρμοσμένης λειτουργίας επεξεργασίας κειμένου.
-
Δημιουργήστε ένα παροχέα εγγράφων. Ένας παροχέας εγγράφων (δείτε IDocumentProvider) παράγει και διαχειρίζεται έγγραφα (δείτε IDocument) που περιέχουν μια αναπαράσταση κειμένου των στοιχείων εισόδου της λειτουργίας επεξεργασίας. Είναι σημαντικό να αποφασίσετε τον τρόπο εκτέλεσης της μετάφρασης μεταξύ του στοιχείου και της αναπαράστασης κειμένου καθώς και εάν θα πρέπει να γίνεται κοινή χρήση του παροχέα εγγράφων ανάμεσα σε πολλαπλές λειτουργίες επεξεργασίας ή όχι. Δείτε την κλάση FileDocumentProvider στη λειτουργία επεξεργασίας παραδείγματος Java.
-
Δημιουργήστε μια λειτουργία διαμερισμού εγγράφων. Μια λειτουργία διαμερισμού εγγράφων (δείτε το IDocumentPartitioner) διαιρεί ένα έγγραφο σε ασύνδετες περιοχές. Η λειτουργία διαμερισμού αναθέτει σε κάθε περιοχή ένα είδος περιεχομένου από ένα σύνολο ειδών περιεχομένου που προκαθορίζονται από τη λειτουργία διαμερισμού. Σε κάθε αλλαγή του εγγράφου πρέπει να ενημερώνεται ο διαχωρισμός του εγγράφου. Δείτε την κλάση JavaPartitioner στη λειτουργία επεξεργασίας παραδείγματος Java. Το JavaPartitioner καθορίζει περιοχές ειδών "σχόλια πολλαπλών γραμμών", "σχόλια Javadoc", και "οτιδήποτε άλλο". Πρέπει να βεβαιωθείτε ότι ο παροχέας εγγράφων έχει οριστεί για κάθε έγγραφο που παράγεται από τον παροχέα εγγράφων.
-
Καθορίστε ποιες από τις πρόσθετες λειτουργίες της λειτουργίας προβολής πρωτογενούς κώδικα πρέπει να παρασχεθούν. Μεταξύ των άλλων πρόσθετων λειτουργιών που υποστηρίζονται συμπεριλαμβάνονται οι στρατηγικές αυτόματης προσθήκης εσοχής, οι στρατηγικές διπλού πατήματος, η λειτουργία μορφοποίησης περιεχομένου και η λειτουργία διευθέτησης της παρουσίασης κειμένου. Η μετέπειτα περιγραφή θα περιορίζεται στην λειτουργία διευθέτησης της παρουσίασης κειμένου (δείτε το IPresentationReconciler).
Στη λειτουργία επεξεργασίας του παραδείγματος Java η λειτουργία διευθέτησης της παρουσίασης κειμένου χρησιμοποιείται για την υλοποίηση της επισήμανσης σύνταξης.
-
Δημιουργήστε για όλες τις πρόσθετες λειτουργίες της λειτουργίας προβολής πρωτογενούς κώδικα τις κατάλληλες επεκτάσεις για κάθε υποστηριζόμενο είδος περιεχομένου. Όπως είδαμε παραπάνω, η λειτουργία διαμερισμού εγγράφου ορίζει τα υποστηριζόμενα είδη περιεχομένου. Η προεπιλεγμένη υλοποίηση του IPresentationReconciler υποστηρίζει τα IPresentationDamagers και IPresentationRepairers ως επεκτάσεις.
Αυτές οι επεκτάσεις θεωρούνται ότι είναι ειδικά για ένα συγκεκριμένο είδος περιεχομένου. Συνεπώς, για μια προσαρμοσμένη λειτουργία επεξεργασίας, ο χρήστης πρέπει πρώτα να επιλέξει ένα υποσύνολο των υποστηριζόμενων ειδών περιεχομένου. Οι περιοχές ενός είδους στο επιλεγμένο υποσύνολο θα υποστηρίζουν, για παράδειγμα, επισήμανση σύνταξης. Για κάθε είδος από αυτά πρέπει να υλοποιηθούν οι επεκτάσεις. Δείτε τα JavaDamagerRepairer και JavaDocDamagerRepairer στη λειτουργία επεξεργασίας παραδείγματος.
-
Δομήστε τις ρυθμίσεις της λειτουργίας προβολής πρωτογενούς κώδικα χρησιμοποιώντας τις πρόσθετες λειτουργίες που δημιουργήθηκαν προηγουμένως. Δείτε το JavaSourceViewerConfiguration στη λειτουργία επεξεργασίας παραδείγματος.
-
Προσαρμόστε την κλάση TextEditor ή την κλάση AbstractTextEditor με τη λειτουργία διαμερισμού εγγράφου και τις ρυθμίσεις της λειτουργίας προβολής πρωτογενούς κώδικα που αναπτύχθηκαν. Προσθέστε ή αντικαταστήστε ενέργειες και προσαρμόστε την κατασκευή του μενού περιβάλλοντος της λειτουργίας επεξεργασίας. Στην πραγματική εκδοχή, αυτή η προσαρμογή πρέπει να γίνει σε μια υποκλάση. Δείτε το JavaEditor στη λειτουργία επεξεργασίας παραδείγματος.
-
Ρυθμίστε μια κατάλληλη διεργασία συνεισφοράς περιεχομένου της γραμμής ενεργειών η οποία συνεισφέρει ενέργειες σχετικά με τη λειτουργία επεξεργασίας στη γραμμή εργαλείων και τα μενού της επιφάνειας εργασίας. Δείτε το JavaActionContributor στη λειτουργία επεξεργασίας παραδείγματος.
-
Αναπτύξτε το αρχείο ρυθμίσεων XML της πρόσθετης λειτουργίας της λειτουργίας επεξεργασίας, ούτως ώστε η λειτουργία επεξεργασίας να καταχωρείται στο σημείο επέκτασης της προκαθορισμένης λειτουργίας επεξεργασίας για ένα συγκεκριμένο σύνολο επεκτάσεων αρχείου. Επίσης, ρυθμίστε τη διεργασία συνεισφοράς περιεχομένου της γραμμής ενεργειών στο αρχείο XML.
Δείτε το plugin.xml αυτού του παραδείγματος.
Οργάνωση κώδικα του παραδείγματος
Ο κώδικας του παραδείγματος της λειτουργίας επεξεργασίας Java οργανώνεται σε τέσσερα πακέτα:
-
το
org.eclipse.ui.examples.javaeditor
περιέχει όλες τις κλάσεις ειδικά για τη λειτουργία επεξεργασίας.
-
το
org.eclipse.ui.examples.javaeditor.java
περιέχει όλες τις πρόσθετες λειτουργίες της λειτουργίας προβολής πρωτογενούς κώδικα ειδικά για Java, όπως το JavaDamagerRepairer, καθώς και τη λειτουργία διαμερισμού εγγράφου ειδικά για Java.
-
το
org.eclipse.ui.examples.javaeditor.javadoc
περιέχει όλες τις πρόσθετες λειτουργίες της λειτουργίας προβολής πρωτογενούς κώδικα ειδικά για Javadoc, όπως το JavaDocDamagerRepairer.
το org.eclipse.ui.examples.javaeditor.util
περιέχει κλάσεις διευκόλυνσης των οποίων γίνεται κοινή χρήση από τα άλλα τρία πακέτα.