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