Ρύθμιση κοινής λειτουργίας προβολής

org.eclipse.ui.navigator.viewer

3.2

Το στοιχείο viewer καθορίζει τη ρύθμιση για μια κοινή λειτουργία προβολής. Η επέκταση μπορεί να παρέχει μια προσαρμοσμένη ταυτότητα αναδυόμενου μενού, και να αντικαθιστά είτε η λειτουργία προβολής παρέχει διασύνδεση με την υποστήριξη της λειτουργίας επεξεργασίας, πλαίσιο διαλόγου φίλτρου, ή/και ένα πλαίσιο διαλόγου "Διαθέσιμες προσαρμογές". Επιπρόσθετα, τα ένθετα στοιχεία ρύθμισης ελέγχουν πλήρως τη δομή και συμπεριφορά του αναδυόμενου μενού περιβάλλοντος.

Το viewerContentBinding συνδέει καθορισμένες επεκτάσεις περιεχομένου (μέσω του σημείου επέκτασης navigatorContent) με λειτουργίες προβολής (που έχουν καθοριστεί μέσω του σημείου επέκτασης org.eclipse.ui.views). Οποιαδήποτε επέκταση περιεχομένου συνδέεται με μια λειτουργία προβολής περιγράφεται ως ορατή. Μια υπηρεσία περιεχομένου (org.eclipse.ui.navigator.INavigatorContentService) δεν θα επιστρέψει τις επεκτάσεις που δεν είναι ορατές στην ταυτότητα της δικής της λειτουργίας προβολής.

<!ELEMENT extension (viewer* , viewerContentBinding* , viewerActionBinding* , dragAssistant)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT viewer (popupMenu? , options?)>

<!ATTLIST viewer

viewerId    CDATA #REQUIRED

popupMenuId CDATA #IMPLIED>

Παρέχει τις βασικές ρυθμίσεις για τη δημιουργία των χαρακτηριστικών μιας λειτουργίας προβολής. Οι πελάτες πρέπει επίσης να καθορίσουν μια επέκταση org.eclipse.ui.views για να δημιουργήσουν το τμήμα προβολής.



<!ELEMENT viewerContentBinding (includes? , excludes?)>

<!ATTLIST viewerContentBinding

viewerId CDATA #REQUIRED>

Οι πελάτες πρέπει να καθορίσουν ένα ή περισσότερα στοιχεία viwerContentBinding για να περιγράψουν ποιες επεκτάσεις περιεχομένου και κοινά φίλτρα είναι ορατά στη λειτουργία προβολής. Μία επέκταση περιεχομένου ή κοινό φίλτρο είναι ορατά εάν η ταυτότητα της επέκτασης περιεχομένου ή του κοινού φίλτρου συμφωνεί με μία πρόταση includes σε ένα viewerContentBinding και δεν αποκλείεται από μια πρόταση excludes. Εάν μια επέκταση περιεχομένου ή κοινό φίλτρο δεν είναι ορατά σε μια λειτουργία προβολής, τότε μια υπηρεσία περιεχομένου δεν θα ζητήσει ποτέ από την επέκταση περιεχόμενο για αυτή τη λειτουργία προβολής ούτε θα παρουσιαστεί στο χρήση στο πλαίσιο διαλόγου διαθέσιμων φίλτρων.

Οι πελάτες μπορούν να καθορίσουν ένα στοιχείο includes για να επιλέξουν ποιες επεκτάσεις είναι ορατές στη λειτουργία προβολής, και ομοίως ένα στοιχείο excludes για επεκτάσεις που δεν πρέπει να καθίστανται ορατές στη λειτουργία προβολής. Οι πελάτες μπορούν να καθορίσουν περαιτέρω τις επεκτάσεις στις οποίες πρέπει να υποβληθούν ερωτήματα για κεντρικά στοιχεία (μέσω ITreeContentProvider.getElements()) από το γνώρισμα "isRoot". Εάν σε ένα ή περισσότερα στοιχεία contentExtension έχει οριστεί το "isRoot" σε true εντός της πρότασης includes, θα υποβληθούν ερωτήματα μόνο σε αυτές τις επεκτάσεις για κεντρικά στοιχεία. Το γνώρισμα "isRoot" δεν επηρεάζει τις εξαιρέσεις.

