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