Linux Inside
86
Το WindowBuilder συνεχίζει να αναπτύσσεται από την
Google ως έργο του Eclipse. Πληροφορίες για την εξέλιξη
του έργου και σύνδεσμο στην εκάστοτε τελευταία έκδοση
του WindowBuilder μπορούμε να βρούμε στη διεύθυνση [6].
Στο περιβάλλον του Eclipse λοιπόν, επιλέγουμε από το
μενού File, Project... και στο παράθυρο New Project επιλέ-
γουμε WindowBuilder, SWT Designer, SWT/JFace Java
Project, πατούμε Next, δίνουμε έστω το όνομα kleidothiki
στο έργο λογισμικού και πατούμε το Finish.
Έχοντας στο Package Explorer επιλεγμένο το project
kleidothiki επιλέγουμε από το μενού File, New, Package και
δίνουμε ένα όνομα στο πακέτο, έστω kleidothiki. Επιλέγουμε
ξανά από το μενού File, New, Other... και στο παράθυρο
New, WindowBuilder, SWT Designer, SWT, Application
Window. Στο παράθυρο New SWT Application πατούμε στο
Browse... του Package και επιλέγουμε το πακέτο kleidothiki.
Μετά δίνουμε ένα όνομα για τη βασική κλάση της εφαρμο-
γής, έστω KleidothikiApp και πατάμε το Finish.
Επειδή στη φόρμα της εφαρμογής, για να αλλάξουμε το
μέγεθος της γραμματοσειράς, χρησιμοποιούμε τη μέθοδο
getFont της κλάσης SWTResourceManager, θα πρέπει στο
έργο λογισμικού να προσθέσουμε (με τον ίδιο τρόπο) ακόμη
ένα πακέτο με όνομα org.eclipse.wb.swt και μέσα σε αυτό
ένα αρχείο κώδικα Java (με δεξί κλικ στο όνομα του πακέ-
του, New, Class) με όνομα SWTResourceManager.
Για να συνεργαστεί η εφαρμογή μας με το Java DB θα
πρέπει να εισαγάγουμε τη βιβλιοθήκη derby.jar στο project
μας. Στον Package Explorer κάνουμε δεξί κλικ στο όνομα
του project και επιλέγουμε Properties στο τοπικό μενού. Στο
παράθυρο Properties for kleidothiki επιλέγουμε από αριστε-
ρά Java Build Path και μετά την καρτέλα Libraries.
Πατούμε το Add External JARs... και πηγαίνουμε στη θέση
του Java DB (δηλαδή στη θέση DERBY_HOME ή
DERBY_INSTALL ανάλογα με την εγκατάσταση) και από εκεί
στο φάκελο lib και επιλέγουμε το αρχείο derby.jar. Βλέπου-
με ότι η βιβλιοθήκη προστίθεται στη λίστα και πατάμε το
πλήκτρο ΟΚ. Η βιβλιοθήκη derby.jar (μαζί με άλλες) θα πρέ-
πει να υπάρχει και μέσα στο φάκελο Referenced Libraries
του έργου λογισμικού kleidothiki.
Σχεδίαση της φόρμας και ανάπτυξη του κώδικα
Ο πλήρης κώδικας της εφαρμογής διατίθεται για μία πρώ-
τη εκτέλεση πριν από τους πειραματισμούς μας αλλά και ως
μετέπειτα σημείο αναφοράς. Βρίσκεται στο συνοδευτικό DVD
του περιοδικού, εκτενώς σχολιασμένος, ώστε να είναι όσο το
δυνατό πιο κατανοητός. Πριν από την εκτέλεση της εφαρμο-
γής αντικαθιστούμε τα περιεχόμενα της κλάσης Kleidothiki
App με αυτά του αρχείου KleidothikiApp.java.text και τα πε-
ριεχόμενα της κλάσης SWTResourceManager με αυτά του
αρχείου SWTResourceManager.java.text. Το επόμενο βήμα εί-
ναι η εκτέλεση της εφαρμογής επιλέγοντας από το μενού
Run, Run As, Java Application.
Στην
εικόνα 1
παρουσιάζεται το παράθυρο της εφαρμογής
μας κατά την εκτέλεσή της.
Αν προσπαθήσουμε να «χτίσουμε» βήμα βήμα την εφαρμο-
γή, σχεδιάζοντας αρχικά το παράθυρό της και προσθέτοντας
τον κώδικα που θα δώσει ζωή στα widgets της φόρμας, η
προσθήκη της κλάσης SWTResourceManager (και κάθε άλ-
λης απαιτούμενης για σχετικά έργα) γίνεται βέβαια αυτόματα
από το Eclipse. Κατά τη χρήση του οπτικού σχεδιαστή, ο κώ-
δικας που δημιουργεί το WindowBuilder είναι ίδιος με αυτόν
που παρέχεται στο συνοδευτικό DVD και έχει τακτοποιηθεί λί-
γο ώστε να είναι πιο ευανάγνωστος.
Για τη δημιουργία εκτελέσιμου JAR αρχείου με σκοπό τη
διανομή της εφαρμογής, επιλέγουμε από το μενού File,
Export... και στο ομώνυμο παράθυρο, Java, Runnable JAR
File. Μετά το Next επιλέγουμε στο Launch configuration το
KleidothikiApp – kleidothiki και ορίζουμε στο Export destina-
tion τη θέση του αρχείου προορισμού. Προσέχουμε να επιλέ-
ξουμε το Package required libraries into generated JAR στο
Library handling και πατάμε το Finish.
Λειτουργία της εφαρμογής - Αποσύνθεση του κώδικα
Η εφαρμογή σε γενικές γραμμές λειτουργεί ως εξής: Στο
ξεκίνημα δημιουργείται το παράθυρο της εφαρμογής και σε
αυτό στοιχειοθετούνται όλα τα απαιτούμενα widgets (πλή-
κτρα, ετικέτες, πλαίσια κειμένου).
Στη συνέχεια, γίνεται η σύνδεση με τη βάση δεδομένων
όπου αποθηκεύονται τα δεδομένα της εφαρμογής (συνθημα-
τικά και άλλες σχετικές πληροφορίες). Για την προβολή των
εγγραφών του πίνακα kleidi της βάσης χρησιμοποιείται ένα
SWT widget τύπου πίνακα, το οποίο στο ξεκίνημα της εφαρ-
μογής γεμίζει με το σύνολο των εγγραφών του πίνακα της
βάσης δεδομένων. Ανάλογα με τις ενέργειες του χρήστη και
την ύπαρξη ή όχι εγγραφών ενεργοποιούνται ή απενεργοποι-
ούνται τα διάφορα πλήκτρα ενεργειών (νέο κλειδί, διόρθωση,
αναζήτηση, διαγραφή) και τα πλαίσια κειμένου της φόρμας
γεμίζουν με τις τιμές της επιλεγμένης κάθε φοράς γραμμής
του SWT πίνακα.
Ο χρήστης μπορεί να ζητήσει την εισαγωγή ενός νέου κλει-
διού και στη συνέχεια να την ακυρώσει ή αφού συμπληρώσει
τις κατάλληλες πληροφορίες να την επικυρώσει. Όμοια μπο-
ρεί να είναι η συμπεριφορά του και στην περίπτωση ενημέρω-
σης των στοιχείων κάποιου επιλεγμένου κλειδιού. Στην περί-
πτωση διαγραφής, στην αρχή ζητείται επιβεβαίωση και ανά-
λογα διαγράφεται ή όχι το επιλεγμένο. Η αναζήτηση έχει ως
αποτέλεσμα να φορτωθούν στον SWT πίνακα εγγραφές που
ικανοποιούν (για απλότητα) μόνο τα κριτήρια ισότητας με τις
τιμές που δίνονται στα πεδία της φόρμας. Ο χρήστης έχει τη
δυνατότητα να κάνει διαδοχικές αναζητήσεις, εστιάζοντας πε-
ρισσότερο κάθε φορά στο στόχο του. Με την επιλογή της άρ-
σης φίλτρων ακυρώνονται όλες οι αναζητήσεις και φορτώνε-
ται στον SWT πίνακα το σύνολο των εγγραφών του πίνακα
kleidi που υπάρχουν εκείνη τη στιγμή στη βάση δεδομένων.
Η σύνδεση με τη βάση διαρκεί όσο και η εκτέλεση της
εφαρμογής. Για τη λήψη και την αποστολή δεδομένων από
και προς τη βάση δεδομένων στον κώδικα χρησιμοποιούνται
Linux Labs - Java
Το περιβάλλον εργασίας της εφαρμογής Κλειδοθήκη.
1