This morning, I checked in a bunch of changes that add support for kind extents at the data model level. A kind extent is defined as the set of all items of a given kind, recursive to sub-kinds or not.

By default, a kind extent doesn't do much but there are several devices in the data model and Chandler code that leverage kind extents today to offer the following services:

 - If all you're interested in is knowing when an item of a given kind is
   created, deleted, or stamped (ie, its kind changed), then you should use
   the new item.watchKind(kind, methodName) API that replaces the now
   defunct 'schema' monitor.
   'methodName' should be a method of 'item' with this signature:
       def methodName(op, kind, other):
           where 'op' is either 'add' or 'remove' which means that 'other'
           became an instance of that 'kind' or a sub-kind thereof or is about
           to no longer be an instance of that 'kind' or a sub-kind thereof.

 - If all you're interested in is the above + have these notifications
   filtered or combined in some way, then use a KindSet and combine it with
   other abstract sets to suit your needs.

 - If what you're interested in is the above + have these notifications
   participate in the Collection framework from parcels.osaf.pim.collections
   and be notified - when the UI is active - of changes to attributes of items
   of a given kind, then use a KindCollection, combining it, maybe, with other
   collections from that framework.

Andi..
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev

Reply via email to