Μια λειτουργία προβολής μπορεί να έχει περισσότερα από ένα viewerContentBindings καθορισμένα, και οι προτάσεις τους includes/excludes θα συγκεντρωθούν για να παράγουν την τελική συμπεριφορά.



<!ELEMENT viewerActionBinding (includes? , excludes?)>

<!ATTLIST viewerActionBinding

viewerId CDATA #REQUIRED>

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

Μια λειτουργία προβολής μπορεί να έχει περισσότερα από ένα viewerActionBinding καθορισμένα, και οι προτάσεις τους includes/excludes θα συγκεντρωθούν για να παράγουν την τελική συμπεριφορά.

Για ορισμούς actionProvider που δεν είναι ένθετοι σε έναν ορισμό navigatorContent, οι πελάτες μπορούν να καθορίσουν μια προσαρμοσμένη ταυτότητα. Εάν οι πελάτες δεν καθορίσουν ταυτότητα, η ταυτότητα έχει ως προεπιλογή το "org.eclipse.ui.navigator.actionProvider.X". Οι πελάτες που θέλουν να διαλέξουν actionProvider χωρίς συγκεκριμένη ταυτότητα, πρέπει να καθορίσουν ένα viewerActionBinding για την προεπιλεγμένη ταυτότητα. Για την πραγματοποίηση της παραπάνω λειτουργίας, ανατρέξτε στην ενότητα παραδειγμάτων.



<!ELEMENT includes ((contentExtension+) | (actionExtension+))>

Καθορίζουν ένα σύνολο μοτίβων που πρέπει να περιλαμβάνονται κατά την αναζήτηση επεκτάσεων περιεχομένου για τη λειτουργία προβολής που συμφωνεί με το στοιχείο "viewerId". Όταν υπάρχουν προτάσεις includes και excludes, θα δοθεί προτεραιότητα στην πρόταση includes.



<!ELEMENT excludes ((contentExtension+) | (actionExtension+))>

Καθορίζουν ένα σύνολο μοτίβων που πρέπει να εξαιρούνται κατά την αναζήτηση επεκτάσεων περιεχομένου για τη λειτουργία προβολής που συμφωνεί με το στοιχείο "viewerId". Όταν υπάρχουν προτάσεις includes και excludes, θα δοθεί προτεραιότητα στην πρόταση includes.



<!ELEMENT contentExtension EMPTY>

<!ATTLIST contentExtension

pattern CDATA #REQUIRED

isRoot  (true | false) >

Υποδεικνύει την ταυτότητα (ή αντίστοιχο μοτίβο) μιας επέκτασης περιεχομένου στην οποία πρέπει να υποβληθεί ερώτημα από το ITreeContentProvider.getElements() ή το ITreeContentProvider.getChildren() για τη ρίζα της προβολής λειτουργίας ή ενός κοινού φίλτρου που πρέπει να είναι διαθέσιμο στο χρήστη στο πλαίσιο διαλόγου "Διαθέσιμα φίλτρα".

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

Για περισσότερες πληροφορίες, ανατρέξτε στο viewerContentBinding.



<!ELEMENT actionExtension EMPTY>

<!ATTLIST actionExtension

pattern CDATA #REQUIRED>

Υποδεικνύει την επέκταση ενεργειών στην οποία πρέπει να δοθεί η δυνατότητα συνεισφοράς στο μενού περιβάλλοντος και τις γραμμές ενεργειών.

Για περισσότερες πληροφορίες, ανατρέξτε στο viewerActionBinding.



<!ELEMENT popupMenu (insertionPoint*)>

<!ATTLIST popupMenu

id                          CDATA #IMPLIED

allowsPlatformContributions (true | false) >

Ένα στοιχείο popupMenu μπορεί να οριστεί μόνο εάν δεν έχει καθοριστεί το γνώρισμα "popupMenuId" του στοιχείου viewer.

