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