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