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