Το στοιχείο popupMenu επιτρέπει την περαιτέρω προσαρμογή του μενού περιβάλλοντος που συσχετίζεται με τη λειτουργία προβολής. Για να εφαρμοστούν οι επιλογές σωστά, πρέπει μια χρήση της λειτουργίας προβολής να αναθέσει σε ένα org.eclipse.ui.navigator.NavigatorActionService, το οποίο συμπεριφέρεται ως ένα κανονικό org.eclipse.ui.ActionGroup. Ανατρέξτε στην τεκμηρίωση της κλάσης API για περισσότερες πληροφορίες σχετικά με την αξιοποίηση αυτών των λειτουργιών. Οι πελάτες που χρησιμοποιούν μια χρήση του org.eclipse.ui.navigator.CommonNavigator δε χρειάζεται να κάνουν περαιτέρω εργασίες.

Ένα popupMenu δηλώνει ένα ή περισσότερα insertionPoints που θα χρησιμοποιηθούν από τις διεργασίες συνεισφοράς για να οργανώσουν τις συνεισφορές τους σε μια κατανοητή, πιο φιλική προς το χρήστη, συμβατή λίστα.
Εάν οι πελάτες καθορίσουν μόνο ένα γνώρισμα "popupMenuId" του στοιχείου viewer, τότε το σύνολο των insertionPoints που χρησιμοποιούνται από το μενού περιβάλλοντος θα έχουν ως προεπιλογή της ακόλουθη λίστα με τη δεδομένη σειρά:

"group.new"             separator="true"
"group.goto"            
"group.open"            separator="true"
"group.openWith"
"group.show"            separator="true"
"group.edit"            separator="true"
"group.reorganize"
"group.port"
"group.generate"        separator="true"
"group.search"          separator="true"
"group.build"           separator="true"
"additions"             separator="true" 
"group.properties"      separator="true"


Οι πελάτες που θέλουν να παραπέμπουν σε αυτές τις τιμές με προγραμματισμό μπορούν να χρησιμοποιούν τις αντίστοιχες σταθερές στο org.eclipse.ui.navigator.ICommonMenuConstants.

Οι πελάτες που θέλουν να προσαρμόσουν τα μενού τους ενθαρρύνονται να ξεκινήσουν με αυτή τη λίστα και να προσθέσουν ή να αφαιρέσουν σημεία εισαγωγής, όπως κρίνεται απαραίτητο. Οι πελάτες ενθαρρύνονται επίσης να ακολουθούν το μοτίβο έναρξης κάθε ονόματος ομάδας με τη λέξη "group.".

Εάν το στοιχείο popupMenu έχει καθοριστεί και ΔΕΝ περιέχει θυγατρικά στοιχεία insertionPoint, τότε το μενού περιβάλλοντος δεν θα έχει δημοσιευμένα σημεία εισαγωγής. Φυσικά, οι πελάτες που χρησιμοποιούν προγραμματισμό δεν έχουν περιορισμούς προσθήκης των δικών τους σημείων εισαγωγής, όποτε αυτό χρειαστεί. Οι πελάτες που καθορίζουν λειτουργίες προβολής, ενθαρρύνονται για τη δημοσίευση των δικών τους σημείων εισαγωγής για λόγους τεκμηρίωσης και σαφήνειας για επεκτάσεις σε λειτουργίες προβολής/πλοήγησης, ή για τη ρητή τεκμηρίωση ποια σημεία εισαγωγής θεωρούνται API και ποια εσωτερικά.



<!ELEMENT insertionPoint EMPTY>

<!ATTLIST insertionPoint

name      CDATA #REQUIRED

separator (true | false) >

Καθορίζει ένα σημείο εισαγωγής για το μενού περιβάλλοντος. Περιλαμβάνει το όνομα του σημείου που θα παραπέμπονται οι πελάτες, και καθορίζει εάν το σημείο εισαγωγής πρέπει να εμφανίζεται ως διαχωριστικό ή ως δείκτης ομάδας.



<!ELEMENT options (property+)>

Παρέχουν επιλογές στη λειτουργία προβολής για την προσαρμογή της παρουσίασής του στο χρήστη. Ανατρέξτε στο org.eclipse.ui.navigator.INavigatorViewerDescriptor για τις διαθέσιμες ιδιότητες.



<!ELEMENT property EMPTY>

