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