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