<!ATTLIST property

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Παρέχουν ένα ζεύγος όνομα=τιμή. Η τιμή θα παρέχεται ως έχει στη λειτουργία προβολής (επομένως οι κενές σειρές χαρακτήρων θα διαδίδονται ως κενές σειρές χαρακτήρων). Ανατρέξτε στο org.eclipse.ui.navigator.INavigatorViewerDescriptor για τις διαθέσιμες ιδιότητες και τις περιγραφές τους.



<!ELEMENT dragAssistant EMPTY>

<!ATTLIST dragAssistant

class    CDATA #REQUIRED

viewerId CDATA #REQUIRED>

Μία βοήθεια τραβήγματος και εναπόθεσης παρέχει μια ρουτίνα περιορισμένων δυνατοτήτων για την παροχή επιπρόσθετων ειδών μεταφοράς για τον ορισμό των δεδομένων τραβήγματος. Αυτό το στοιχείο δεν απαιτείται επειδή το βασικό org.eclipse.ui.navigator.CommonViewer παρέχει ένα είδος org.eclipse.jface.util.LocalSelectionTransfer.

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



Το παράδειγμα που ακολουθεί ρυθμίζει την ταυτότητα αναδυόμενου μενού για μια λειτουργία προβολής.


   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer id=

"org.eclipse.testViewer"

popupMenuId=

"org.eclipse.testViewer#PopupMenu"

/>

</extension>

Εφόσον το θυγατρικό στοιχείο popupMenu της λειτουργίας προβολής δε χρησιμοποιείται στο παραπάνω παράδειγμα, θα χρησιμοποιηθεί το προεπιλεγμένο σύνολο του insertionPoints. Αυτό το σύνολο καθορίζεται ως εξής. Για περισσότερες πληροφορίες, ανατρέξτε στο στοιχείο popupMenu.

"group.new"             separator="true"
"group.goto"            
"group.open"            separator="true"
"group.openWith"
"group.show"            separator="true"
"group.edit"            separator="true"
"group.reorganize"
"group.port"
"group.generate"        separator="true"
"group.search"          separator="true"
"group.build"           separator="true"
"additions"             separator="true" 
"group.properties"      separator="true"

Το παράδειγμα που ακολουθεί παρουσιάζει τη ρύθμιση μιας λειτουργίας προβολής που δηλώνει τα προσαρμοσμένα popupMenu/insertionPoints, αλλά περιορίζει τις συνεισφορές αντικειμένων και λειτουργιών προβολής με το γνώρισμα "allowsPlatformContributions". Οι πελάτες μπορούν να συνεισφέρουν μόνο στο καθορισμένο μενού μέσω των org.eclipse.ui.navigator.CommonActionProvider που δηλώνονται για τη λειτουργία προβολής (είτε ανωτέρου επιπέδου είτε συσχετισμένη με επεκτάσεις περιεχομένου).

Σημειώστε ότι το γνώρισμα "popupMenuId" δεν καθορίζεται ταυτόχρονα με το στοιχείο popupMenu. Μόνο ένα από τα δύο, όχι και τα δύο, αποτελεί έγκυρη ρύθμιση.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<popupMenu allowsPlatformContributions=

"false"

id=

"org.eclipse.ui.navigator.resourceContent#PopupMenu"

>

<insertionPoint name=

"group.new"

/>

<insertionPoint name=

"group.open"

separator=

"true"

/>

<insertionPoint name=

"group.openWith"

/>

<insertionPoint name=

"group.port"

separator=

"true"

/>

<insertionPoint name=

"additions"

separator=

"true"

/>

<insertionPoint name=

"group.properties"

separator=

"true"

/>

</popupMenu>

</viewer>

<viewerContentBinding viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<includes>

<contentExtension pattern=

"org.eclipse.ui.navigator.resourceContent"

/>

</includes>

</viewerContentBinding>

</extension>

