Αναδυόμενο πλαίσιο πληροφοριών χάρακα και κειμένου

Η υποστήριξη αναδυόμενου πλαισίου πληροφοριών παρέχεται στο πλαίσιο κειμένου πλατφόρμας και επιτρέπει την υλοποίηση αναδυόμενων πλαισίων πληροφοριών (γνωστά και ως infopops) επάνω από το κείμενο και τους χάρακες που παρουσιάζονται στη λειτουργία επεξεργασίας.

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

Ας εξετάσουμε ξανά την κλάση JavaSourceViewerConfiguration για να δούμε τις μεθόδους που ορίζουν τη συμπεριφορά του αναδυόμενου πλαισίου πληροφοριών:

public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
	return new JavaTextHover();
}
public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
	return new JavaAnnotationHover();
}

Μπορεί να γίνει δυναμική εγκατάσταση κλάσεων αναδυόμενης βοήθειας χρησιμοποιώντας το πρωτόκολλο SourceViewer (setTextHover και setAnnotationHover).  Κανένας από τους δύο τρόπους δεν παρέχει κάποιο ιδιαίτερο όφελος χρόνου εκτέλεσης, ωστόσο η τοποθέτηση όλων των αντικαταστάσεων συμπεριφοράς που μπορούν να προστεθούν, σε μια υποκλάση της κλάσης SourceViewerConfiguration έχει το πλεονέκτημα της ενοποίησης όλων των ορισμών σε ένα μέρος.

Ας εξετάσουμε τα χαρακτηριστικά της παροχής και των δύο ειδών αναδυόμενου πλαισίου πληροφοριών.

Αναδυόμενο πλαίσιο πληροφοριών κειμένου

Το αναδυόμενο πλαίσιο πληροφοριών κειμένου επιτρέπει την παροχή πληροφοριακού κειμένου για κείμενο που παρουσιάζεται στη λειτουργία επεξεργασίας.  Αυτό γίνεται με χρήση της διεπαφής ITextHover.  Το αναδυόμενο πλαίσιο πληροφοριών κειμένου ευθύνεται για τον υπολογισμό της περιοχής που θα πρέπει να χρησιμοποιηθεί ως προέλευση των πληροφοριών του αναδυόμενο πλαίσιο πληροφοριών, εφόσον δωθεί ένα σημείο εκκίνησης στο έγγραφο.  Ευθύνεται επίσης για την παροχή του πληροφοριακού κειμένου για μια συγκεκριμένη περιοχή.  Η κλάση JavaTextHover είναι αρκετά απλή.  Ελέγχει αν το παρεχόμενο σημείο εκκίνησης για το αναδυόμενο πλαίσιο πληροφοριών υπάρχει στην επιλογή του κειμένου.    Αν υπάρχει, τότε παρέχει την περιοχή τιμών επιλογής ως περιοχή αναδυόμενου πλαισίου πληροφοριών. 

public class JavaTextHover implements ITextHover {

	...
	
	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
		Point selection= textViewer.getSelectedRange();
		if (selection.x <= offset && offset < selection.x + selection.y)
			return new Region(selection.x, selection.y);
		return new Region(offset, 0);
	}
}

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

public class JavaTextHover implements ITextHover {

	public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
		if (hoverRegion != null) {
			try {
				if (hoverRegion.getLength() > -1)
					return textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
			} catch (BadLocationException x) {
			}
		}
		return JavaEditorMessages.getString("JavaTextHover.emptySelection"); 
	}
	...
}

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

Πληροφορίες αναδυόμενου πλαισίου σε μια επιλεγμένη περιοχή

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

Αναδυόμενο πλαίσιο πληροφοριών χάρακα

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

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

public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) {
	IDocument document= sourceViewer.getDocument();

	try {
		IRegion info= document.getLineInformation(lineNumber);
		return document.get(info.getOffset(), info.getLength());
	} catch (BadLocationException x) {
	}
	return null;
}

Πληροφορίες αναδυόμενου πλαισίου πληροφοριών σε χάρακα

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