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