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