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