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