To παράδειγμα που ακολουθεί δηλώνει ότι μια επέκταση περιεχομένου (ταυτότητα: "org.eclipse.ui.navigator.resourceContent") συνδέεται με μια λειτουργία προβολής που συμφωνεί με την ταυτότητα "org.eclipse.ui.navigator.resourceContent". (Σε αυτό το παράδειγμα, η επέκταση περιεχομένου συμφωνεί με τις ταυτότητες της λειτουργίας προβολής, αυτό όμως δεν είναι το απαιτούμενο.) Περαιτέρω, οποιαδήποτε επέκταση με μια ταυτότητα που ξεκινάει με "org.eclipse.ui.navigator.tests."θα αγνοηθεί.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerContentBinding viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<includes>

<contentExtension pattern=

"org.eclipse.ui.navigator.resourceContent"

/>

</includes>

<excludes>

<contentExtension pattern=

"org.eclipse.ui.navigator.tests.*"

/>

</excludes>

</viewerContentBinding>

</extension>

Το παράδειγμα που ακολουθεί δηλώνει ένα viewerActionBinding για όλα τα actionProvider (που δεν είναι ένθετα σε μια επέκταση navigatorContent) που συμφωνούν με την κανονική έκφραση "org.acme.actions.*" και όχι την "org.acme.actions.tests.*". Αυτή η έκφραση θα κάνει όλα τα actionProvider η ταυτότητα των οποίων ξεκινάει με "org.acme.actions." και όχι με "org.acme.actions.tests." ορατά στη λειτουργία προβολής με την ταυτότητα "org.acme.viewer". Φυσικά, τα viewerActionBindings εφαρμόζονται μόνο σε στοιχεία actionProvider που δεν είναι ένθετα σε ένα στοιχείο navigatorContent. Η ορατότητα των ένθετων στοιχείων actionProvider ελέγχεται από τα viewerContentBindings ως προς το περικλείον στοιχείο navigatorContent.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerActionBinding viewerId=

"org.acme.viewer"

>

<includes>

<actionExtension pattern=

"org.acme.actions.*"

/>

</includes>

<excludes>

<actionExtension pattern=

"org.acme.actions.tests.*"

/>

</excludes>

</viewerActionBinding>

</extension>

Το παράδειγμα που ακολουθεί κάνει οποιοδήποτε actionProvider χωρίς γνώρισμα "id" ορατό στη λειτουργία προβολής "org.acme.viewer". Τα actionProvider χωρίς γνώρισμα "id" έχουν μια προεπιλεγμένη ταυτότητα του "org.eclipse.ui.navigator.actionProvider.X". Φυσικά, τα viewerActionBindings εφαρμόζονται μόνο σε στοιχεία actionProvider που δεν είναι ένθετα σε ένα στοιχείο navigatorContent. Η ορατότητα των ένθετων στοιχείων actionProvider ελέγχεται από τα viewerContentBindings ως προς το περικλείον στοιχείο navigatorContent.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerActionBinding viewerId=

"org.acme.viewer"

>

<includes>

<actionExtension pattern=

"org.eclipse.ui.navigator.actionProvider.*"

/>

</includes>

</viewerActionBinding>

</extension>

Το παράδειγμα που ακολουθεί παρουσιάζει τις τυπικές ιδιότητες που διατίθενται στη λειτουργία προβολής.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer popupMenuId=

"org.eclipse.ui.tests.navigator.TestView#PopupMenu"

viewerId=

"org.eclipse.ui.tests.navigator.TestView"

>

<options>

<!-- Hide the

"Available Extensions"

tab in the

"Available Customizations"

dialog (available from the

"Filters"

action -->

<property name=

"org.eclipse.ui.navigator.hideAvailableExtensionsTab"

value=

"true"

/>

<!-- Hide the

"Available Customizations"

dialog completely. This includes hiding the filters and the available content extensions. -->

<property name=

"org.eclipse.ui.navigator.hideAvailableCustomizationsDialog"

value=

"true"

/>

<!-- Hide the

"Link with Editor"

action from the toolbar of the viewer -->

<property name=

"org.eclipse.ui.navigator.hideLinkWithEditorAction"

value=

"true"

/>

<!-- Hide the

"Collapse All"

action from the toolbar of the viewer -->

<property name=

"org.eclipse.ui.navigator.hideCollapseAllAction"

value=

"true"

/>

</options>

</viewer>

</extension>