comparison client/doc/dokumentation_digilib.txt @ 20:d407cb901df4

Initial revision
author robcast
date Thu, 17 Jan 2002 15:29:55 +0100
parents
children
comparison
equal deleted inserted replaced
1:0ff3ede32060 20:d407cb901df4
1 DIGITAL DOCUMENT LIBRARY
2 ------------------------
3
4 Stand : 21. Januar 2001
5
6
7 Leitung : Gerd Grasshoff (gerd.grasshoff@philo.unibe.ch)
8
9 Autor : Christian Luginbühl (luginbuehl@student.unibe.ch)
10
11
12
13 Inhalt
14 ------
15
16 1. Einführung
17
18 2. digilib3.jsp
19
20 3. navigation3XXX.js
21
22 4. ScaleServlet.java
23
24
25
26 1. Einführung
27 -------------
28
29 Das Projekt Digital Document Library hat zum Ziel, "Dokumente" mit Hilfe eines
30 Browsers anschauen zu können. Diese Dokumente sind hochaufgelöste Bilddateien,
31 die auf einem Server gespeichert sind. Um der Benutzerin, dem Benutzer die
32 Möglichkeit einer raschen Konsultation der Daten liefern zu können, müssen diese
33 Bilddaten auf eine vernünftige Grösse verkleinert und in dieser Form dann an die
34 Anfragenden geschickt werden. Weiten sollen den Benutzenden Hilfsmittel zur
35 Verfügung stehen um in diesen Seiten zu navigieren. Diese Hilfsmittel bestehen
36 aus Funktionen um zwischen verschieden Seiten hin und her zu wechseln,
37 Ausschnitte aus einem Bild zu zoomen und der Möglichkeit Markierungen zu setzen.
38 Ein weiteres wichtiges Feature dieses Programms ist es, Referenzen ganz
39 bestimmter Seiten (inkl. Ausschnitte und Markierungen) auszugeben, die dann in
40 beliebigen anderen Dokumenten eingebaut werden können. Sofern die Lesenden
41 dieser Dokumente dann über einen Anschluss ins Internet verfügen, können diese
42 Referenzen direkt angeschaut werden und so die Digital Document Library als
43 grosse Quelltextsammlung gebraucht werden.
44
45 Das Programm nun ist ein Client/Server-Modell. Einerseits haben wir das User
46 -Interface (also den Client), wo die Darstellung und die Navigation aufgebaut
47 und berechnet werden. Dieser Teil des Programms umfasst im Prinzip zwei Dateien.
48 Mit der Frage des Layouts beschäftigt sich digilib3.jsp. Es ist die Datei, die
49 im Browser aufgerufen wird (mit den verschiedenen Parametern, die in Kapitel 2
50 erläutert werden) und die nötigen Aufrufe macht für die Skalierung der Bilddaten
51 und der entsprechenden Navigationselemente. Die zweite Datei des Clients ist
52 eine dynamisch ausgerufene JavaScript-Datei namens navigation3XXX.js, wobei die
53 XXX für die verschidenen Borwservarianten stehen. Da die Scriptsprache
54 JavaScript in den verschiedenen Browsern nicht ganz gleich implementiert ist,
55 ist es nötig diese Datei an die verschidenen Umgebungen anzupassen. Das Laden
56 dieser Dateien übernimmt digilib3.jsp, indem es erst abfragt, welchen Browser
57 von Client gebraucht wird und dann die entsprechende navigation-Datei vom Server
58 verlangt. Auf der Serverseite ist ein Programm namens ScaleServlet sehr wichtig.
59 Dieses Servlet handelt die Anfragen der Clients und macht die verschiedenen
60 Skalierungen an dem Bildern und schickt, dann den entsprechenden Ausschnitt an
61 den Client.
62
63 In den nächsten Kapitel sind die einzelnen Files mit ihren verschidenen
64 Parametern der Aufrufe erläutert.
65
66
67 2. digilib3.jsp
68 ---------------
69
70 Bei einem Request von digilib3.jsp werden auf der Serverseite die verschiedenen
71 Parameter des Aufrufs in die zurückgesendete Datei eingefüllt und dann vor allem
72 für den von 'digilib' ausgehenden Aufruf des ScaleServlets verwendet. Die
73 verschiedenen Parameter beim Request sind durch Pluszeichen voneinander
74 getrennt. Beispiel:
75
76 http://pene ... /digilib3.jsp?histast/eastwood-collection/AF+3+s1.2+r:3852+12/30
77 ------------------------------ - ---- ------ -----
78 Parameter 1 2 3 4 5
79
80 Die verschiedenen Parameter werden in digilib3.jsp in ein Array mit 11 Elementen
81 (1 - 11) aufgenommen. Folgend ist nun eine Auflistung aller Parameter und ihrer
82 Bedeutung. Es ist absolut zwingend, dass diese in der richtigen Reihenfolge
83 aufgerufen werden.
84
85 - att[1] = '<%= docuurl %>'
86
87 Dieser Parameter gibt den Pfad ohne Hostnamen zum Verzeichnis mit dem
88 gewünschten Werk an. Wichtig zu verstehen ist, dass hier nicht ein bestimmtes
89 Bild angesprochen wird, sondern nur ein Verzeichnis.
90
91 - att[2] = '<%= startPage %>'
92
93 Dies ist die Nummer des Bildes im von Parameter 1 gewählten Verzeichnis. Falls
94 dieser Parameter leer ist, wird er automatisch auf '1' gesetzt.
95
96 - att[3] = '<%= scalefact %>'
97
98 Scalefact gibt den Vergrösserungsfaktor der Bildes an, im Vergleich zur in
99 ScaleServlet angegebenen Standardgrösse. Die Syntax diese Parameters ist 'sx.x',
100 wobei x.x für die Werte 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 2.0, 2.5 oder 3.0 stehen
101 kann. Standardwert ist 's1.0'.
102
103 (Anm: Serverseitig wird an diesem Teil noch gearbeitet, damit die Standardgrösse
104 auf verschidenen Bildschirmen auch verschieden gross ist)
105
106 - att[4] = '<%= commandostring %>'
107
108 Gebraucht wird dieser Parameter dafür, dass die Bilder nicht aus dem
109 Browsercache genommen werden, sondern auf dem Server dann neu berechnet werden.
110 Bei einem "Zoom Out" wird hier eine Zufallszahl generiert. Die Syntax ist
111 'r:xxxx', wobei x irgend eine höchstens vierstellige Zahl. Standardwert ist r:1.
112
113 - att[5] = '<%= remarkcoord %>'
114
115 In diesem Parameter werden die Koordinaten der Markierungspunkte festgehalten.
116 Syntax ist 'xxx/yyy;zzz/ttt; ... aaa/bbb'. Die Koordinatenpaare um "/" geben an,
117 wo eine Markierung gesetzt werden soll, wobei Werte von 0 bis zur aktuellen
118 Bildgrösse erlaubt sind. Durch ";" werden die einzelnen Markierungen getrennt
119 (maximal 5 sind möglich). Standardwerte sind hier '' (leer) oder '0/0' (keine
120 Markierung wird gesetzt).
121
122 - att[6] = '<%= windowwidth %>' / att[7] = '<%= windowheight %>'
123
124 Windowwidth gibt an, wie breit/hoch das Bild auf dem Bildschirm ist. Standard
125 ist '' (leer).
126
127 - att[8] = '<%= xoffset %>' / att[9] = '<%= yoffset %>'
128
129 Diese Attribute haben zwei Bedeutungen. Falls att[10] und att[11] leer sind,
130 gibt xoffset bzw. yoffset an, um welchen Punkt im Bild gezoomt werden soll.
131 Falls att[10], att[11] nicht leer sind, geben sie die Koordinaten der linke
132 oberen Ecke des zu vergrössernden Bildausschnitts an. Standard ist hier ''
133 (leer).
134
135 - att[10] = '<%= width %>' / att[11] = '<%= height %>'
136
137 Falls diese Attribute verschieden von '' (leer) sind, geben sie die Breite/Höhe
138 des Bildaussschnittes an, der gezoom werden soll.
139
140
141 Die weiteren Funktionen von digilib3.jsp sind:
142
143 - Laden des navigation3XXX.js-Files für den entsprechenden Browser.
144 - Erstellen eines Framesets (kleiner Frame mit den Navigationsbuttons und
145 Frame mit dem Bild).
146 - Erstellen der Navigationsbuttons.
147 - Zusammenstellen der korrekten Parameterliste für den Aufruf von ScaleServlet.
148 - Erstellen der verschiedenen Layers mit dem Bild (Aufruf), den Markierungen und
149 den Zeichen für die Eckpunkte beim Vergrössern.
150 - Aufruf an navigation3XXX.js für Intialbefehle wie Setzen der Markierungspunkte.
151
152
153 3. navigation3XXX.js
154 --------------------
155
156 Navigation3XXX.js ist eine Sammlung von Funktionen zur Navigation in der Digital
157 Document Library. Die verschidenen Funktionen werden zum Beispiel durch klicken
158 auf einen in digilib3.jsp erstellten Navigationsknopf aufgerufen. Um
159 verschiedene Browser zu unterstützen (die Implementierung von Javascript und das
160 Document Object Model sind unterschiedlich), gibt es angepasste navigation3
161 -files, die von digilib3.jsp entsprechend des verwendeten Browsers geladen
162 werden. Momentan sind Versionen für Netscape Communicator 4.xx (navigation3.js)
163 und Netscape 6 (navigation3_n6.js) verfügbar. Bei der Programmierung des Clients
164 wurde darauf geschaut, dass digilib3.jsp für möglichst alle Browser das selbe
165 ist und somit nur navigation3XXX.js angepasst werden muss. Voraussetzung hierzu
166 ist, dass ein Brwoser mit Layern (<div>-Tags) umgehen kann. Nachstehend ist ganz
167 kurz erläutert, welche Funktionen in navigation3XXX.js welche Aufgaben erfüllen:
168
169 - genString(detail)
170
171 Anhand von 'detail' generiert diese Funktion die Parameterliste für einen Aufruf
172 eines neuen Bildes, eines Ausschnittes oder des Strings für eine
173 Referenzabfrage. 'detail' wird gebraucht, um die Anzahl der nötigen Parameter
174 für das Ausführen der aufrufenden Funktion zu bestimmen. Diese Funktion wird
175 immer indirekt, d.h. in anderen Funktionen von navigation3XXX.js aufgrufen und
176 liefert eine Stringrückgabe.
177
178 - Backpage(), Nextpage(), Page()
179
180 Diese Funktionen handeln die Navigation durch die Seiten eines Verzeichnisses.
181 Diese Funktionen werden mit einem Klick auf die Navigationsbuttons aufgerufen
182 und Laden eine neue Seite.
183
184 - Ref(refselect)
185
186 Hier wird ein PopUp-Fenster erzeugt, das die komplette URL der momentanen Seite
187 zurückgibt. Mit 'refselect' wird bestimmt, ob die Formatierung der Ausgabe in
188 HTML- oder LaTeX-Form sein soll. Diese Funktion wird mit dem "Ref"-Button
189 aufgerufen.
190
191 - Mark()
192
193 Diese Funktion plaziert eine Markierung auf dem Bild, wobei sie zuerst nur die
194 Maus-koordinaten bei einem Klick auf das Bild abfängt und dann die Funktion
195 'setmark()' aufruft. Es können bis zu fünf Markierungen auf ein Bild gesetzt
196 werden. Auch diese Funktion wird direkt über die Navbuttons aufgerufen.
197
198 - Zoomrect(), Zoomin(), Zoomout()
199
200 Direkt aufgerufene Funktionen die sich mit dem Zoomen innerhalb eines Bildes
201 beschäftigen. Die Rückgabe ist bei allen drei Funktionen ein Aufruf eines neuen
202 Bildes.
203
204 - Moveto()
205
206 Diese Funktion verändert das Zentrum bei einem schon gezoomten Bild. Die
207 geklickten Koordinaten entsprechen dann dem Zenrum des neuen Bildes bei gleicher
208 Vergrösserung. Dieses Feature wird in Zeichnungsprogrammen oft mit 'Pan'
209 betitelt. Direkter Aufruf und Aufruf des neuen Bildes sind gleich wie bei den
210 Zoom-Funktionen.
211
212 - Scaledef(scaledef)
213
214 Mit Scaledef wird die Bildgrösse im Vegleich zur in ScaleServlet.java
215 angegebenen Standardgrösse verändert. Der Parameter 'scaledef' gibt diesen
216 Faktor an. Eine Liste der möglichen Werte ist weiter oben angegeben. Auch hier
217 wird di Funktion direkt über die Auswahlliste im Navigationsframe aufgerufen und
218 auch hier wird ein neues Bild geladen.
219
220 - setmark()
221
222 Setmark wird indirekt von Mark() oder initScripts() aufgerufen und zeichnet sich
223 für die Positionierung der Markierungen verantwortlich. Die Funktion extrahiert
224 aus att[5] die einzelnen Koordinaten und setzt die Punkte. Wenn eine bestimmte
225 Reihenfolge bei den Punkten eingehalten werden soll, dann müssen sie auch immer
226 gleich in der Parameterliste aufgerufen werden. Die Funktion setmark gibt nichts
227 zurück.
228
229 - parseKeypress()
230
231 Diese Funktion dient dem Abfangen von Tastatureingaben, wobei die Tasten "n" für
232 nächste Seite und "b" für vordere Seite abgefragt werden. parseKeypress wird von
233 initScripts aufgerufen und hat keinen Rückgabewert.
234
235 - initScripts()
236
237 In dieser Funktion werden Vorkehrungen getroffen, die beim Anzeigen einer neuen
238 Seite getroffen werden müssen. Deshalb wird diese Funktion automatisch beim
239 Laden von digilib3.jsp aufgerufen. Insbesondere ruft diese Funktion
240 parseKeypress und setmark auf, wobei bei verschiedenen Browsertypen auch noch
241 andere Sachen hinzukommen (bei Netscape 6 wird zum Beispiel auch die
242 Clientgrösse berechnet und geschaut ob Scrollbalken gemacht werden müssen).
243
244
245 4. ScaleServlet.java
246 --------------------
247
248 Der Aufruf von ScaleServlet.java erfolgt grundsätzlich von digilib3.jsp und die
249 Parameterliste hat auch die selben Attribute (ausgenommen ist att[5] mit den
250 Koordinaten der Markierungspunkte. Bei Fragen über die einzelnen Bedeutungen der
251 Attribute sie hier also auf Kapitel 2 verwiesen. An dieser Stelle sei aber noch
252 etwas gesagt, über die Zusammensetzung der Parameterliste. ScaleServlet.java
253 kennt drei verschiden lange Parameterlisten, mit denen es arbeiten kann, wobei
254 die korrekte Zusammenstellung der Parameterliste in digilib3.jsp erfolgt.
255
256 - Kurz (att[1] - att[4])
257
258 Diese vier Parameter geben dem ScaleServlet die Aufgabe, ein Bild (bestimmt mit
259 att[1] und att[2]) auf die Standardgrösse zu skalieren und an den Client zu
260 senden. Att[3] gibt zusätzlich den Skalierungsfaktor an und att[4] verhindert
261 mit einer Zufallszahl, dass das Bild aus dem Browsercache geholt wird.
262
263 - Mittel (att[1] - att[4] + att[6] - att[9])
264
265 Diese Möglichkeit des Aufrufs wird gebraucht, um bezüglich des in att[8] und
266 att[9] bestimmten Mittelpunktes einen Ausschnitt zu vergrossen. Um den genannten
267 Punkt einzuordnen, wird die grösse des momentan angezeigten Bildes mit den
268 Parametern 6 und 7 mitgegeben.
269
270 - Lang (att[1] - att[4] + att[6]- att[11])
271
272 Ein Aufruf in dieser Form gibt dem Servlet an, einen Ausschnitt aus einem Bild
273 zu vergrössern und zurückzusenden. Folgt ein Aufruf in dieser Form, bekommen die
274 Parameter att[8] und att[9] die Werte der linken oberen Ecke und att[10]/[11]
275 die Breite/Höhe des Ausschnitts.
276
277
278 Aufgrund eines eingebauten Session-Managements im Servlet ist es möglich mit
279 digilib auch mehrfach in ein Bild hinein zu zoomen.
280
281 (Anm: Auch wenn dieses Session-Management seinen Zweck beim Anschauen der Bilder
282 sehr gut erfüllt, ist es dem ScaleServlet nicht möglich den Referenz-URLs
283 anzusehen, ob zuerst mehrfach hineingezoomt wurde und gibt unter Umständen
284 - eben wenn mehrfach hieingezoomt wurde vor der Generierung der Referenz - einen
285 falschen Ausschnitt zurück.)
286
287
288 ----------------------------------------------