On Friday 10 September 2004 18:07, Stephen McConnell wrote:
> > -----Original Message-----
> > From: Rajamani Saravanan [mailto:[EMAIL PROTECTED]
> > It will be really simple if I can do this without embedding Merlin
> > into my application and instead asking it to simply launch all blocks
> > found in a folder - BUT AFTER login is through...
>
> No problem - to do this what you want is a "facility".  Instead of
> embedding Merlin (and worrying about all of that stuff) just create a
> component that request the containing component model via context. For
> example - you facility would be the only component within the initial
> block but with a reference to the enclosing containment model you can
> dynamically populate your container with anything you want based on
> whatever logic you want.

> With a reference to the containment model - you're in business.
Except he might not know what the business is...

What Steve is trying to say; :o)

1.  Get the reference to the <container> where the "start" component is 
located by,
/** @avalon.entry key="urn:composition:containment.model"
 *    type="org.apache.avalon.composition.model.ContainmentModel"
 */
public void contextualize( Context ctx )
{
    m_Model = (ContainmentModel) 
        ctx.get( "urn:composition:containment.model" );
}
Technically (probably considered bad practice) you can also retrieve any 
container within the application, by getModel(), for instance getModel( "/" 
), returns the root container (although it might be the root application 
container in the future).

2. Any point later in time, you can "load" another container/block dynamically 
by doing;
   m_Model.addContainmentModel( blockUrl );
or
   m_Model.addContainmentModel( blockUrl, configUrl );
This will behave as if those blocks were "launched" at Merlin startup.

3. And you can equally do the opposite, remove the block later.


Cheers
Niclas
-- 
   +------//-------------------+
  / http://www.bali.ac        /
 / http://niclas.hedhman.org / 
+------//-------------------+


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to