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