[Dev] automatically hooking into the sidebar

John Anderson john at osafoundation.org
Wed Feb 2 14:39:29 PST 2005


Hi Alec:

This is just one of many situations where we need to have a mechanism to 
"register" something declared in a parcel with the system in a way so 
that it gets discovered.

As it turns out there are lots of ways to do this. The "kind query" 
scheme you're proposing is just one way we've discussed doing it. 
Another interesting possibility we've discussed is using bidirectional 
references on ref collections, e.g. assigning an attribute hooks the a 
corresponding reference on the other end of a system collection that can 
be used to find the registered things. Another possibility we've 
discusses is executing code at parcel load time -- which seems not quite 
as nice as the two previous data driven schemes. Finally, none of these 
deal with the possibility of allowing the user to participate in 
choosing between registered alternatives, e.g. choosing between 
alternative viewers for a particular datatype.

I think in the case of the sidebar, however,  it would be nice to 
register a new item collection as well as an optional viewer (today we 
only have two, table and calendar). However, all this is beyond the 
scope of 0.5.

This is clearly an area that needs to be fleshed out post 0.5, with 
input from UI, design and by considering our other registration needs, 
so I think it's premature to add it as described without further discussion.

John

Alec Flett wrote:

> So I've been working on a system for chandler extensions to "plug in" 
> to the sidebar and I'm curious what people think of my scheme. Here's 
> how it works:
>
>    * I added a new Kind, <SidebarCollection> that derives directly from
>      <ItemCollection>
>    * I added a rule to the <ItemCollection
>      itsName="sidebarItemCollection"> - see below....
>
>  <contentModel:ItemCollection itsName="sidebarItemCollection">
>    <_inclusions itemref="content:allItemCollection"/>
>    <_inclusions itemref="content:inItemCollection"/>
>    <_inclusions itemref="content:outItemCollection"/>
>    <_inclusions itemref="content:CalendarView"/>
> /    *<!-- this allows extensions to hook into the sidebar -->
>    <_rule value="for i inevery 
> '//parcels/osaf/framework/blocks/SidebarCollection' where True"/>*
> /  </contentModel:ItemCollection>
>
>    * For ZaoBao, what I was able to do was make its type derive from
>      <SidebarCollection> as follows:
>
>  <Kind itsName="RSSChannel">
>    <superKinds itemref="content:ContentItem"/>
> /*    <superKinds itemref="docSchema:SidebarCollection"/>*/
>   ...
>
> Now, every time ZaoBao makes an RSSChannel, that object is also a 
> SidebarCollection. the RSS Channel need only populate itself as though 
> it were an ItemCollection, and its items will appear in the summary view.
>
> Now I don't know enough about queries to know if this is really a 
> smart way of searching the repository for items that want to hook into 
> the UI... is there a better way than creating a new Kind?
>
> Alec
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "Dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/dev



More information about the Dev mailing list