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