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