From: Anjo K. <kr...@lo...> - 2004-06-22 11:25:46
|
All, after getting fed up one time too many with the very obscure code in the existing relationship selection components, I finally sat down and consolidated things a bit. They are now even worse named that before, in that you can select any kind of object from an array and push it into any other kind of object, so they don't really deal with relationships anymore. On the other hand, when used in "dictionary mode", it was updating a displayGroup query array, so it wasn't only for relationship management anyway. The new thing is that you provide a possibleChoices binding and do *not* need to set all the other keys like sourceEntityName, destinationEntityName etc. instead of the list getting created by an array datasource constructed from the possibleChoices, this list is used directly (after localInstanceing the objects). So now you can bind - say - an array of strings ("foo", "bar", "baz") or more complex value objects as the choices and set them in an attribute on the object supplied while still having the means to define UI mode, columns etc. I didn't make this change lightly, as these components were probably the best-tested in all of Wonder. However, from my testing there seems nothing broken so far and I think that much improved readability should be worth it. Noteable caveats are that the components must now be non-synching and as the values will be cached, can't change in one RR loop. And I removed all the _localXXX() set_private() etc, so if your subclasses depend on them, you need to fix this. Fixes would be mostly made via removing _local from the method call. David, could you please check out if the code I removed from the update methods is still needed? I think it's an error to lock ECs there because they should be locked at the page level... Cheers, Anjo |