1.2.6 ΒΑΣΙΚΗ ΔΟΜΗ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΩΝ ΠΑΡΑΘΥΡΩΝ (WINDOWS)


Η βασική μονάδα του συστήματος των Χ Windows είναι το παράθυρο (window). Το παράθυρο πρακτικά αντιπροσωπεύει μία ορθογώνια περιοχή της οθόνης εντός της οποίας μπορούν να απεικονιστούν κείμενο ή γραφικά. Σε αντίθεση με τα άλλα παραθυρικά συστήματα, στο Χ Window system το παράθυρο δεν διαθέτει (αρχικά τουλάχιστον) κανένα title bar ή scroll bar ή άλλα τέτοια βοηθητικά στοιχεία. Είναι απλά ένα ορθογώνιο με κάποιο χρώμα ή σχέδιο και ορισμένο περιθώριο. Η κάθε εφαρμογή μπορεί να συνδυάσει δύο ή περισσότερα παράθυρα για να δημιουργήσει τα διάφορα υψηλού επιπέδου διαλογικά στοιχεία (scroll bars, title bars, dialog boxes κτλ.). Τα παράθυρα δημιουγούνται από τον εξυπηρετητή ύστερα από αίτημα πελατών. Ο εξυπηρετητής διατηρεί τα δεδομένα για κάθε παράθυρο ενώ για οποιεσδήποτε μεταβολές σε αυτά οι πελάτες πρέπει θέσουν το κατάλληλο αίτημα δίνοντας και το ανάλογο αναγνωριστικό (ID) που αντιστοιχεί σε κάθε παράθυρο. Είναι χαρακτηριστικό ότι παρόλο που ένα παράθυρο μπορεί να έχει δημιουργηθεί με αίτημα ενός συγκεκριμένου πελάτη οποιοσδήποτε άλλος πελάτης μπορεί να έχει πρόσβαση σε αυτό αν γνωρίζει το αναγνωριστικό του (ID). Την ιδιότητα αυτή χρησιμοποιούν και ορισμένοι ιδιαίτεροι πελάτες, οι window managers, οι οποίοι λειτουργούν πάνω από τον εξυπηρετητή σε συνεργασία με αυτόν και προσφέρουν διάφορες ευκολίες στο χρήστη.

σχήμα 1.1 Παράδειγμα δομής παραθύρων
Μία άλλη σημαντική ιδιότητα των παραθύρων είναι ότι υπάρχει μία ιεραρχία μεταξύ τους η οποία έχει τη μορφή δέντρου. Στην κορυφή του δέντρου βρίσκεται το βασικό παράθυρο που ονομάζεται και ρίζα (root window). Ο εξυπηρετητής όταν ξεκινά δημιουργεί αυτόματα από ένα τέτοιο παράθυρο σε κάθε οθόνη (screen) που ελέγχεται από το display του. Η ρίζα (root) καταλαμβάνει όλη την οθόνη, έχει συνήθως ένα απλό σχέδιο (pattern), και δεν είναι δυνατόν να αλλάξει μέγεθος ή θέση. Οσα νέα παράθυρα δημιουργούνται "κάθονται" επάνω στη ρίζα. Για αυτά η ρίζα είναι το "πατρικό" παράθυρο (parent window) ή αλλιώς "πρόγονος" (ancestor) τους ενώ τα ίδια για τη ρίζα είναι "παιδιά" ή "απόγονοί" της (children, descendants, ή sub-windows). Ομοίως τα παράθυρα αυτά μπορούν να έχουν και δικά τους υπο-παράθυρα.

Για παράδειγμα, θεωρούμε το σχήμα 1.1 στο οποίο βλέπουμε ότι επάνω στη ρίζα υπάρχουν δύο παράθυρα. Στο ένα από αυτά υπάρχει ένα scroll bar το οποίο έχει υλοποιηθεί με ένα νέο παράθυρο, ενώ στο άλλο υπάρχει ένα dialog box δηλαδή ένα διαλογικό κουτί μέσω του οποίου ο χρήστης δίνει κάποια πληροφορία στο πρόγραμμα.

Το dialog box υλοποιείται από τέσσερα παράθυρα, το βασικό παράθυρο επάνω στο οποίο βρίσκονται τα υπόλοιπα, ένα παράθυρο από το οποίο γίνεται η εισαγωγή της πληροφορίας με την μορφή συμβολοσειράς (string) και δύο παράθυρα που υλοποιούν αντίστοιχα το button επικύρωσης (ok button) και το button ακύρωσης (cancel button). Τα παραπάνω παράθυρα διατάσσονται σε μορφή δέντρο όπως φαίνεται στο σχήμα 1.2. Η μορφή αυτή δεν είναι απλώς τυπική αλλά ισχύει και στην πράξη καθώς για να αναφερθεί κανείς σε κάποιο παράθυρο πρέπει υποχρεωτικά να γνωρίζει όλα τα παράθυρα-προγόνους του και να έχει πρόσβαση σε αυτά. Τα θέματα αυτά εξετάζονται αναλυτικά στο 3ο κεφάλαιο όπου γίνεται και η υλοποίησή τους.

σχήμα 1.2 Ιεραρχία παραθύρων για το σχήμα 1.1

[prev] [up] [next] [contents] [index]