On Feb 20, 2009, at 1:35 PM, Dan Miron wrote:

> Guys, this is what I'm thinking of after reading your proposals:
> - the macro to look like {{icon name="smile" /}}, thus having a  
> mapping
> between the name parameter and the image file
> - having a base set of icons from the silk icon set
> - allowing plugging in other icon sets, too

+1

> So, there you have a sketch on how the macro would look like:
>
> class IconMacro implements Macro {
>    List<Block> execute(IconMacroParameters parameters) {
>       Map resources = getResourcesMap();
>       return new ImageBlock(resources.get(parameters.getName()));
>    }

I'd rather use a IconResourceSet component.
You create one implementation called SilkIconResourceSet and register  
it with a "silk" hint.

You make IconMacro impelment Initializable, Composable and in  
initialize() you lookup all components implementing IconResourceSet  
and you build your map with them.

-Vincent

>    Map getResourcesMap() {
>       // uses IconResourceDiscoverer to dinamically build the icon set
> and the mapping between names / icon URLs
>    }
> }
>
> class AbstractIconResource {
>    public abstract Map<String, URL> getResourcesMap();
> }
>
> class DefaultIconResource extends AbstractIconResource {
>    // gets the the default icon set from silk
>    // .....................
> }
>
> //singleton class
> class IconResourceDiscoverer {
>    public Map<String, URL> loadIcons() {
>       foreach (Class c which extends AbstractIconResource) {
>          c.getResourcesMap();
>       }
>       return all the grabbed resources;
>    }
> }
>
>
> - optionally, we can put the IconResourceDiscoverer and the
> DefaultIconResource in a component if we're going to need using  
> icons in
> other features too.
> - if we want to take care of the ambiguities (e.g. multiple icons with
> the same name located in different icon sets) we can add an optional
> parameter to the macro called "iconSet" or how else you prefer which  
> to
> allow explicitly specifying the icon set (the default one being Silk)
>
> Please tell me what you think, 'cause i'm keen on starting working  
> on it
> :-)
>
> Tnx,
> Dan

Thanks
-Vincent
http://xwiki.com
http://xwiki.org
http://massol.net






_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to