Update the gwt-test-utils version.
[online-glom:gwt-glom.git] / ChangeLog
1 2012-11-20  Murray Cumming  <murrayc@murrayc.com>
2
3         Update the gwt-test-utils version.
4
5         * pom.xml: gwt-test-utils 0.43 uses GWT 2.5.0, not GWT 2.4.0.
6         Using both in the same project was causing gwt-log to fail in GWTBrige,
7         with this error:
8         testOutOfBounds(org.glom.web.server.libglom.DocumentLayoutPathTest):
9         (class: com/google/gwt/core/client/GWT, method: setBridge signature: (Lcom/google/gwt/core/client/GWTBridge;)V) Incompatible argument to function
10
11 2012-11-19  Murray Cumming  <murrayc@murrayc.com>
12
13         DocumentTest: testLocales(): Update for the latest example version.
14
15         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
16         The .glom file, updated in the previous commit, now has more translations.
17
18 2012-11-19  Murray Cumming  <murrayc@murrayc.com>
19
20         Update the .glom files used for tests.
21
22         * src/test/resources/org/glom/web/server/example_film_manager.glom:
23         * src/test/resources/org/glom/web/server/example_music_collection.glom:
24         * src/test/resources/org/glom/web/server/libglom/example_film_manager.glom:
25         * src/test/resources/org/glom/web/server/libglom/example_music_collection.glom:
26         Copy them from git master of Glom.
27
28 2012-11-18  Murray Cumming  <murrayc@murrayc.com>
29
30         Update versions of dependencies.
31
32         * pom.xml: Increase some version numbers based on the output of
33         , using mvn versions:display-dependency-updates.
34         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
35         Use the annotation instead of getModuleName().
36         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
37         Do not use deprecated assert() classes/methods.
38
39 2012-11-18  Murray Cumming  <murrayc@murrayc.com>
40
41         Document: Correct an import to use the correct Log API.
42
43         * src/main/java/org/glom/web/server/libglom/Document.java:
44         Use our Utils.Log API rather than the jfree one that Eclipse
45         must have suggested at some time.
46
47 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
48
49         Details: Get static image data from our images services.
50
51         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
52         Add constructors for LayoutItemText and LayoutItemImage and
53         deal with their common type instead of just LayoutItemField.
54         setData():
55         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
56         Adapted.
57         * src/main/java/org/glom/web/client/ui/details/Group.java:
58         createChildWidget(): Use the other DetailsCell constructors for
59         these layout items, and do not add them to the list of
60         cells with data from the database.
61         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
62         getValidListViewLayoutGroup(), getDetailsLayoutGroup():
63         Remove the image data when cloning the layout and storing it in the
64         cache. Clients will instead get it via the URL, from
65         our images service.
66         * src/main/java/org/glom/web/server/OnlineGlomImages.java:
67         doGet(): Depending on the URI parameters, optionally get 
68         image data from a layout_item_image in the document,
69         via its layout path.
70         * src/main/java/org/glom/web/server/database/DBAccess.java:
71         convertResultSetToDTO(): Move some URIBuilder code to:
72         * src/main/java/org/glom/web/server/Utils.java:
73         Add buildImageDataUrl() taking the primary key, etc, to
74         get data from the database.
75
76 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
77
78         Document: Static image items: Store an image URL, using the layout path. 
79
80         * src/main/java/org/glom/web/server/Utils.java: Add buildImageDataUrl().
81         * src/main/java/org/glom/web/server/libglom/Document.java:
82         Add a constructor that takes the documentID, for use in the 
83         LayoutItemImage URL.
84         loadLayoutNode(): Pass a Path object to the helper methods, so we 
85         can use it to create a URL for LayoutItemImage items.
86         This seems as good a way as any to specify a layout item in the document.
87         * src/main/java/org/glom/web/server/ConfiguredDocumentSet.java:
88         Pass the documentID to the constructor, for use in the LayoutItemImage
89         URL.
90
91 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
92
93         Document: Add getLayoutItemByPath().
94
95         * src/main/java/org/glom/web/server/Utils.java:
96         Add buildLayoutPath() and parseLayoutPath().
97         * src/test/java/org/glom/web/server/LayoutPathTest.java: Test that these 
98         utility methods work.
99         * src/main/java/org/glom/web/server/libglom/Document.java:
100         Add Add getLayoutItemByPath().
101         * src/test/java/org/glom/web/server/libglom/DocumentLayoutPathTest.java: Test 
102         that it works.
103
104         This will be useful in subsequent commits.
105
106 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
107
108         Need a short description (OOPS!).
109         Need the bug URL (OOPS!).
110
111         Reviewed by NOBODY (OOPS!).
112
113         Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
114
115         * .classpath:
116         * .settings/com.google.gdt.eclipse.core.prefs:
117         * .settings/com.google.gwt.eclipse.core.prefs:
118         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
119         (DetailsActivity.createLayout):
120         (DetailsActivity.setData):
121         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
122         (DetailsCell):
123         (DetailsCell.DetailsCell):
124         (DetailsCell.setupWidgets):
125         (DetailsCell.setData):
126         (DetailsCell.getLayoutItem):
127         * src/main/java/org/glom/web/client/ui/details/Group.java:
128         (Group.createChildWidget):
129         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
130         (ConfiguredDocument.getValidListViewLayoutGroup):
131         (ConfiguredDocument.getDetailsLayoutGroup):
132         (ConfiguredDocument):
133         (ConfiguredDocument.updateLayoutItemImages):
134         * src/main/java/org/glom/web/server/ConfiguredDocumentSet.java:
135         (ConfiguredDocumentSet.getDocumentIdForFilename):
136         (ConfiguredDocumentSet):
137         (ConfiguredDocumentSet.addDocument):
138         (ConfiguredDocumentSet.readConfiguration):
139         * src/main/java/org/glom/web/server/OnlineGlomImages.java:
140         (OnlineGlomImages.OnlineGlomImages):
141         (OnlineGlomImages.doGet):
142         (OnlineGlomImages):
143         (OnlineGlomImages.getImageFromDocument):
144         (OnlineGlomImages.getImageFromDatabase):
145         * src/main/java/org/glom/web/server/Utils.java:
146         (Utils):
147         (Utils.buildImageDataUrl):
148         (Utils.buildImageDataUrlStart):
149         (Utils.buildLayoutPath):
150         (Utils.parseLayoutPath):
151         * src/main/java/org/glom/web/server/database/DBAccess.java:
152         (DBAccess.convertResultSetToDTO):
153         * src/main/java/org/glom/web/server/libglom/Document.java:
154         (Document):
155         (Document.Path):
156         (Document.Document):
157         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
158         (DocumentTest.TestThread.run):
159
160 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
161
162         Document: Use a better base64 decoder to read static image data.
163
164         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
165         getNodeTextChildAsValue(): Use the apache commons base64 decoder
166         instead of the gwt one, because it correctly decodes the strings
167         from g_base64_encode(). It is probably more correct.
168         The newlines might be confusing the gwt decoder.
169
170 2012-11-14  Murray Cumming  <murrayc@murrayc.com>
171
172         Document: Do not use == to compare strings. Use equals().
173
174         * src/main/java/org/glom/web/server/libglom/Document.java:
175         == only checks that they are the same object, so it can 
176         seem to fail.
177
178 2012-11-14  Murray Cumming  <murrayc@murrayc.com>
179
180         Document: Add and use public constants for layout names.
181
182         * src/main/java/org/glom/web/server/libglom/Document.java:
183         Make LAYOUT_NAME_DETAILS and LAYOUT_NAME_LIST public.
184         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
185         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
186         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
187         * src/test/java/org/glom/web/server/libglom/DocumentTest.java: Use 
188         them here instead of hard-coded the strings repeatedly.
189
190 2012-11-13  Murray Cumming  <murrayc@murrayc.com>
191
192         Document: Load static text and image items too.
193
194         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemImage.java:
195         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemText.java:
196         New LayoutItem classes to represent these layout items.
197         * src/main/java/org/glom/web/shared/libglom/layout/StaticText.java: The 
198         main text of a LayoutItemText.
199         * src/main/java/org/glom/web/server/libglom/Document.java:
200         load_after_layout_group(): Handle the node types and instantiate the 
201         new classes.
202         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
203         Add testLayoutItemText() to check that the text is loaded properly.
204
205 2012-11-13  Murray Cumming  <murrayc@murrayc.com>
206
207         Do not use client.GWT for shared code.
208
209         * src/main/java/org/glom/web/shared/libglom/layout/Formatting.java:
210         Import shared.GWT instead of client.GWT, which seems to be appropriate.
211
212 2012-11-12  Murray Cumming  <murrayc@murrayc.com>
213
214         Use image data when recreating databases for testing.
215
216         * src/main/java/org/glom/web/shared/DataItem.java: Add get/setImageData(),
217         for use locally (not acrosss the network) when recreating databases
218         for testing.
219         getValue(): Use it here instead of getImageDataUrl(), noting that 
220         this method is only for use when recreating databases.
221         * src/main/java/org/glom/web/server/libglom/Document.java:
222         getNodeTextChildAsValue(): Use it instead of setImageDataUrl().
223
224 2012-11-09  Murray Cumming  <murrayc@murrayc.com>
225
226         OnlineGlomImages: Detect the mime-type (content type).
227
228         * src/main/java/org/glom/web/server/OnlineGlomImages.java:
229         doGet(): Instead of hard-coding image/png.
230
231 2012-11-09  Murray Cumming  <murrayc@murrayc.com>
232
233         Eclipse project files: Use JDK 1.7 instead of JDK 1.6.
234
235         * .classpath:
236         * .settings/org.eclipse.jdt.core.prefs: By changing the Eclipse
237         Java Compiler and Java Build path settings in the UI.
238
239 2012-11-09  Murray Cumming  <murrayc@murrayc.com>
240
241         Use the latest (now stable) version of GWT.
242
243         * pom.xml: And the latest version of the gwt-maven-plugin.
244
245 2012-11-08  Murray Cumming  <murrayc@murrayc.com>
246
247         Added an Indonesian translation.
248
249         * src/main/java/org/glom/web/OnlineGlom.gwt.xml:
250         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_id.properties:
251         This is from the new translation in Glom.
252
253 2012-07-23  Murray Cumming  <murrayc@murrayc.com>
254
255         Details: Show images.
256
257         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
258         Move some code into
259         * src/main/java/org/glom/web/server/ConfiguredDocumentSet.java:
260         so it can be used in:
261         * src/main/java/org/glom/web/server/OnlineGlomImages.java: A new servlet just
262         for serving image data.
263         * src/main/webapp/WEB-INF/web.xml: Mention the new servlet.
264
265         * src/main/java/org/glom/web/shared/DataItem.java: Added get/setImageDataUrl().
266         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
267         setData(): For image field types, add a GWT Image widget, 
268         with the URL that was set in the DataItem.
269
270         * pom.xml: Depend on org.apache.httpcomponents for UriBuilder.
271         * src/main/java/org/glom/web/server/database/DBAccess.java:
272         convertResultSetToDTO(): Set the URL for image data, so the client browser
273         can retrieve the image from our new servlet. This uses UriBuilder.
274         Move getPrimaryKeyField to:
275         * src/main/java/org/glom/web/server/libglom/Document.java:
276         Added getTablePrimaryKeyField().
277
278         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
279         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
280         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
281         Adapted.
282
283 2012-07-22  Murray Cumming  <murrayc@murrayc.com>
284
285         Rename the servlet.
286
287         * src/main/java/org/glom/web/OnlineGlom.gwt.xml:
288         * src/main/java/org/glom/web/client/OnlineGlomService.java:
289         * src/main/webapp/WEB-INF/web.xml: Change the servlet-name from libGlom
290         to gwtGlom, which is more appropriate.
291         This servlet name does not seem to be visible to the client side anyway.
292
293 2012-07-22  Murray Cumming  <murrayc@murrayc.com>
294
295         Tests: Make the imports of assert*() consistent.
296
297         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
298         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
299         * src/test/java/org/glom/web/client/place/ListPlaceTest.java:
300         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
301         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
302         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
303         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
304         * src/test/java/org/glom/web/server/libglom/LayoutItemFieldTest.java:
305         * src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
306         * src/test/java/org/glom/web/shared/DataItemTest.java:
307         Just do
308         import static org.junit.Assert.*;
309         which seems fairly common.
310
311 1.21.10 (unstable):
312
313 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
314
315         tests: Move a test that needs a database connection.
316
317         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
318         Move testGetListViewLayoutGroup() to
319         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
320         because it needs a database connection.
321
322 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
323
324         tests: Use @BeforeClass on tearDown().
325
326         * src/test/java/org/glom/web/server/OnlineGlomPropertiesTest.java:
327         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
328         This avoids leaking a postgres process in SelfHostExampleTest.
329
330 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
331
332         tests: Test translations more.
333
334         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
335         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
336         Test titles in the non-default locale.
337
338 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
339
340         tests: Add SelfHostConfiguredDocumentTest
341  
342         * src/test/java/org/glom/web/server/SelfHoster.java: Add getters for the 
343         username and password, for use by ConfiguredDocument.
344         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java: 
345         This tests some of the ConfiguredDocument API that requires a database connection.
346
347 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
348
349         Document: Load title translations and test them.
350
351         * src/main/java/org/glom/web/server/libglom/Document.java: Load the translations
352         of titles. I am surprised that we do not do this yet.
353         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
354         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
355         Test translations more.
356
357 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
358
359         Set JDBC timeouts.
360
361         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
362         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
363         Set the timeout here too.
364
365 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
366
367         tests: ConfiguredDocumentTest: Make this pass.
368
369         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
370         Disable tests that need a database connection.
371
372 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
373
374         Use Java 1.7 instead of Java 1.6.
375
376         * pom.xml: Specify the 1.7 JDK, though I don't like how we seem to need
377         to do this twice, at least for Eclipse.
378         This seems OK because it is the current version.
379
380 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
381
382         Some error checking.
383
384         * src/main/java/org/glom/web/server/Log.java: Avoid using null strings.
385         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
386         Avoid using a null Connection.
387
388 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
389
390         tests: Add a ConfiguredDocument test.
391
392         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
393         Add this test.
394
395 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
396
397         LayoutItemFIeld: getName(): Use the Field if it is set.
398
399         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
400         getName(): If the full field details have been set, return its name, so that
401         callers do not need to set the name separately.
402         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
403         testExampleMusiccollectionData): Do not use a TYPE_FORWARD_ONLY statement,
404         so we can count the rows.
405
406 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
407
408         tests: SelfHoster: Test SqlUtils too.
409
410         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
411         Retrieve some data and check it too, as in the regular Glom
412         test_selfhosting_new_from_example.cc test.
413         * src/test/java/org/glom/web/server/SelfHoster.java:
414         createConnection(): Make this public.
415
416 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
417
418         tests: SelfHoster: createConnection(): Do not warn about expected failures.
419         
420         Let the caller say if the connection is expected to fail, to avoid 
421         irrelevant error output.
422
423 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
424
425         tests: SelfHoster: createAndSelfHostNewEmpty(): Sleep after starting server.
426         
427         * src/test/java/org/glom/web/server/SelfHoster.java:
428         createAndSelfHostNewEmpty(): Sleep initially, to avoid distracting errors
429         due to the inevitable need to retry the connection while the database server
430         starts.
431
432 2012-07-20  Murray Cumming  <murrayc@murray.com>
433
434         tests: SelfHoster: createConnection(): Set a timeout.
435
436         * src/test/java/org/glom/web/server/SelfHoster.java:
437         createConnection(): Use setLoginTimeout() because it otherwise seems to take
438         ages to actually return when it fails.
439
440 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
441
442         tests: SelfHoster: selfHost(): Close the test connection.
443
444         * src/test/java/org/glom/web/server/SelfHoster.java: selfHost():
445         When we check that the connection works, close the connection. This seems
446         to not be closed automatically otherwise.
447
448 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
449
450         Use slf4j-simple to see JDBC errors.
451
452         * pom.xml: Depend on slf4j-simple so we can see errors from JDBC.
453
454 2012-07-19  Murray Cumming  <murrayc@murrayc.com>
455
456         SelfHoster.discoverFirstFreePort(): Close the socket.
457
458         * src/test/java/org/glom/web/server/SelfHoster.java:
459         discoverFirstFreePort(): Close the socket. Eclipse Juno warns about this.
460
461 2012-07-19  Murray Cumming  <murrayc@murrayc.com>
462
463         Avoid another code warning in Eclipse Juno.
464
465         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
466         Do instanceof checks on the FileUtils.listFiles() result and its 
467         items.
468
469 2012-07-13  Murray Cumming  <murrayc@murrayc.com>
470
471         Avoid some code warnings in Eclipse Juno
472
473         * src/main/java/org/glom/web/server/libglom/Document.java:
474         getNodeTextChildAsValue(), setNodeTextChildAsValue(): Handle the invalid type.
475         * src/test/java/org/glom/web/server/SelfHoster.java
476         createTextFile(): Make sure that the FileOutputStream is closed.
477
478 2012-06-22  Murray Cumming  <murrayc@murrayc.com>
479
480         Added OnlineGlomPropertiesTest.
481
482         * src/main/java/org/glom/web/server/OnlineGlomProperties.java:
483         Make sure we never return a null string.
484         * src/test/java/org/glom/web/server/OnlineGlomPropertiesTest.java:
485         Added tests of the OnlineGlomProperties API, using our sample file.
486
487 2012-06-20  Murray Cumming  <murrayc@murrayc.com>
488
489         Make OnlineGlomProperties be a normal class.
490
491         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
492         Move OnlineGlomProperties into its own file to be a regular class:
493         * src/main/java/org/glom/web/server/OnlineGlomProperties.java:
494         This makes testing simpler.
495
496 2012-06-15  Murray Cumming  <murrayc@murrayc.com>
497
498         OnlineGlomServiceImpl.init(): Move some code into a new method.
499
500         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
501         Create addDocument().
502
503 2012-06-15  Murray Cumming  <murrayc@murrayc.com>
504
505         OnlineGlomServiceImpl.OnlineGlomProperties: Improve getKey().
506
507         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
508         OnlineGlomProperties.getKey(): Make this more robust by moving the
509         check for *.*.filename to here.
510
511 2012-06-15  Murray Cumming  <murrayc@murrayc.com>
512
513         OnlineGlomServiceImpl: Improve the OnlineGlomProperties class.
514
515         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
516         init(): Move knowledge of the config file format into the 
517         OnlineGlomProperties inner class.
518
519 2012-06-15  Murray Cumming  <murrayc@murrayc.com>
520
521         SelfHostExampleTest: Make sure we cleanup on failure.
522
523         * src/test/java/org/glom/web/server/SelfHostExampleTest.java: Move
524         the use of cleanup() to a tearDown() JUnit method.
525
526 1.21.9.3:
527
528 2012-06-12  Murray Cumming  <murrayc@murrayc.com>
529
530         ConfiguredDocument: Add a primary key to portals at least once.
531
532         * src/main/java/org/glom/web/server/ConfiguredDocument.java
533         updatePortalsExtras): Fix a typo so that we add the primary key
534         column at least once.
535         This is a fix for the previous commit:
536         ConfiguredDocument: Do not add a primary key to portals each time.
537
538 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
539
540         SelfHoster: Avoid some compiler warnings.
541
542         * src/test/java/org/glom/web/server/SelfHoster.java
543         executeCommandLineAndWait():
544         executeCommandLineAndWaitUntilSecondCommandReturnsSuccess(): Comment out
545         the now-unused streams for stdout and stderr from the command Processes.
546         These are not used because readln() hangs while waiting for a new line,
547         where there may be no next line. The commented out code is still there
548         to help us figure out how to do this properly.
549
550 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
551
552         LayoutItemPortalDeepCloneTest: Test something to avoid warnings.
553
554         * src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
555         Make this actually test the cloning again, though it is not very useful
556         now that we do not use the part that had a problem with cloning before.
557
558 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
559
560         SelfHoster: Keep trying pg_ctl after starting postgres.
561
562         * src/test/java/org/glom/web/server/SelfHoster.java
563         executeCommandLineAndWaitUntilSecondCommandReturnsSuccess():
564         Try pg_ctl repeatedly (for ever) until it succeeds, as we do in 
565         regular Glom. This seems mad but it seems to work because the first
566         command would fail if pg_ctl would eventually fail.
567
568 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
569
570         SelfHoster: Wait until the server is really ready.
571
572         * src/test/java/org/glom/web/server/SelfHoster.java
573         selfHost(): Attempt the connection after starting the server, retrying 
574         a few times if necessary, so that the server is really ready already when
575         we return from this method.
576         The regular Glom code does this too because pg_ctl reports success too soon.
577
578 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
579
580         ConfiguredDocument: Do not add a primary key to portals each time.
581
582         * src/main/java/org/glom/web/server/ConfiguredDocument.java
583         updatePortalsExtras(): Only add an extra primary key field if there is 
584         none, to avoid adding one each time we retrieve the details layout from the
585         layouts cache.
586         This should fix bug #676986 (Ben Konrath) 
587
588 2012-05-25  Murray Cumming  <murrayc@murrayc.com>
589
590         Document.load(): Support version 7 documents. 
591
592         * src/main/java/org/glom/web/server/libglom/Document.java: Load the 
593         database_title attribute if the title attribute is not there.
594         Bug #676737
595
596 2012-05-24  Ben Konrath  <ben@bagu.org>
597
598         Add configuration for auto-generating mvn:i18n from with Eclipse.
599
600         * pom.xml: Add PluginExecution configuration for gwt-maven-plugin.
601
602 2012-05-24  Murray Cumming  <murrayc@murrayc.com>
603
604         Update translations, adding French.
605
606         * src/main/java/org/glom/web/OnlineGlom.gwt.xml:
607         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_fr.properties:
608         Add a French translation, using the translation from Glom.
609
610         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
611         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
612         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
613         Update these based on the translations from Glom.
614
615 2012-05-24  Murray Cumming  <murrayc@murrayc.com>
616
617         SelfHoster: Add some debug println messages to help when things fail.
618
619         * src/test/java/org/glom/web/server/SelfHoster.java: Add several
620         System.out.println() lines.
621
622 2012-05-23  Murray Cumming  <murrayc@murrayc.com>
623
624         Tests: SelfHoster: Check other paths for PostgreSQL command-line tools.
625
626         * src/test/java/org/glom/web/server/SelfHoster.java:
627         getPathToPostgresExecutable(): Try some common paths (as on Ubuntu, for 
628         instance) instead of just /usr/bin (as on Fedora). Check the result when 
629         using this method.
630
631 2012-05-23  Murray Cumming  <murrayc@murrayc.com>
632
633         Remove LayoutItemPortal.get/setNavigationTable().
634         
635         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
636         Remove get/setNavigationTable(), which is only a cache, because it is not
637         used, and does not need to be used, because that decision should be made on
638         the server.
639         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
640         updatePortalsExtras():
641         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
642         getNavigationRecord():
643         * src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
644         Adapted.
645
646 2012-05-21  Murray Cumming  <murrayc@murrayc.com>
647
648         Initial self-hosting for tests.
649
650         * pom.xml: Change the scope for log4j, to hopefully make it 
651         available to the test code which uses it indirectly via jOOQ.
652         * src/main/java/org/glom/web/server/ConfiguredDocument.java: Allow
653         self-hosting, though we only use it for testing.
654
655         * src/main/java/org/glom/web/server/libglom/Document.java:
656         example rows: Use a map instead of a list for each row of values,
657         so we know what field they are for, instead of relying on the sequence
658         being correct. This is not very efficient, but it does not really need 
659         to be.
660         * src/test/java/org/glom/web/server/libglom/DocumentTest.java
661         testReadTableExampleRows(): Adapted.
662
663         * src/main/java/org/glom/web/shared/DataItem.java: Added getValue()
664         that returns an Object, for generic use. Note that Object seems to be 
665         the implicit base even of double.
666         * src/main/java/org/glom/web/shared/libglom/Field.java: Add getSqlType(),
667         for use in CREATE TABLE SQL queries.
668         * src/test/java/org/glom/web/server/SelfHoster.java: Add this class 
669         to do self-hosting of PostgreSQL databases via its command-line 
670         utilities, based on Glom's C++ code in test_selfhosting_utils.cc and
671         backends/postgres_self.cc. This is incomplete - it needs more 
672         warnings about failures and it needs to clean up properly when things
673         fail.
674         * src/test/java/org/glom/web/server/SelfHostExampleTest.java: A simple 
675         test of this new class.
676
677 2012-05-21  Murray Cumming  <murrayc@murrayc.com>
678
679         Document: loading example data: Handle exceptions.
680
681         * src/main/java/org/glom/web/server/libglom/Document.java:
682         DateFormat.parse() and Double.valueOf() can throw exceptions, though
683         Eclipse did not warn about that.
684
685 2012-05-20  Murray Cumming  <murrayc@murrayc.com>
686
687         Document: load(), save(): Handle the example rows.
688
689         * src/main/java/org/glom/web/shared/DataItem.java: Add get/setDate() 
690         and get/setImage().
691         * src/main/java/org/glom/web/server/libglom/Document.java:
692         load(), save(): Load and save the example rows, though the date, time
693         and image types are not handled properly yet.
694         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
695         Add testReadTableExampleRows() just to check that something is read.
696
697 2012-05-20  Murray Cumming  <murrayc@murrayc.com>
698
699         Document: Add save().
700
701         * src/main/java/org/glom/web/shared/libglom/Translatable.java:
702         Added getTranslationsMap() for use while saving.
703         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
704         Adedd getUseDefaultFormatting() for use while saving.
705         * src/main/java/org/glom/web/server/libglom/Document.java: Added save()
706         and several private methods that it uses.
707
708         This will be useful while testing via self-hosting.
709         It is not complete, but should be complete enough for testing.
710
711 2012-05-17  Murray Cumming  <murrayc@murrayc.com>
712
713         OnlineGlomService: Simplify the getList/RelatedViewData() methods.
714
715         * src/main/java/org/glom/web/client/OnlineGlomService.java
716         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java
717         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
718         Remove getSortedListViewData() and getSortedRelatedListData(), adding
719         the sort column index and ascending bool to the regular method.
720         Instead, a sort column index of -1 now means no sort.
721         This is less explicit, but it's fairly simple, reduces the amount of 
722         code, and makes the OnlineGlomService API slightly smaller.
723         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
724         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
725         getDataProvider():
726         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
727         getListViewData(), getRelatedListData():
728         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
729         getListViewData(), getRelatedListData():
730         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
731         getListData():
732         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
733         getData():
734         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
735         getData(): Adapted.
736
737 1.21.9.2:
738
739 2012-05-16  Murray Cumming  <murrayc@murrayc.com>
740
741         Use translations for top-level groups too.
742
743         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
744         updateTitlesForLocale(): Use the translation for the group 
745         as well as for child items.
746
747 1.21.9.1:
748
749 Just recompiled to fix a problem in the released .tar.gz file.
750
751 1.21.9:
752
753 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
754
755         Corrections to navigation to related records.
756         
757         * src/main/java/org/glom/web/client/OnlineGlomService.java:
758         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
759         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
760         getRelatedListData(), getSortedRelatedListData)(), getRelatedListRowCount(),
761         getSuitableRecordToViewDetails(): Take a LayoutItemPortal instead of a 
762         relationship name, because the relationship name is not necessarily unique 
763         on the layout.
764         TOOD: This is inefficient, because it passes the whole list of 
765         child field items back to the server, but it is more correct, and happens
766         to fix a bug with the primary key being lost after a few navigations.
767         There is probably a chance to make this more efficient anyway in some 
768         more basic way.
769         
770         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
771         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.jav
772         * src/main/java/org/glom/web/server/ConfiguredDocument.java
773         * src/main/java/org/glom/web/server/database/DBAccess.java
774         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
775         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
776         Adapted.
777
778 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
779
780         Fix the use of translations.
781
782         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
783         Add updateTitlesForLocale().
784         getValidListViewLayoutGroup(), getDetailsLayoutGroup():
785         Call it to discard unwanted translations and to make getTitle() return
786         the wanted translation wihout the need for the client code to specify a locale.
787         * src/main/java/org/glom/web/shared/libglom/Translatable.java:
788         getTitle(): Fallback to the original title, as libglom does.
789
790 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
791
792         Document: Correctly report the number of available translation locales.
793
794         * src/main/java/org/glom/web/server/libglom/Document.java: Fill
795         the available locale IDs list.
796         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
797         testLocales: Test this.
798
799 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
800
801         SqlUtils: Use camelCase.
802
803         * src/main/java/org/glom/web/server/SqlUtils.java: Use camelCase.
804         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
805         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
806         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
807         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
808         * src/main/java/org/glom/web/server/ReportGenerator.java: Adapt.
809
810 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
811
812         Use jOOQ's tableByName() and fieldByName.
813
814         * pom.xml: Use jOOQ 2.3.1 to get the new API.
815         * src/main/java/org/glom/web/server/SqlUtils.java:
816         build_sql_select_step_with_where_clause(), .createField(),
817         builder_add_join(): Use Factory.tableByName() and Factory.fieldByName()
818         so we can get correct quoting and escaping. Thanks to Lukas Eder for 
819         adding this, and other things, to jOOQ.
820
821 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
822
823         SqlUtils: Remove the Connection parameters.
824
825         * src/main/java/org/glom/web/server/SqlUtils.java:
826         build_sql_select_with_key(), build_sql_select_with_where_clause(),
827         createSelect(), build_sql_select_step_with_where_clause(),
828         build_sql_count_select_with_where_clause(),
829         build_sql_select_count_rows(): Remove the Connection parameter because
830         jOOQ does not actually need a connectionwhen it is just used to build 
831         a SQL string:
832         https://groups.google.com/forum/#!topic/jooq-user/tIwobFOR2iM
833
834         * src/main/java/org/glom/web/server/ReportGenerator.java:
835         generateReport():
836         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
837         getData():
838         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
839         Constructor, getListData(), getResultSizeOfSQLQuery():
840         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
841         getSelectQuery(), getCountQuery():
842         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
843         getSelectQuery(), getCountQuery():
844         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
845         getNavigationRecord(): Adapted.
846
847 2012-05-14  Murray Cumming  <murrayc@murrayc.com>
848
849         Fix quick find.
850
851         * src/main/java/org/glom/web/server/SqlUtils.java:
852         get_find_where_clause_quick(): Use a comparison of 
853         lowercase values, instead of a simple equals. Regular Glom
854         uses the PostgreSQL ILIKE operator but jOOQ does not 
855         support that just yet, though it will soon.
856
857 2012-05-14  Murray Cumming  <murrayc@murrayc.com>
858
859         TableToViewDetails: Use a real serialization ID.
860
861         * src/main/java/org/glom/web/shared/libglom/layout/TableToViewDetails.java:
862         Though this does not fix the serialization problem.
863
864 2012-05-12  Murray Cumming  <murrayc@murrayc.com>
865
866         Added LayoutItemPortalDeepCloneTest.
867
868 2012-05-11  Murray Cumming  <murrayc@murrayc.com>
869
870         Make navigation work again.
871
872         * src/main/java/org/glom/web/server/libglom/Document.java:
873         Add getLayoutItemFieldShouldHaveNavigation().
874         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
875         Replace get/setAddNavigation() with the partly-existing 
876         get/setNavigationTableName(), with an empty string being no navigation,
877         because this is simpler. Use the new 
878         Document.getLayoutItemFieldShouldHaveNavigation() method to set this.
879         
880         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
881         Add updateFieldsExtras() and call setNavigationTableName in it.
882         getDetailsLayoutGroup(), 
883         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
884         createLayout(): Adapted.
885         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java
886         Constructor: Adapted.
887
888         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
889         Replace get/setAddNavigation() with get/setNavigation(), returning a
890         TableToViewDetails class with both the table name and UsesRelationship,
891         because both are need. The previous code used java-libglom's output 
892         variable (strangely, via sharedptr) to return both, but we cannot really
893         do that in Java.
894         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
895         getNavigationRecord(): Adapt. However, we cannot actually use the cache
896         here because it somehow gets set to null during deepCopy(). I must test this.
897         * src/test/java/org/glom/web/server/libglom/DocumentTest.java
898         testGetSuitableTableToViewDetails(): Adapted.
899         
900         TODO: Find out why deepClone() is not quite working.
901         
902 2012-05-11  Murray Cumming  <murrayc@murrayc.com>
903
904         DBAccess: Simplify the retrievel of full field details.
905
906         * src/main/java/org/glom/web/server/database/DBAccess.java
907         getFieldsToShowForSQLQueryAddGroup(). This might be unnecessary anyway,
908         because the Document loading should have done this.
909
910 2012-05-11  Murray Cumming  <murrayc@murrayc.com>
911
912         Document: Correct loading of doubly-related layout fields.
913
914         * src/main/java/org/glom/web/server/libglom/Document.java:
915         loadUsesRelationship(): Actually set the related relationship, instead
916         of only setting it if it's not found.
917
918 2012-05-09  Murray Cumming  <murrayc@murrayc.com>
919
920         Replace all appearances of Colour with color.
921
922         Because US English is dominant.
923
924 2012-05-09  Murray Cumming  <murrayc@murrayc.com>
925
926         Use colors in HTML format, solving a warning about an unused function.
927
928         * src/main/java/org/glom/web/shared/libglom/NumericFormat.java
929         * src/main/java/org/glom/web/shared/libglom/layout/Formatting.java:
930         Add *asHTMLColor() versions of methods.
931         TODO: However, we should create and cache the results on the server.
932         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java
933         * src/main/java/org/glom/web/client/ui/list/ListTable.java
934         * src/main/java/org/glom/web/server/ConfiguredDocument.java
935         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
936         Use the asHTMLcolor() versions.
937
938 2012-05-09  Murray Cumming  <murrayc@murrayc.com>
939
940         ListViewTable: Constructor: Take the table name as a parameter.
941
942         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
943         Constructor: Take the tableName, and set the member variable, because
944         we use it here.
945         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
946         setCellTable(): Pass the table name.
947         This makes navigation to non-default tables work again. I don't know 
948         why it worked before in the master branch.
949
950 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
951
952         ConfiguredDocument: Restore correct addition of hidden primary key items.
953
954         * src/main/java/org/glom/web/client/ui/list/ListTable.java
955         (ListTable.createCellTable): Uncomment out the check for the hidden
956         primary key.
957         * src/main/java/org/glom/web/server/ConfiguredDocument.java: Only
958         add primary key items for top-level lists and portals, as before, 
959         instead of adding them to each group.
960         * src/main/java/org/glom/web/shared/libglom/layout/LayoutGroup.java:
961         Actually implement the extra methods such as setHiddenPrimaryKey() and
962         comment that these are used only for top-level list groups and in portals.
963         This strangeness suggests even more that this should not be squeezed
964         into the LayoutGroup class.
965
966 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
967
968         Fix Formatting loading.
969
970         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
971         getFormattingUsed(): Remove the duplicate Formatting member variable
972         in favour of the one from the base class.
973         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemWithFormatting.java:
974         Initialize a new Formatting instead of using null by default, so we 
975         have some defaults, instead of having to initialize one later just to 
976         get the same defaults. This also makes loading of formatting from the
977         document work, because that expected a non-null.
978
979 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
980
981         RelatedListTable: Make sure that the tableName is set.
982
983         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
984         Constructor: Take the tableName so it is available later. Otherwise, 
985         the server assumes that we mean the default table and cannot find the
986         relationship in it.
987         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
988         setData(): Pass the tableName to the RelatedListTable constructor.
989
990 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
991
992         Add some checks.
993
994         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
995         RelatedListNavigationButtonCell.onEnterKeyDown(), setData():
996         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
997         getDataProvider():
998         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
999         addColumn():
1000         * src/main/java/org/glom/web/server/database/DBAccess.java:
1001         convertResultSetToDTO(), getPortal():
1002         * src/main/java/org/glom/web/server/database/ListDBAccess.java
1003         getListData():
1004         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
1005         Add checks for null objects and out of range access, with log messages to
1006         give hints so we can fix these properly.
1007
1008 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
1009
1010         Portals: some corrections.
1011
1012         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
1013         setData():
1014         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
1015         constructor: Use getRelationshipNameUsed() instead of getName(), because
1016         that is what is meant.
1017         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
1018         getFromField(): Fix a typo, to get the field name, not the table name.
1019         * src/main/java/org/glom/web/server/database/DBAccess.java:
1020         getPortal(): Fix a typo that stopped this from working.
1021
1022 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
1023
1024         LayoutItemPortal: Also override getTitleOriginal().
1025
1026         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
1027         This lets the base getTitle() with no parameters work.
1028         TODO: Test this properly.
1029
1030 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1031
1032         LayoutItemPortal: getTitle*(): Use the relationship title.
1033
1034 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1035
1036         LayoutItemField: Fix loading of custom titles.
1037
1038         * src/main/java/org/glom/web/server/libglom/Document.java
1039         loadDataLayoutItemField(): The title, if any, instead of the field 
1040         title, is stored in a title_custom node. Load it from there.
1041         * src/main/java/org/glom/web/shared/libglom/CustomTitle.java: Add this
1042         class.
1043         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField:
1044         Add getCustomTitle() and use it, instead of super.getTitle*(), in the
1045         getTitle*() overrides.
1046         * src/test/java/org/glom/web/server/libglom/LayoutItemFieldTest.java:
1047         Adapt.
1048
1049 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1050
1051         LayoutItemField: Fall back to field titles, so some are really shown.
1052
1053         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
1054         Override getTitleOriginal() and getTitle(), as in java-libglom.
1055         * src/test/java/org/glom/web/server/libglom/LayoutItemFieldTest.java:
1056         Test this behaviour.
1057
1058 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1059
1060         Correct use of setExpectedResultSize().
1061
1062         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1063         getValidListViewLayoutGroup(), getDetailsLayoutGroup():
1064         Use setExpectedResultSize only on top-level groups (for instance, the
1065         list layout) or on child portals (in details views).
1066         Use the correct table name for portals to avoid SQL errors.
1067         Update the expected counts when returning cached layouts.
1068
1069 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1070
1071         Document: Interpret no group column count as 1.
1072
1073         * src/main/java/org/glom/web/server/libglom/Document.java: Use a sane
1074         default, though we now check for this in the UI code anyway.
1075
1076 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1077
1078         More null checks.
1079
1080 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1081
1082         Translatable: Use Hashmap instead of Treemap because GWT supports it.
1083
1084         * src/main/java/org/glom/web/shared/libglom/Translatable.java:
1085         The use of Treemap lead to this error from async methods, with no 
1086         further clue:
1087         "The response could not be deserialized"
1088
1089 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1090
1091         OnlineGlom.gwt.xml: Add exludes to fix explicit gwt compilation in Eclipse.
1092
1093         * src/main/java/org/glom/web/OnlineGlom.gwt.xml: This is necessary 
1094         when using the Google -> GWT Compile, or 
1095         g toolbar button -> GWT Compile Project... feature in Eclipse.
1096
1097 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1098
1099         ListTable.addColumn(): Protect against a null Formatting.
1100
1101         * src/main/java/org/glom/web/client/ui/list/ListTable.java: addColumn():
1102         Create a default Formatting if it is null, because that is the simplest
1103         way to do this.
1104
1105 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1106
1107         ConfiguredDocument.updateLayoutGroup(): Protect against a null dereference.
1108
1109         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1110         updateLayoutGroup(): Check that the field is not null.
1111
1112 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1113
1114         ListViewImpl: Protected against a bad cast error.
1115
1116         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
1117         onEnterKeyDown(): Do not cast without an instanceof check.
1118
1119 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1120
1121         ListTable: Protect against an out of range error.
1122
1123         * src/main/java/org/glom/web/client/ui/list/ListTable.java
1124         createCellTable(): This is unlikely, but can happen while debugging.
1125
1126 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1127
1128         AsyncMessage onFailure() callbacks: Log the exception message.
1129
1130         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
1131         * src/main/java/org/glom/web/client/activity/DocumentSelectionActivity.java:
1132         * src/main/java/org/glom/web/client/activity/ListActivity.java:
1133         * src/main/java/org/glom/web/client/activity/ReportActivity.java:
1134         * src/main/java/org/glom/web/client/activity/TableSelectionActivity:
1135         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
1136         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
1137         These are useful clues when something is wrong.
1138
1139 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1140
1141         ConfiguredDocument: Avoid a null dereference.
1142
1143         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1144         TableLayoutsForLocale.getMapWithAdd(): Make sure that the list and 
1145         details maps are created.
1146
1147 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1148
1149         Document: Correct the port number parsing.
1150
1151         * src/main/java/org/glom/web/server/libglom/Document.java:
1152         This lets us actually connect to the database and show the document.
1153
1154 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1155
1156         Fix mvn gwt:test
1157
1158         * pom.xml: Use htmlunit mode for gwt:test, because the default demands
1159         user-interaction, asking us to load a temporary URL in a browser.s
1160         * src/main/java/org/glom/web/OnlineGlom.gwt.xml: Add a servlet node,
1161         which is apparently necessary for testing the service. See the comment.
1162         * src/test/java/org/glom/web/client/GwtTestOnlineGlomService.java: 
1163         Show the exception, if any. This is how I saw the 404 in the HTML in 
1164         the exception.
1165
1166 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1167
1168         DocumentTest: Move the .glom files into the resources directory.
1169
1170         * src/test/java/org/glom/web/server/libglom/DocumentTest: And get the
1171         URI via getResource().
1172
1173 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1174
1175         Document: Remove the FieldIdentifies inner class.
1176
1177         * src/main/java/org/glom/web/server/libglom/Document.java: We only
1178         use the Relationship (though the same function in libglom is maybe
1179         used in other ways) and so this removes a compiler warning.
1180
1181 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1182
1183         Document.load() Remove the error code parameter.
1184
1185         * src/main/java/org/glom/web/server/libglom/Document.java: load():
1186         Remove the parameter. We do not set it yet and it could never have
1187         worked as an output parameter (though maybe it did in java-libglom).
1188         We could use an exception if we really want the failure reason.
1189         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1190         init():
1191         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
1192         setUp(), testGetSuitableTableToViewDetails(): Adapt.
1193
1194 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1195
1196         Make some inner classes static.
1197
1198         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1199         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1200         * src/main/java/org/glom/web/server/ReportGenerator.java
1201         * src/main/java/org/glom/web/server/libglom/Document.java
1202         Make all inner classes static that can be static.
1203
1204 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1205
1206         OnlineGlomServiceImpl: Do not load and check for java-libglom.
1207
1208         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1209         init(): We do not use java-libglom any more.
1210
1211 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1212
1213         Remove mentions of java-libglom.
1214
1215         * README: Remove mention of java-libglom, because it no longer needed.
1216         * utils/build-onlineglom-war.sh:
1217         * utils/check-and-recover-tomcat.py:
1218         * utils/install-onlineglom-war.sh: Remove these as they are no longer
1219         useful. Building is now far easier, with no need for jhbuild.
1220
1221 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1222
1223         Fix the build (mvn package)
1224
1225         * src/main/java/org/glom/web/shared/libglom/layout/LayoutGroup.java
1226         (LayoutGroup): Make the LayoutItemList inner class static and protected.
1227         Otherwise the GWT Java->Javascript compilation fails with just this
1228         error, during mvn package or when attempting to view in a browser, 
1229         in the GWT developer mode in Eclipse.
1230
1231         [INFO] --- gwt-maven-plugin:2.4.0:compile (default) @ gwt-glom ---
1232         [INFO] auto discovered modules [org.glom.web.OnlineGlom]
1233         [INFO] Compiling module org.glom.web.OnlineGlom
1234         [INFO]    [ERROR] Errors in 'file:/home/murrayc/checkouts/gnome/gwt-glom/src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java'
1235         [INFO]       [ERROR] Line 46:  Failed to resolve 'org.glom.web.client.OnlineGlomService' via deferred binding
1236         [INFO]    Scanning for additional dependencies: file:/home/murrayc/checkouts/gnome/gwt-glom/src/main/java/org/glom/web/client/ui/details/DetailsCell.java
1237         [INFO]       [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?)
1238         [INFO]          [WARN] org.glom.web.client.OnlineGlomService_Proxy
1239         [INFO]    [ERROR] Cannot proceed due to previous errors
1240
1241         It has taken me 2 days to find out what was causing that. After reducing
1242         the code, the compiler eventually showed me the full error message.
1243
1244 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1245
1246         ConfiguredDocument: Cache the cloned and stripped layouts.
1247
1248         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
1249         getValidListViewLayoutGroup(), .getDetailsLayoutGroup(): Store the cloned
1250         layout in a map, so we can retrieve it again without rebuilding it.
1251
1252 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1253
1254         UsesRelationshipImpl: Complete the relationshipEquals() implementation.
1255
1256 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1257
1258         libglom classes: Implement some auto-generated emthods.
1259
1260 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1261
1262         Add GwtTestOnlineGlomService.
1263
1264         * src/test/java/org/glom/web/client/GwtTestOnlineGlomService.java:
1265         However, this (and the other GwtTest*) does not seem to run during 
1266         mvn test. 
1267
1268 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1269
1270         Remove use of unsupported features from client code.
1271
1272         * src/main/java/org/glom/web/client/StringUtils.java: Add equals().
1273         * src/main/java/org/glom/web/shared/libglom/layout/UsesRelationshipImpl.java:
1274         * src/main/java/org/glom/web/shared/libglom/layout/reportparts/LayoutItemGroupBy.java:
1275         Use our client version of StringUtils instead of the apache commons one.
1276         
1277         However, the GWT Javascript compliation still fails.
1278
1279 2012-04-25  Murray Cumming  <murrayc@murrayc.com>
1280
1281         Add a Field class and implement some loading of it in Document.
1282
1283 2012-04-25  Murray Cumming  <murrayc@murrayc.com>
1284
1285         Initial Document loading implementation, instead of libglom.
1286
1287         * src/test/java/org/glom/web/shared/libglom/: Add Document, Report,
1288         and Translatable classes, and adapt the rest of the code to use them.
1289         However, this is still missing Layout and Field classes and loading.
1290
1291 2012-04-24  Murray Cumming  <murrayc@murrayc.com>
1292
1293         Use of jOOQ: Move Field creation into a utility method.
1294
1295         * src/main/java/org/glom/web/server/SqlUtils.java:
1296         This lets us improve it more easily.
1297
1298 2012-04-24  Murray Cumming  <murrayc@murrayc.com>
1299
1300         Use of jOOQ: Improve the code to COUNT a sub-select.
1301
1302         * src/main/java/org/glom/web/server/SqlUtils.java:
1303         Move initial query creation into 
1304         build_sql_select_step_with_where_clause().
1305         build_sql_select_count_rows(): Use the jOOQ API instead of
1306         concatentating text, because a jOOQ Select*Step is a TableLike,
1307         which is what from() takes.
1308
1309 2012-04-23  Murray Cumming  <murrayc@murrayc.com>
1310
1311         Use jOOQ instead of Glom.build_sql*(), to avoid native calls.
1312
1313         * pom.xml: Depend on jooq.
1314         * src/main/java/org/glom/web/server/SqlUtils.java: Reimplement the
1315         methods with jOOQ, based on the C++ implementations in libglom,
1316         with some changes to the logic required by jooQ.
1317         Take a jOOQ Condition rather than a Glom.SqlExpr (GdaSqlExpr) for the
1318         where clause.
1319         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1320         * src/main/java/org/glom/web/server/ReportGenerator.java:
1321         * src/main/java/org/glom/web/server/SqlUtils.java:
1322         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
1323         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
1324         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
1325         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
1326         * src/main/java/org/glom/web/server/database/RelatedListNavigation:
1327         Adapt. In particular, the SqlUtils methods now need to take a Connection,
1328         because jOOQ needs that, though it seems unnecessary.
1329
1330         This is not quite finished. Ideally jOOQ would help us to build 
1331         table_name.field_name names, quoting and escaping them properly.
1332         See http://stackoverflow.com/questions/10264001/instantiating-a-jooq-field-by-name
1333
1334 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1335
1336         Move use of Glom.build_sql*() into a new SqlUtils class.
1337
1338         * src/main/java/org/glom/web/server/SqlUtils.java: Add static methods
1339         to wrap Glom.build_sql*(). The parameter types are still Glom one,
1340         but this will make it easier to start using something other than 
1341         libglom or SqlBuilder.
1342
1343 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1344
1345         Update the project URL.
1346
1347         * pom.xml: Use an OnlineGlom-specific URL for the project URL.
1348
1349 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1350
1351         Main layout: Use a FlowTable instead of absolute positioning.
1352
1353         * src/main/java/org/glom/web/client/OnlineGlom.java: onModuleLoad():
1354         The RootLayoutPanel is a (extends) AbsolutePanel, so each of its 
1355         child panels/widgets must have an absolute position. But that is annoying, so
1356         this adds a FlowTable and puts the child panels in there.
1357
1358 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1359
1360         GwtTestOnlineGlom: Comment out unused code.
1361
1362         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
1363         Eclipse has started to say that some code is unused.
1364
1365 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1366
1367         Update to the latest versions of dependencies.
1368
1369         * pom.xml: Update version numbers of dependencies to the latest
1370         versions.
1371         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
1372         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1373         * src/main/java/org/glom/web/server/ReportGenerator.java:
1374         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
1375         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
1376         * src/main/java/org/glom/web/server/database/RelatedListNavigation.
1377         java:
1378         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
1379         Modify the imports where necessary.
1380
1381 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1382
1383         Style: Remove overflow:hidden from searchbox
1384
1385         * src/main/webapp/style.css: Because this pushes the Back To Link
1386         label/link on to the next row, which is then hidden due to the 
1387         hard-coded (in ems) height.
1388
1389 2012-04-20  Murray Cumming  <murrayc@murrayc.com>
1390
1391         Remove some duplicate code.
1392
1393         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1394         getDocumentInfo(): This must have been duplicated during the merge from the
1395         reports branch.
1396
1397 1.21.8.1:
1398
1399 2012-04-19  Murray Cumming  <murrayc@murrayc.com>
1400
1401         Reports: Localize the waiting for report message.
1402
1403         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1404         start(): Get the message from the contants.
1405         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.properties:
1406         Add the string here.
1407         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
1408         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_de.properties:
1409         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
1410         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
1411         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_zh_CN.properties:
1412         Update these files with the English text for newer strings for now.
1413
1414 2012-04-19  Murray Cumming  <murrayc@murrayc.com>
1415
1416         Reports: Show a message while waiting for the report.
1417
1418         * src/main/java/org/glom/web/client/ui/ReportView.java
1419         * src/main/java/org/glom/web/client/ui/ReportViewImpl.java:
1420         Add setWaitingText(), to show a message saying that we are 
1421         waiting for the report to be ready.
1422         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1423         start(): Call setWaitingText() before calling the async
1424         report generation.
1425
1426 2012-04-19  Murray Cumming  <murrayc@murrayc.com>
1427
1428         ReportGenerator: Specify date and time formats.
1429
1430         * src/main/java/org/glom/web/server/ReportGenerator.java:
1431         createFieldValueElement(): Use the default (and localized)
1432         short formats, though we still need a way to show 4-digit
1433         years without providing the format for every locale.
1434         * src/main/java/org/glom/web/server/database/DBAccess.java:
1435         convertResultSetToDTO(): Use the short formats here too.
1436
1437 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1438
1439         ReportGenerator: Use the correct numeric formatting.
1440
1441         * src/main/java/org/glom/web/server/ReportGenerator.java
1442         createFieldExpression(), createFieldValueElement(): Take the
1443         whole LayoutItem_Field instead of just the field name, so
1444         we have access to the formatting.
1445         createFieldValueElement(): Use JRTextField.setPattern() to
1446         specify the numeric formatting, with the help of a 
1447         regular DecimalFormat.
1448
1449 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1450
1451         ReportGenerator: Avoid showing null for group by titles.
1452
1453         * src/main/java/org/glom/web/server/ReportGenerator.java
1454         generateReport(): Use setBlankWhenNull() on the field title
1455         style too, because this is used for values in group by
1456         sections.
1457
1458 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1459
1460         ReportGenerator: Add a colon to titles in vertical groups.
1461
1462         * src/main/java/org/glom/web/server/ReportGenerator.java
1463         addFieldToDetailBandVertical(): Pass true for the withColon
1464         parameter.
1465
1466 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1467
1468         ReportGenerator: Simplify the code by using Position more.
1469
1470 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1471
1472         Reports: Support vertical groups, roughly.
1473
1474         * src/main/java/org/glom/web/server/ReportGenerator.java:
1475         addToReport(): Rename to addGroupToReport() and, if necessary,
1476         call the new addVerticalGroupToReport() method.
1477         createFieldValueElement(): Let the caller specify the Y position
1478         too.
1479
1480 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1481
1482         Reports: Allow a second report to be shown.
1483
1484         * src/main/java/org/glom/web/client/ui/ReportViewImpl.java:
1485         clear(): Do not remove the HTML widget, which broke the whole layout.
1486
1487 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1488
1489         Locales drop-down: Show that we use English by default.
1490
1491         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java:
1492         fillView(): When we use English, just because that is the default, when
1493         no locale is specified, show that in the Locales drop-down instead of 
1494         just showing the first item.
1495
1496 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1497
1498         Unselect the Report/Locale/Table combo item when appropriate.
1499
1500         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java:
1501         setPlace(): clear reportName if this is not a ReportPlace.
1502         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1503         setSelectedTableName(), setSelectedLocale(), setSelectedReport():
1504         When the provided name is empty, unselect all items, so that none are
1505         indicated. This uses a for loop because I cannot find a single method
1506         to do this.
1507
1508 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1509
1510         Report: Give the user a way to get back to the list.
1511
1512         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java:
1513         start(), setPlace(): Show the Back To List link on reports, and also 
1514         interpret selecting the empty report item as back to list.
1515
1516 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1517
1518         Really show the selected Report name.
1519
1520         * src/main/java/org/glom/web/client/activity/TableSelectionActivity:
1521         setPlace(): Store the reportName here, if it is that kind of Place.
1522         fillView(): Set the selected Report after filling the list of reports.
1523         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1524         setSelectedLocale(), setSelectedReport(): Avoid possible uses of
1525         null Strings, though we need some way to unselect all ListBox items
1526         in that case.
1527
1528 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1529
1530         ReportGenerator: Try to avoid some problems.
1531
1532         * src/main/java/org/glom/web/server/ReportGenerator.java
1533         addField(): Try to avoid duplicates, and avoid using a null
1534         class type.
1535
1536 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1537
1538         Reports: Use quickFind.
1539
1540         * src/main/java/org/glom/web/client/OnlineGlomService.java;
1541         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
1542         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1543         getReportHTML(): Add a quickFind parameter.
1544         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1545         start(): Pass the quickFind parameter.
1546         * src/main/java/org/glom/web/server/ReportGenerator.java
1547         generateReport(): Take a quickFind parameter.
1548
1549 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1550
1551         ReportPlace: Actually use the report name.
1552
1553         * src/main/java/org/glom/web/client/place/ReportPlace.java
1554         getPlace(): Do not assign the report name to the quickfind.
1555
1556 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1557
1558         Show java.library.path when complaining.
1559
1560         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1561         init(): When telling us to check java.library.path, show the
1562         current value.
1563
1564 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1565
1566         ReportGenerator: Do not show nulls.
1567
1568 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1569
1570         ReportGenerator: Make the title font larger.
1571
1572 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1573
1574         ReportGenerator: Put field titles inside groups, if there are groups.
1575
1576 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1577
1578         ReportGenerator: Take the Report itself instead of the name and group.
1579
1580         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1581         Remove getReportLayoutGroup().
1582         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1583         getReportHTML(): Pass the report instead
1584         of its name and layout group.
1585         * src/main/java/org/glom/web/server/ReportGenerator.java
1586         generateReport(): Use the report object to use the title 
1587         instead of the name.
1588
1589 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1590
1591         ReportGenerator: Remove designBand parameters.
1592
1593         * src/main/java/org/glom/web/server/ReportGenerator.java:
1594         Make designBand a class member instead of passing it to all
1595         methods.
1596
1597 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1598
1599         ReportGenerator: Add lines, a bit like in the desktop version.
1600
1601         * src/main/java/org/glom/web/server/ReportGenerator.java
1602         addToReport(): Use JRDesignLine.
1603
1604 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1605
1606         ReportGenerator: Correct the title positions and use some bold style.
1607
1608         * src/main/java/org/glom/web/server/ReportGenerator.java:
1609         Break the code up into reusable functions, correct the placement of 
1610         titles, and use normal/bold styles as in the reports in the desktop 
1611         version.
1612
1613 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1614
1615         ReportGenerator: Add a header band to show the field titles.
1616
1617         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1618         getReportHTML(): Pass the localeId to the ReportGenerator 
1619         constructor.
1620         * src/main/java/org/glom/web/server/ReportGenerator.java
1621         constructor: Take the localeID so we can get translated field
1622         titles.
1623         generateReport(), addToReport(), addFieldToBand(): Add field 
1624         titles in a column header band.
1625
1626 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1627
1628         Reports drop-down list: Some improvement.
1629
1630         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
1631         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1632         Adedd setSelectedReport(),
1633         setReportList(): Add a blank line so that the user can select the 
1634         first one.
1635         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1636         start(): Show the current report by calling setSelectedReport().
1637         This does not seem to work yet.
1638
1639 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1640
1641         DetailsActivity, ListActivity: Move some variables into a base class.
1642
1643         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
1644         * src/main/java/org/glom/web/client/activity/HasTableActivity.java:
1645         * src/main/java/org/glom/web/client/activity/ListActivity.java: Move 
1646         the clientFactory, documentID, tableName and authenticationPopup into
1647         a base class, to avoid duplication.
1648
1649 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1650
1651         Translate the Reports label.
1652
1653         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
1654         Get the "Reports" label string from the constants.
1655         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.pro
1656         perties: Add Reports to the constants.
1657
1658 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1659
1660         Reports: Implement grouping.
1661
1662         * src/main/java/org/glom/web/server/ReportGenerator.java:
1663         Handle LayoutItem_GroupBy items and try to do the right thing
1664         with JRDesignGroup. It seems to work.
1665
1666 2012-03-04  Murray Cumming  <murrayc@murrayc.com>
1667
1668         Actually show some data with JasperReports.
1669
1670         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java: 
1671         getReportHTML(): Move most code into a ReportGenerator class.
1672         * src/main/java/org/glom/web/server/ReportGenerator.java:
1673         Recurse into sub-groups, adding fields to the JasperDesign's details
1674         band. Note that we must set an arbitrary width and height, or it just
1675         will not show any data.
1676
1677 2012-03-04  Murray Cumming  <murrayc@murrayc.com>
1678
1679         Reports Chooser: Show the titles, not the names.
1680
1681         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
1682         (TableSelectionViewImpl.setReportList): Show the titles in the UI,
1683         and the names as the values.
1684         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1685         (ConfiguredDocument.getReportLayoutGroup): Do not return a default
1686         group now that we provide the report name, so it should always 
1687         succeed.
1688
1689 2012-02-15  Murray Cumming  <murrayc@murrayc.com>
1690
1691         Depend on jasperreports.
1692
1693         * pom.xml: Add the dependency. My plan is to use this on the 
1694         server side.
1695
1696 2012-01-31  Murray Cumming  <murrayc@murrayc.com>
1697
1698         Implement navigation to report places.
1699
1700         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1701         start(): Do not bother to handle all events here.
1702         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
1703         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1704         Added getSelectedReport().
1705         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
1706         .java: start(): When handling a change to the reports chooser,
1707         call getSelectedReport() and goTo() its ReportPlace.
1708         * src/main/java/org/glom/web/client/ui/ReportView.java
1709         * src/main/java/org/glom/web/client/ui/ReportViewImpl.java:
1710         Added setReportHTML() which puts the html in a gwt HTML widget.
1711         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1712         getReportHTML(): Return "TODO" just to show that this works.
1713
1714 2012-01-31  Murray Cumming  <murrayc@murrayc.com>
1715
1716         Make ReportPlace usable.
1717
1718         * src/main/java/org/glom/web/client/mvp/AppPlaceHistoryMapper.java:
1719         Mention ReportPlace.
1720         * src/main/java/org/glom/web/client/place/ReportPlace.java:
1721         Correct the @prefix annotation.
1722
1723 2012-01-31  Murray Cumming  <murrayc@murrayc.com>
1724
1725         OnlineGlomService: Return report HTML rather than the LayoutGroup.
1726
1727         * src/main/java/org/glom/web/client/OnlineGlomService.java:
1728         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
1729         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1730         Change getReportLayout() to getReportHMTL() because we will not need to 
1731         parse or render the report layout on the client side.
1732         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
1733         getReportLayout(): Return the libglom LayoutGroup type because we will
1734         not need to convert to a shared type, because this will not be used on
1735         the client side.
1736         * src/main/java/org/glom/web/client/activity/ReportActivity.java:
1737         Adapted.
1738
1739         Note that there is still no implementation for this.
1740
1741
1742 2012-01-27  Murray Cumming  <murrayc@murrayc.com>
1743
1744         Add a (empty) Report Place, View, and Activity.
1745
1746         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java:
1747         Rename to:
1748         * src/main/java/org/glom/web/client/place/HasTablePlace.java
1749         * src/main/java/org/glom/web/client/place/ListPlace.java: Move some of
1750         this into a superclass:
1751         * src/main/java/org/glom/web/client/place/HasRecordsPlace.java
1752         and also use it as the base of this new ReportPlace:
1753         * src/main/java/org/glom/web/client/place/ReportPlace.java
1754
1755         * src/main/java/org/glom/web/client/ui/ReportView.java
1756         * src/main/java/org/glom/web/client/ui/ReportViewImpl.java
1757         * src/main/java/org/glom/web/client/activity/ReportActivity.java:
1758         Add these, containing mostly boiler-plate for now.
1759
1760         * src/main/java/org/glom/web/client/OnlineGlomService.java
1761         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java
1762         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1763         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1764         Add API to get the LayoutGroup for the report.
1765
1766 2012-01-23  Murray Cumming  <murrayc@murrayc.com>
1767
1768         Add and fill a Reports drop-down list box.
1769
1770         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
1771         Aded getReports():
1772         * src/main/java/org/glom/web/client/OnlineGlomService.java:
1773         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
1774         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1775         Added getReports(document, table, localeID), calling 
1776         ConfiguredDocument.getReports().
1777         * src/main/java/org/glom/web/client/ui/TableSelectionView.java:
1778         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1779         Added setReportsList() and a list widget.
1780         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
1781         .java (TableSelectionActivity.fillView(): Fill the view's reports list.
1782
1783
1784 1.21.8:
1785
1786 2012-04-12  Murray Cumming  <murrayc@murrayc.com>
1787
1788         Translations: Add Esperanto.
1789
1790         * src/main/java/org/glom/web/OnlineGlom.gwt.xml
1791         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_eo.
1792         properties: Add this translation because someone took the time to make it.
1793
1794 2012-03-15  Murray Cumming  <murrayc@murrayc.com>
1795
1796         Adapt to the java-libglom 1.21.7 API. 
1797
1798         * src/main/java/org/glom/web/server/ReportGenerator.java:
1799         addToReport(): get_group_secondary_fields() is now
1800         get_secondary_fields().
1801
1802
1803 2012-03-15  Murray Cumming  <murrayc@murrayc.com>
1804
1805         Use the latest java-libglom version.
1806
1807         * pom.xml: Use java-libglom 1.21.7.
1808
1809 2012-03-03  Ben Konrath  <ben@bagu.org>
1810
1811         Display date and time in details view.
1812
1813         https://bugzilla.gnome.org/show_bug.cgi?id=671257
1814
1815         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
1816
1817 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1818
1819         Require the latest java-libglom.
1820
1821         * pom.xml: java-libglom 1.21.5 has LayoutItem_GroupBy.
1822
1823 2012-03-04  Murray Cumming  <murrayc@murrayc.com>
1824
1825         ListViewDbAccess.getSelectQuery(): Avoid using empty quickfind strings.
1826
1827         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java
1828         ListViewDBAccess.getSelectQuery(): Do not create a where clause for 
1829         an empty quickfind string. I also corrected libglom to create only 
1830         empty where clauses for empty quickfind strings, but this avoids the
1831         need for that fix.
1832
1833 2012-02-24  Ben Konrath  <ben@bagu.org>
1834
1835         Improve the tabs in the Notebook widget.
1836
1837         Bug #670728
1838
1839 2012-01-30  Murray Cumming  <murrayc@murrayc.com>
1840
1841         Translations: Try to translate the strings.
1842
1843         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
1844         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_de.properties:
1845         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
1846         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
1847         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_zh_CN.properties:
1848         Take the Open translation from GTK+'s .po files.
1849         Take the Details translation from Glom's po files.
1850         I have added the other strings to Glom so we can get translations that way:
1851         http://git.gnome.org/browse/glom/commit/?id=c3cefe607428a84bdf8de1b04e8bef6f70b04564
1852
1853 2012-01-27  Murray Cumming  <murrayc@murrayc.com>
1854
1855         TableSelectionViewImpl: Put the search label and entry in a div.
1856
1857         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1858         Put the search widgets in a FlowTable so that the CSS can be used to
1859         style them while keeping them together.
1860         * src/main/webapp/style.css: Mention the new div.
1861
1862 2012-01-27  Murray Cumming  <murrayc@murrayc.com>
1863
1864         Translate more strings in more locales.
1865
1866         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.properties:
1867         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
1868         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
1869         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
1870         Translate the "Details" and "Open" string too.
1871
1872         * src/main/java/org/glom/web/OnlineGlom.gwt.xml:
1873         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.properties:
1874         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
1875         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
1876         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
1877         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_zh_CN.properties:
1878         Add these new locales as placeholders though they currently contain English.
1879
1880 2012-01-27  Murray Cumming  <murrayc@murrayc.com>
1881
1882         OnlineGlomServiceImpl: Avoid (unlikely) null object dereferences.
1883
1884         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java: get*():
1885         Check the ConfiguredDocument* for null before using it.
1886
1887 2012-01-26  Murray Cumming  <murrayc@murrayc.com>
1888
1889         Tell Eclipse about the generated java files.
1890
1891         * .classpath: This lets it find OnlineGlomConstants.java.
1892         It would be nice if Eclipse just used the maven build files.
1893
1894 2012-01-26  Murray Cumming  <murrayc@murrayc.com>
1895
1896         Prevent a crash when no locale is specified in the URL.
1897
1898         * src/main/java/org/glom/web/client/Utils.java: getCurrentLocaleID():
1899         Avoid returning a null string, obtained from 
1900         Window.Location.getParameter(). This caused a crash when it was
1901         later passed to libglom's API.
1902         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1903         init(), getDocumentInfo(), getListViewLayout(), getDocuments(),
1904         getDetailsLayoutAndData(): Use StringUtils.defaultString() to
1905         guard against future null strings.
1906
1907 2012-01-26  Murray Cumming  <murrayc@murrayc.com>
1908
1909         Use the ?locale= query param instead of the &lang= token param. 
1910
1911         * src/main/java/org/glom/web/client/place/ListPlace.java
1912         * src/main/java/org/glom/web/client/place/DetailsPlace.java
1913         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java
1914         Remove the lang token key and value.
1915         
1916         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
1917         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1918         When the user selects a different locale from the chooser, use 
1919         Window.Location.assign() to change the URL, which then causes a reload.
1920         
1921         * src/main/java/org/glom/web/client/Utils.java: Added getCurrentLocaleID().
1922         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
1923         * src/main/java/org/glom/web/client/activity/DocumentSelectionActivity.java
1924         * src/main/java/org/glom/web/client/activity/ListActivity.java
1925         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
1926         * src/main/java/org/glom/web/client/ui/DocumentSelectionView.java
1927         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.java:
1928         * src/main/java/org/glom/web/client/ui/ListView.java:
1929         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
1930
1931         Remove localeID member variables and method/constructor parameters, instead
1932         using Utils.getCurrentLocaleID() when we need a localID to pass to 
1933         OnlineGlomService.
1934
1935 2012-01-26  Murray Cumming  <murrayc@murrayc.com>
1936
1937         Internationalize the UI strings.
1938
1939         * pom.xml: gwt-maven-plugin: Add the i18n goal and specify a 
1940         <i18nConstantsBundle>, removing the unused <i18nMessagesBundle>.
1941         * src/main/resources/org/glom/web/client/Messages.properties: Remove this
1942         because it is unused. Messages are apparently strings that can have 
1943         parameters, but we do not need that yet, so Contants will be enough for now.
1944         * src/main/java/org/glom/web/OnlineGlom.gwt.xml: Add extend-property lines
1945         to say that we support the en and de locales.
1946         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.properties:
1947         The original English strings.
1948         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_de.properties:
1949         Some German translations of the English strings.
1950         The i18n goal then uses the .properties file to generate an 
1951         OnlineGlomConstants.java file in target/ and somehow GWT.create() magically
1952         returns an implementation that returns the translated strings.
1953         The documentation suggests putting these in src/java/*/client/, but it seems
1954         best to put it in src/resources/*/client/.
1955         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1956         Instantiate OnlineGlomConstants via GWT.create() and use it to get the strings
1957         instead of hard-coding them.
1958         Note that we cannot import OnlineGlomConstants because it does not exist yet,
1959         but that does not seem to stop the build, though it confuses Eclipse.
1960         
1961         You can see the translated string by adding ?locale=de to the URL, like so:
1962         http://127.0.0.1:8888/OnlineGlom.html?gwt.codesvr=127.0.0.1:9997?locale=de#list:document=film_manager
1963
1964 2012-01-24  Murray Cumming  <murrayc@murrayc.com>
1965
1966         Improve null/empty String checks. 
1967
1968         * pom.xml: Add a dependency on commons-lang, to use
1969         org.apache.commons.lang.StringUtils.
1970         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1971         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1972         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java
1973         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
1974         Use StringUtils.isEmpty().
1975
1976         * src/main/java/org/glom/web/client/StringUtils.java: Add a tiny
1977         StringUtils class with a static isEmpty() function because we 
1978         cannot use org.apache.commons.lang.StringUtils in client-side
1979         GWT code because it (apparently) cannot be compiled to javascript.
1980         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
1981         * src/main/java/org/glom/web/client/activity/ListActivity.java
1982         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java
1983         * src/main/java/org/glom/web/client/place/DetailsPlace.java
1984         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java
1985         * src/main/java/org/glom/web/client/place/ListPlace.java
1986         * src/main/java/org/glom/web/client/ui/cell/NumericCell.java
1987         * src/main/java/org/glom/web/client/ui/cell/TextCell.java
1988         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java
1989         * src/main/java/org/glom/web/client/ui/details/Group.java
1990         * src/main/java/org/glom/web/client/ui/details/Notebook.java: Use 
1991         our StringUtils.isEmpty() function.
1992
1993 2012-01-24  Murray Cumming  <murrayc@murrayc.com>
1994
1995         Update to the latest java-libglom API.
1996
1997         * pom.xml: Require java-libglom 1.21.4.
1998         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1999         getDocumentInfo(), getListViewLayoutGroup():
2000         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
2001         getDocuments():
2002         * src/main/java/org/glom/web/server/database/DBAccess.java
2003         getFieldsToShowForSQLQueryAddGroup(),
2004         getPrimaryKeyLayoutItemField(): Replace get_database_title()
2005         with either get_database_title_original() or 
2006         get_database_title(localeID).
2007
2008 2012-01-24  Murray Cumming  <murrayc@murrayc.com>
2009
2010         ConfiguredDocument: Avoid a null pointer exception.
2011
2012         * src/main/java/org/glom/web/server/ConfiguredDocument.java
2013         Initialize localeID to "" to avoid returning a null String which 
2014         causes a crash in java-libglom's swing-generated code.
2015
2016 2012-01-23  Murray Cumming  <murrayc@murrayc.com>
2017
2018         Some simple renaming.
2019
2020         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
2021         * src/main/webapp/style.css: Rename, tableChooser to tablesChooser. Likewise
2022         for localeChooser. This seems more appropriate and is less ambiguous 
2023         particularly in the .css file.
2024
2025 2012-01-23  Murray Cumming  <murrayc@murrayc.com>
2026
2027         ConfiguredDocument: Rename the localedID private member variable.
2028
2029 2012-01-23  Murray Cumming  <murrayc@murrayc.com>
2030
2031         Adapt to the latest java-libglom API from git master.
2032
2033         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
2034         libglom now uses only Vector instead of List, which uses add() instead of
2035         addLast(). 
2036
2037 2012-01-22  Murray Cumming  <murrayc@murrayc.com>
2038
2039         ConfiguredDocument: Rename the localedID private member variable.
2040
2041 2012-01-20  Murray Cumming  <murrayc@murrayc.com>
2042
2043         Build a source tarball with mvn assembly:single
2044
2045         * assembly.xml: Add this file.
2046         * pom.xml: Use the maven-assembly-plugin and tell it to use 
2047         our assembly.xml file.
2048
2049 2012-01-19  Murray Cumming  <murrayc@murrayc.com>
2050
2051         OnlineGlomServiceImpl: Get .glom files recursively.
2052
2053         * pom.xml: Depend on commons-io from org.apache.commons.
2054         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
2055         init(): Use org.apache.commons.io.FileUtils.listFiles() to get the 
2056         files recursively, and with the easier filter for the extension.
2057         Use org.apache.commons.io.FilenameUtils.removeExtension() to 
2058         simplify that code too.
2059
2060 2012-01-19  Murray Cumming  <murrayc@murrayc.com>
2061
2062         README: Mention that you must install java-libglom packages separately.
2063
2064         But then it works, because java-libglom is now in the central maven 
2065         repository.
2066
2067 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2068
2069         locales drop-down: Show the correct selected locale when the URL changes.
2070
2071         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2072         .java: setPlace(): Move some code into fillView().
2073
2074 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2075
2076         locales drop-down: Do not lose the primary key.
2077
2078         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
2079         start(): onLocaleChange(): Pass the current primary key value, 
2080         instead of an empty value.
2081
2082 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2083
2084         locales drop-down: Do not lose the drop-down selection.
2085
2086         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2087         .java (TableSelectionActivity.fillView): Set the selected locale
2088         after changing the drop-down items (though we do not really need
2089         to change them just because the locale changes.)
2090
2091 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2092
2093         locales drop-down: Change the tables list when this changes.
2094
2095         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2096         .java: TableSelectionActivity.start(): Move the async table titles
2097         retrieval into a private fillView() method and also call this when 
2098         the chosen locale changes.
2099         Note that the document title is not actually translatable yet, but
2100         that is a problem that I should fix soon in libglom.
2101
2102 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2103
2104         Improve the placement of the locales drop-down.
2105
2106         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
2107         Put the title and locales drop-down in a div (gwt.FlowTable).
2108         * src/main/webapp/style.css: Add magic css properties to make this work.
2109         Also remove the left margin from the title so that it lines up with the 
2110         headerbox below it.
2111
2112 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2113
2114         locales selector: Show human-readable locale titles.
2115
2116         * src/main/java/org/glom/web/server/ConfiguredDocument.java
2117         getDocumentInfo(): Use java.util.Locale to show a real title of 
2118         each locale, in the locale's own language.
2119
2120 2012-01-17  Murray Cumming  <murrayc@murrayc.com>
2121
2122         Add a language/locale selector drop-down.
2123
2124         * src/main/java/org/glom/web/shared/DocumentInfo.java:
2125         Add getLocaleIDs(), setLocaleIDs(), getLocaleTitles(), setLocaleTitles().
2126         * /src/main/java/org/glom/web/server/ConfiguredDocument.java:
2127         getDocumentInfo(): Store the available Locales in the DocumentInfo.
2128         * src/main/java/org/glom/web/client/ui/TableSelectionView.java:
2129         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
2130         Add a ListBox to show the available locales. Add getLocaleSelector(),
2131         setLocaleList(), getSelectedLocale(), setSelectedLocale().
2132         * src/main/java/org/glom/web/client/event/LocaleChangeEvent.java
2133         * src/main/java/org/glom/web/client/event/LocaleChangeEventHandler.
2134         java: Add these classes.
2135         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java:
2136         start(): Fill the locales ListBox. Handle its change event, firing a 
2137         LocaleChangeEvent.
2138         setPlace(): Show the selected locale as specified by the URL token.
2139         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2140         * src/main/java/org/glom/web/client/activity/ListActivity.java:
2141         Handle LocaleChangeEvent, going to a new *Place with that locale.
2142
2143         The placement of the ListBox is not pretty, and it currently uses the ID
2144         as a title, instead of "English", "Deutsch", "Espanola", etc, but it 
2145         is a start.
2146
2147
2148 2012-01-17  Murray Cumming  <murrayc@murrayc.com>
2149
2150         Search box: Show the search text from the URL token.
2151
2152         * src/main/java/org/glom/web/client/ui/TableSelectionView.java:
2153         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
2154         Add setQuickFindText().
2155         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2156         .java: setPlace(): Store the queryText if the place is a ListPlace, 
2157         and call TableSelectionView.setQuickFindText().
2158
2159 2012-01-17  Murray Cumming  <murrayc@murrayc.com>
2160
2161         Allow use of translations via, for instance, &lang=de in the URL.
2162
2163         * pom.xml: Use the unstable java-libglom 1.21 version.
2164
2165         * src/main/java/org/glom/web/client/OnlineGlomService.java:
2166         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java
2167         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2168         init(): Instead of calling TranslatableItem.set_current_locale() 
2169         (now removed), call ConfiguredDocument.setDefaultLocaleID().
2170         However, this is only for default locales, which are not needed to 
2171         change the locale in the URL.
2172         getDocumentInfo(), getListViewLayout(), getSortedListViewData(),
2173         getDetailsData(), getDetailsLayoutAndData(), getRelatedListData(),
2174         getSortedRelatedListData(): Add a localeID parameter, so we can get the 
2175         layout for a particular locale.
2176         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
2177         Add get/setDefaultLocaleID().
2178         getDocumentInfo(), getListViewData(), getRelatedListData(),
2179         getDetailsLayoutGroup(), getListViewLayoutGroup(),
2180         createLayoutItemPortalDTO(), convertToGWTGlomLayoutItemField(): Add a 
2181         localeID parameter, so we can get the layout for a particular locale.
2182
2183         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java:
2184         * src/main/java/org/glom/web/client/place/DetailsPlace.java:
2185         * src/main/java/org/glom/web/client/place/ListPlace.java:
2186         Parse and construct a lang parameter too.
2187
2188         * src/main/java/org/glom/web/client/activity/DocumentSelectionActivity.java:
2189         start(): Pass the defaultLocaleID to addDocumentLink(). It is then
2190         passed to subsequent methods and constructors.
2191         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2192         * src/main/java/org/glom/web/client/activity/ListActivity.java:
2193         Store the localeID from the *Place and pass it to other constructors
2194         and methods, such as OnlineGlomServiceAsync.getDetailsLayoutAndData().
2195
2196         * src/main/java/org/glom/web/client/ui/DocumentSelectionView.java:
2197         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.java:
2198         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
2199         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
2200         * src/main/java/org/glom/web/client/ui/ListView.java:
2201         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2202         Take localeID parameters and pass them to subsequent constructors and 
2203         methods, so that the layout is always retrieved for that locale.
2204
2205         This is rather repetitive.
2206
2207         Note that "" means the original (default) locale of the Glom document,
2208         which is usually English.       
2209
2210 2012-01-17  Murray Cumming  <murrayc@murrayc.com>
2211
2212         Documents: Remove final keyword to fix startup configuration.
2213
2214         * src/main/java/org/glom/web/shared/Documents.java: Remove the
2215         final keywords on the private member variables because that breaks
2216         the startup, apparently (there are warnings) because it stops them
2217         from being serialized. I added these in the previous commit.
2218
2219 2012-01-13  Murray Cumming  <murrayc@murrayc.com>
2220
2221         Documents: Add some final keywords.
2222
2223         * src/main/java/org/glom/web/shared/Documents.java: Eclipse suggested
2224         this.
2225
2226 2012-01-13  Murray Cumming  <murrayc@murrayc.com>
2227
2228         OnlineGlomServiceImpl: Add to overview comments.
2229
2230         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2231         Note that this is where all the document are loaded. They are not 
2232         loaded freshly for each page.
2233
2234 2012-01-12  Murray Cumming  <murrayc@murrayc.com>
2235
2236         Add a search box.
2237
2238         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
2239         Add a TextBox for the text of a quick find.
2240         Add getQuickFindBox(), to get the widget, and getQuickFindText() to 
2241         get the text.
2242         setBackLink(): Add a String quickFind parameter.
2243         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
2244         (TableSelectionView): Add getQuickFindBox() and getQuickFindText()
2245         to the base interface, because that is how TableSelectionViewImpl is used.
2246         * src/main/webapp/style.css: Add style for the search box and its label.
2247
2248         * src/main/java/org/glom/web/client/event/QuickFindChangeEvent.java:
2249         * src/main/java/org/glom/web/client/event/QuickFindChangeEventHandler.java:
2250         Add these files, based on the existing TableChangeEvent and 
2251         TableChangeEventHandlers.
2252         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
2253         start(): Handle QuickFindChangeEvent, passing its quickFind text to
2254         a ListPlace() that the user should be taken to.
2255         * src/main/java/org/glom/web/client/activity/ListActivity.java
2256         start(): Handle it here too and adapt the TableChangeEvent handler to 
2257         pass the extra "" quickFind parameter to ListPlace.
2258         * src/main/java/org/glom/web/client/place/ListPlace.java: 
2259         Constructor: Take an extra String quickFind parameter and store it, 
2260         returning it from a new  getQuickFind() method.
2261         getToken(): Put the quickFind text in the URL token.
2262         getPlace(): Parse the quickFind text from the URL token.
2263         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.ja
2264         va: addDocumentLink(): Pass an extra "" quickFind parameter to the 
2265         ListPlace constructor.
2266         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2267         .java: start(): Add a Change handler for the TableSelectionView's
2268         TextBox (via its base HasChangeHandlers interface), firing the new 
2269         QuickFindChangeEvent.
2270         setPlace(): Adapt the call to TableSelectionView.setbackLink(), to 
2271         pass the extra "" quickFind parameter.
2272
2273         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2274         setCellTable(): Add a String quickFind parameter and pass it to 
2275         the ListViewTable() constructor.
2276         * src/main/java/org/glom/web/client/ui/ListView.java: Change 
2277         setCellTable() in the base interface, because that is how ListViewImpl
2278         is used.
2279
2280         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
2281         Add a String quickFind member variable.
2282         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2283         Constructor: Add a String quickFind parameter, storing it in the
2284         base ListTable's member variable.
2285         onRangeChanged(): Pass quickFind to the 
2286         OnlineGlomServiceAsync.getSortedListViewData() and 
2287         OnlineGlomServiceAsync.getListViewData() methods.
2288
2289         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2290         getListViewData(), getSortedListViewData(): Add a String quickFind 
2291         parameter, passing it to ConfiguredDocument.getListViewData().
2292         * src/main/java/org/glom/web/client/OnlineGlomService.java:
2293         Change getListViewData(), getSortedListViewData() in the base interface,
2294         because that is how OnlineGlomServiceImpl is used, via this:
2295         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
2296         Change getListViewData(), getSortedListViewData() here too.
2297         This class can apparently be used to asynchronously call methods on 
2298         OnlineGlomService, and GWT seems to implement that after recognizing 
2299         just the *Async name convention and the extra AsyncCallback parameters.
2300
2301         * src/main/java/org/glom/web/server/ConfiguredDocument.java
2302         getListViewData(): Add a String quickFind parameter, and pass it to 
2303         ListViewDBAccess.getData().
2304         * src/main/java/org/glom/web/server/database/ListDBAccess.java
2305         getListData(): Add a String quickFind parameter and pass it to 
2306         getSelectQuery().
2307         getSelectQuery(): Add a String quickFind parameter.
2308         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java
2309         getSelectQuery(): Add a String quickFind parameter and use it with 
2310         Glom.get_find_where_clause_quick() to pass a where_clause to 
2311         Glom.build_sql_select_with_where_clause(), to actually filter the 
2312         list view results.
2313         getData(): Add a String quickFind parameter, passing it to getListData().
2314         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.ja
2315         va: getData(): Pass an empty string to getListData() for the 
2316         quickFind parameter.
2317
2318 2012-01-12  Murray Cumming  <murrayc@murrayc.com>
2319
2320         ListTable: Minor change.
2321
2322         * src/main/java/org/glom/web/client/ui/list/ListTable.java
2323         createCellTable(): Make this protected instead of public.
2324
2325 2012-01-12  Murray Cumming  <murrayc@murrayc.com>
2326
2327         Many files: Use final for the parameters and use the @override attribute.
2328
2329 2012-01-22  Ben Konrath <ben@bagu.org>
2330
2331         Add anchor links for single line text that starts with http, ftp and www.
2332
2333         Bug #667269
2334
2335 2012-01-22  Ben Konrath <ben@bagu.org>
2336
2337         Add ellipsis to single line text in details view.
2338
2339         Bug #667269
2340
2341 2012-01-04  Murray Cumming  <murrayc@murrayc.com>
2342
2343         Remove all javadoc author tags.
2344
2345         Because they are awkward and meaningless when many people touch
2346         many files.
2347         See https://gitorious.org/online-glom/gwt-glom/commit/7628b732cb90cbc6d5635420a75568504e8b3655#comment_81164
2348  
2349 2012-01-04  Murray Cumming  <murrayc@murrayc.com>
2350
2351         Revert the COPYING.LESSER to COPYING rename.
2352
2353         Apparently both should be there if it is LGPL.
2354
2355 2012-01-03  Murray Cumming  <murrayc@murrayc.com>
2356
2357         *View: Remove unused imports.
2358
2359         * src/main/java/org/glom/web/client/ui/DetailsView.java:
2360         * src/main/java/org/glom/web/client/ui/DocumentSelectionView.java
2361         * src/main/java/org/glom/web/client/ui/ListView.java:
2362         * src/main/java/org/glom/web/client/ui/TableSelectionView.java:
2363         Remove unused imports, as suggested by Eclipse.
2364
2365 2012-01-02  Murray Cumming  <murrayc@murrayc.com>
2366
2367         Move the *View::Presenter types, and some API into one base View.
2368
2369         * src/main/java/org/glom/web/client/ui/DetailsView.java:
2370         * src/main/java/org/glom/web/client/ui/DocumentSelectionView.java:
2371         * src/main/java/org/glom/web/client/ui/ListView.java:
2372         * src/main/java/org/glom/web/client/ui/TableSelectionView.java: Move
2373         Presenter, setPresenter() and clear() into a shared base interface,
2374         to avoid the unnecessary duplicate Presenter types and to more clearly
2375         show how the *Views share the same structure, even if they are not 
2376         used polymorphically.
2377
2378         * src/main/java/org/glom/web/client/ui/DetailsViewImpl.java:
2379         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.ja
2380         va:
2381         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2382         * src/main/java/org/glom/web/client/activity/ListActivity.java:
2383         * src/main/java/org/glom/web/client/activity/DocumentSelectionActiv
2384         ity.java:
2385         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2386         .java: Adapt.
2387
2388         Feel free to revert this if there is a good reason for the duplicate
2389         types.
2390
2391 2012-01-02  Murray Cumming  <murrayc@murrayc.com>
2392
2393         OnlineGlom: Make clientFactory a (protected) member, and test it a bit.
2394
2395         * src/main/java/org/glom/web/client/OnlineGlom.java: Make clientFactory
2396         a class member instead of a local variable in the method.
2397         This lets us use it to get the view instances, for use in tests.
2398         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
2399         beforeOnlineGlom(): Test some more details of the initial view.
2400         Again, this is not very useful.
2401
2402         To really test gwt-glom we will need to start a local postgresql 
2403         instance with local data, like the Glom tests in C++.
2404
2405 2012-01-02  Murray Cumming  <murrayc@murrayc.com>
2406
2407         pom.xml: Mention the LGPL license.
2408
2409         * pom.xml: Add a licenses section.
2410         * COPYING.LESSER: Move this to COPYING, which
2411         previously contained the GPL. But gwt-glom is all LGPL.
2412
2413 2012-01-02  Murray Cumming  <murrayc@murrayc.com>
2414
2415         Add project information to README and pom.xml.
2416
2417         * README: Add a brief description and mention some mvn
2418         commands.
2419         * pom.xml: This extra information shows up in mvn site
2420         generated pages.
2421
2422 2011-01-02  Murray Cumming  <murrayc@murrayc.com>
2423
2424         Use the latest java-libglom version.
2425
2426         * pom.xml: Use java-libglom 1.19.2 instead of 1.19.1.
2427
2428 2012-01-01  Murray Cumming  <murrayc@murrayc.com>
2429
2430         GwtTestOnlineGlom: Test a little more.
2431
2432         * src/main/java/org/glom/web/client/OnlineGlom.java: Make the panels
2433         protected rather than private, as suggested by the gwt-test-utils
2434         maintianer here:
2435         http://stackoverflow.com/questions/7931724/gwt-testcase-simulating-clicking-a-button-on-my-page
2436         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java
2437         Test the initial visibility of the panels.
2438
2439         However, this is not a very useful test.
2440         And I wonder how we should generally test using this idea for an
2441         activity/places app like ours where the real changes happen implicitly
2442         based on the history token/URL.
2443
2444 2012-01-01  Murray Cumming  <murrayc@murrayc.com>
2445
2446         Slight modification to *Mapper comments.
2447
2448         * src/main/java/org/glom/web/client/mvp/DataActivityMapper.java
2449         (DataActivityMapper)
2450         * src/main/java/org/glom/web/client/mvp/DocumentSelectionActivityMa
2451         pper.java
2452         * src/main/java/org/glom/web/client/mvp/TableSelectionActivityMappe
2453         r.java
2454         Remove comments mentioning GIN because they are just copied from 
2455         the example code and are apparently not helpful:
2456         http://groups.google.com/group/google-web-toolkit/msg/82f0098b20669a73
2457         Also change the mention of a class that is only in the example code.
2458
2459 2012-01-01  Murray Cumming  <murrayc@murrayc.com>
2460
2461         GwtTestOnlineGlom test: Minor changes.
2462
2463         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
2464         Avoid the long qualified class name and modify the comment 
2465         because it is now obvious to me that the mocked class is the only
2466         custom one created via GWT.create().
2467
2468 2012-01-01  Murray Cumming  <murrayc@murrayc.com>
2469
2470         Tests: Added the beginnings of a test using gwt-test-utils.
2471
2472         * pom.xml: Add dependencies on gwt-test-utils and easymock.
2473         * src/test/resources/META-INF/gwt-test-utils.properties: Add this file
2474         which tells gwt-test-utils what class will be tested.
2475         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
2476         Add a simple (but empty) test case. One class, used by the OnlineGlom
2477         class, is mocked so that it can be created. However, I am not sure 
2478         why only this class needs to be mocked.
2479
2480         Note that mockito seems more popular, and clearer, than easymock,
2481         but I have not got that working yet. It might be a matter of the 
2482         mockito version.
2483
2484         This test is run during mvn integration-test.
2485
2486 2011-12-31  Murray Cumming  <murrayc@murrayc.com>
2487
2488         Tests: Use junit4-style syntax instead of junit3-style.
2489
2490         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
2491         * src/test/java/org/glom/web/client/place/ListPlaceTest.java:
2492         * src/test/java/org/glom/web/shared/DataItemTest.java:
2493         Use the @Test annotation rather than relying on the test*() prefix.
2494         Also no longer implement TestCase, to avoid triggering support for 
2495         the junit3-way, which stops the annotations from working.
2496         Change the imports from import junit.framework.* to 
2497         import org.junit.*, which is apparently the new way.
2498
2499 2011-12-31  Murray Cumming  <murrayc@murrayc.com>
2500
2501         Added a test for ListPlace token parsing and creation.
2502
2503         * src/test/java/org/glom/web/client/place/ListPlaceTest.java:
2504         This is much the same as DetailsPlaceTest.
2505
2506         I wonder how we could test the other parts of the *Place API.
2507
2508 2011-12-30  Murray Cumming  <murrayc@murrayc.com>
2509
2510         DetailsPlace test: Also test getToken() and recreation via getPlace().
2511
2512         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
2513         testGetPlaceParameters(): Get the tokens from the DetailsPlace and 
2514         recreate it, testing the recreated DetailsPlace for the same parameter
2515         values.
2516
2517 2011-12-30  Murray Cumming  <murrayc@murrayc.com>
2518
2519         Use the surefire-report plugin.
2520
2521         * pom.xml: This generates a HTML report about the tests in 
2522         target/site/surefire-report.html
2523         when you do mvn surefire-report:report. It seems to be popular/normal.
2524
2525 2011-12-30  Murray Cumming  <murrayc@murrayc.com>
2526
2527         Added a test for DetailsPlace.
2528
2529         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
2530         Test the getPlace() token parsing.
2531
2532 2011-12-30  Murray Cumming  <murrayc@murrayc.com>
2533
2534         Added a first unit test.
2535
2536         * pom.xml: Add a test goal, and a dependency on junit in that scope.
2537         * src/test/java/org/glom/web/shared/DataItemTest.java:
2538         This is a silly test but it is just to get things started. Note that
2539         maven/junit finds the test because it looks in src/test by default.
2540
2541 2011-12-22  Ben Konrath  <ben@bagu.org>
2542
2543         Change charsetName to "UTF-8" when replacing line breaks.
2544
2545         JavaScript requires the charsetName to be "UTF-8". CharsetName values
2546         that work in Java (such as "UTF8") will not work when compiled to
2547         JavaScript.
2548
2549         This fixes a problem with multi-line details view fields that have hard
2550         line breaks. The "License Text" field on this page demonstrates the
2551         problem:
2552
2553         http://onlineglom.openismus.com/OnlineGlom/#details:document=debian_repository_analyzer&table=licenses&value=197
2554
2555         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
2556
2557 2011-12-22  Ben Konrath  <ben@bagu.org>
2558
2559         Fix another bug with related list navigation.
2560
2561         I've tested all the navigation buttons in all of the related lists
2562         so things should be good now.
2563
2564         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
2565
2566 2011-12-22  Ben Konrath  <ben@bagu.org>
2567
2568         Fix a crasher when refreshing the list view with the default table.
2569
2570         This crash will also happen when loading the list view with the default
2571         table from a link or bookmark.
2572
2573         * src/main/java/org/glom/web/client/activity/DetailsActivity.java: Go
2574         to the main document selection page when the document id hasn't been
2575         set.
2576         * src/main/java/org/glom/web/client/activity/ListActivity.java: Go to
2577         the main document selection page when the document id hasn't been
2578         set.
2579         * src/main/java/org/glom/web/client/place/DetailsPlace.java: Use empty
2580         values for the details place when the document id hasn't been set.
2581         * src/main/java/org/glom/web/client/place/ListPlace.java: Use empty
2582         values for the list place when the document id hasn't been set.
2583
2584 2011-12-21  Ben Konrath  <ben@bagu.org>
2585
2586         Protect against NPE when glom.document.locale is not in config.
2587
2588         This patch protects against an NPE when glom.document.locale is not in
2589         the config file. This NPE will also happen if glom.document.locale is
2590         commented out.
2591
2592         The patch also updates the error message to display the class name when
2593         the getMessage() returns null. This was happening when the NPE was
2594         thrown and I had "Configuration Error: null". If an NPE is encountered
2595         with this patch, "Configuration Error: NullPointerException " will be
2596         displayed.
2597
2598         This commit closes this bug:
2599
2600         https://bugzilla.gnome.org/show_bug.cgi?id=666669
2601
2602         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2603
2604 2011-12-20  Murray Cumming  <murrayc@murrayc.com>
2605
2606         Rename onlineglom.properties to onlineglom.properties.sample.
2607
2608         * src/main/resources/onlineglom.properties: Rename to:
2609         * src/main/resources/onlineglom.properties.sample:
2610         * src/main/resources/README: And add this file explaining that people
2611         should rename it back when deploying.
2612
2613 2011-12-20  Murray Cumming  <murrayc@murrayc.com>
2614
2615         Allow choosing the translation in the .properties file.
2616
2617         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
2618         init(): Read a glom.document.locale value from the configuration file 
2619         and call Glom's TransatableItem::set_current_locale() method.
2620         * src/main/resources/onlineglom.properties: Add a commented-out 
2621         example of this new setting.
2622
2623         It would be better to add &lang=de_DE to the URL, but the current 
2624         libglom API does not allow us to do this easily. I am working on that.
2625
2626 2011-12-19  Murray Cumming  <murrayc@murrayc.com>
2627
2628         Avoid a crash in parsing of token parameters.
2629
2630         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.j
2631         ava: getTokenParams(): Do not crash if a parameter has a key but no 
2632         value, and ignore parameters with neither.
2633
2634 2011-12-17  Murray Cumming  <murrayc@murayc.com>
2635
2636         History token building/handling: Improve use of token parameters.
2637
2638         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java 
2639         (HasSelectableTablePlace.Tokenizer): Add getTokenParams(String)
2640         and buildParamsToken(HashMap), for use by derived classes.
2641         Make the separator private because it is no longer be needed.
2642         * src/main/java/org/glom/web/client/place/DetailsPlace.java
2643         (DetailsPlace.Tokenizer.getToken): Use buildParamsToken()
2644         instead of manual string concatenation.
2645         (DetailsPlace.Tokenizer.getPlace): Use getTokenParams() instead 
2646         of hardcoded indices and awkward splitting code.
2647         * src/main/java/org/glom/web/client/place/ListPlace.java
2648         (ListPlace.Tokenizer.getToken): Use buildParamsToken()
2649         instead of manual string concatenation.
2650         (ListPlace.Tokenizer.getPlace): Use getTokenParams() instead 
2651         of hardcoded indices and awkward splitting code.
2652         This should fix bug #666420
2653
2654 2011-12-16  Murray Cumming  <murrayc@murrayc.com>
2655
2656         Fix a Navgiation->Navigation typo in the code.
2657
2658         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
2659         Rename processNavgiation() to processNavigation().
2660
2661 2011-12-16  Murray Cumming  <murrayc@murrayc.com>
2662
2663         Fix a seperator->separator typo in the code.
2664
2665         * src/main/java/org/glom/web/client/place/DetailsPlace.java
2666         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java
2667         * src/main/java/org/glom/web/client/place/ListPlace.java: Just a 
2668         misspelling.
2669
2670 2011-12-15  Ben Konrath <ben@bagu.org>
2671
2672         Cleanup some comments.
2673
2674         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2675
2676 2011-12-14  Ben Konrath <ben@bagu.org>
2677
2678         Replace \n with <br/> for multiline text in the details view.
2679
2680         Vertical scrollbars are added when needed as well.
2681
2682         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
2683
2684 2011-12-14  Ben Konrath <ben@bagu.org>
2685
2686         Specify the font for document selection links.
2687
2688         * src/main/webapp/style.css:
2689
2690 2011-12-14  Ben Konrath <ben@bagu.org>
2691
2692         Fix bouncy CellTable while paging.
2693
2694         This doesn't currently work with related list tables in unselected
2695         Notebook tabs.
2696
2697         * src/main/java/org/glom/web/client/ui/list/ListTable.java
2698
2699 2011-12-14  Ben Konrath <ben@bagu.org>
2700
2701         Revamp the appearance of the document selection page.
2702
2703         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.java:
2704         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.ui.xml:
2705         * src/main/webapp/style.css:
2706
2707 2011-12-13  Ben Konrath <ben@bagu.org>
2708
2709         Set navigation button column to the smallest size possible.
2710
2711         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
2712
2713 2011-12-13  Ben Konrath <ben@bagu.org>
2714
2715         Change OpenButton nomenclature to NavigationButton.
2716
2717         Using NavigtionButton makes things more generic. Classes, methods and
2718         variables have been changed.
2719
2720         This is a rename-only refactor.
2721
2722         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2723         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2724         * src/main/java/org/glom/web/client/ui/cell/NavigationButtonCell.java:
2725         Renamed from OpenButtonCell.
2726         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2727         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
2728         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2729
2730 2011-12-12  Ben Konrath <ben@bagu.org>
2731
2732         Remove unnecessary String argument in RelatedListTable and ListViewTable.
2733
2734         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2735         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2736         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2737         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2738
2739 2011-12-12  Ben Konrath <ben@bagu.org>
2740
2741         Update variable names and comments.
2742
2743         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2744         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2745
2746 2011-12-12  Ben Konrath <ben@bagu.org>
2747
2748         Properly initialize numNonEmptyRows variable to zero.
2749
2750         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2751         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2752
2753 2011-12-05  Ben Konrath  <ben@bagu.org>
2754
2755         Add latest mockup with HTML tables.
2756
2757         Features of this mockup:
2758
2759         -> HTML table for flowtable
2760         -> HTML table for flowtable column
2761         -> Example of how related lists would look
2762         -> Not using text entries for data items
2763
2764         The current version of Online Glom doesn't use HTML tables for the
2765         flowtable columns.
2766
2767         This mockup has been sent to the glom-devel mailing list but it's good
2768         to have it here as well.
2769
2770         * mockups/details-view-html-tables.html:
2771
2772 2011-12-05  Ben Konrath  <ben@bagu.org>
2773
2774         Remove unnecessary getPrimaryKeyField() method.
2775
2776         getPrimaryKeyFieldForTable(String) has been renamed to
2777         getPrimaryKeyField(String).
2778
2779         * src/main/java/org/glom/web/server/database/DBAccess.java:
2780         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
2781         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2782
2783 2011-12-05  Ben Konrath  <ben@bagu.org>
2784
2785         Add string representation of TypedDataItem value to conversion error message.
2786
2787         * src/main/java/org/glom/web/server/Utils.java: Logging the error
2788         message was extracted into its own method to avoid duplication.
2789
2790 2011-12-05  Ben Konrath  <ben@bagu.org>
2791
2792         Add type checking to navigation primary key value creation.
2793
2794         Create navigation primary key only if the expected type from the Glom
2795         document matches the type returned by the SQL query.
2796
2797         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2798
2799 2011-12-05  Ben Konrath  <ben@bagu.org>
2800
2801         Rename a couple of variables in RelatedListNavigation.
2802
2803         This is a rename-only refactor.
2804
2805         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2806
2807 2011-12-05  Ben Konrath  <ben@bagu.org>
2808
2809         Move getListLayoutGroup() into getListViewLayoutGroup().
2810
2811         This removes getListLayoutGroup(). It was only being called by
2812         getListViewLayoutGroup().
2813
2814         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
2815
2816 2011-12-05  Ben Konrath  <ben@bagu.org>
2817
2818         Remove check for LayoutItem_Portal in list table method.
2819
2820         This check is no longer necessary because the method isn't being used
2821         to create the LayoutItemPortal DTO.
2822
2823         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
2824
2825 2011-12-05  Ben Konrath  <ben@bagu.org>
2826
2827         Properly support related list navigation.
2828
2829         Navigation from the "Repository Analyzer -> Package Scans ->
2830         Dependencies" related table wasn't working because the primary key for
2831         related tables wasn't being set properly. This commit fixes the
2832         problem.
2833
2834         * src/main/java/org/glom/web/server/ConfiguredDocument.java: Don't use
2835         getListLayoutGroup() to create the LayoutItemPortal DTO. This method
2836         doesn't set the primary key properly for related list tables.
2837         * src/main/java/org/glom/web/server/database/DBAccess.java: Add table
2838         name parameter to getPrimaryKeyLayoutItemField(). This makes the method
2839         useful for getting the primary key for list view tables and for related
2840         list tables.
2841         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
2842         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
2843         Move code to set the primary key for the table from the abstract
2844         ListDBAccess class to ListViewDBAccess as it's only correct for list
2845         view tables.
2846         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
2847         Properly add primary key to related list tables.
2848
2849 2011-12-02  Ben Konrath  <ben@bagu.org>
2850
2851         Properly set the horizontal alignment of fields.
2852
2853         This fix is for both the list tables and the details view.
2854
2855         * src/main/java/org/glom/web/server/ConfiguredDocument.java: Use
2856         LayoutItem_WithFormatting.get_formatting_used_horizontal_alignment(boolean)
2857         to set the horizontal alignment of fields.
2858
2859 2011-12-02  Ben Konrath  <ben@bagu.org>
2860
2861         Display currency codes in the details view.
2862
2863         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
2864
2865 2011-12-02  Ben Konrath  <ben@bagu.org>
2866
2867         Avoid duplicate JNI call.
2868
2869         JNI is not as efficient as pure Java and this is an easy (and small)
2870         optimization.
2871
2872         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
2873         Use previously retrieved value for whereClauseToTableName instead of
2874         getting it again.
2875
2876 2011-12-02  Ben Konrath  <ben@bagu.org>
2877
2878         Rename a couple of variables in RelatedListNavigation.
2879
2880         This is a rename-only refactor.
2881
2882         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2883
2884 2011-12-02  Ben Konrath  <ben@bagu.org>
2885
2886         Indicate clearly that a mismatched primary key type is a bug.
2887
2888         * src/main/java/org/glom/web/server/Utils.java: Change log l