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