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