On Wed, Aug 5, 2009 at 19:30, Asiri
Rathnayake<[email protected]> wrote:
> Hi,
>
> On Wed, Aug 5, 2009 at 6:05 PM, Thomas Mortagne
> <[email protected]>wrote:
>
>> On Tue, Aug 4, 2009 at 18:53, Asiri
>> Rathnayake<[email protected]> wrote:
>> > Hi,
>> >
>> > I would like to introduce a MacroCategoriesManager component for managing
>> > macro categories. We already have a MacroManager component in place but I
>> > think seperating out the concern of macro categories management into a
>> > seperate component creates a more extensible design. Following is a basic
>> > outline for implementing MacroCategoriesManager component:
>> >
>> > * Introduce MacroDescriptor::getDefaultCategory() method which returns a
>> > String. The purpose of this method is to allow macro author to supply a
>> > default category under which his macro should be listed. This method can
>> > virtually return any string.
>> >
>> > Following three steps I'm not very confident about:
>> >
>> > * Duplicate each existing constructor in AbstractMacro and add a
>> 'category'
>> > parameter.
>> >
>> > * Make AbstractMacroDescriptor constructor accept a 'category' parameter.
>> >
>> > * Duplicate each existing constructor in DefaultMacroDescriptor and add a
>> > 'category' parameter.
>> >
>> > If a macro author does not specify a default category, the "Other"
>> category
>> > will be used.
>>
>> Where do you plan to decide for "Other" string ? IMO it's should not
>> be the default value of the field containing the category in
>> AbtractMacro, you should know that a macro did not defined any
>> category to let the user of the api decide what it does with macro
>> without category, the way we do in the WYSIYWG is just one way, you
>> could decide that a macro without category is not listed or is listed
>> visualy at the same level of the categories etc... At rendering midule
>> level you just need to know that a macro does not have any category,
>> the choice of the default category is made by the presentation side.
>>
>
> The other sensible way to indicate a macro without a category is to return
> "null" in getCategory() method. But the problem with this is it is hard to
> expose such macros through MacroCategoriesManager in a sensible way:
>
> * We could have a Set<String> getMacrosWithoutCategory() method
>
> * Or we can allow client code to pass "null" as an argument to
> getMacroNames(String category) method.
>
> IMO the second method is not explicit enough and the first method seems like
> an overkill.
>

I think both solutions are better than some random String which make
impossible to know that a macro does not have category.

> WDYT?
>
> Thanks.
>
> - Asiri
>
>
>>
>> Just to make sure since it's not very clear in your proposal.
>>
>> >
>> > * Introduce the MacroCategoriesManager component with following methods:
>> >
>> > List<String> getMacroCategories()
>> >
>> > List<String> getMacroNames(String category)
>> >
>> > List<String> getMacroNames(String category, Syntax syntax)
>>
>> Why not return a list of Macro instead of just the names ? It would be
>> more consistent with MacroManager.
>>
>> >
>> > Each of these methods will give priority to admin configured macro
>> > categories. That is they will discard
>> MacroDescriptor::getDefaultCategory()
>> > return value if the wiki admin has configured a different  category for a
>> > given macro.
>> >
>> > * A macro category can be overwritten by specifying the configuration
>> > parameter "org.xwiki.rendering.macro.<macro_name>.category" using xwiki's
>> > configuration mechanism (Ex. xwiki.properties).
>> >
>> >
>> > This is my initial design idea, please let me know what you think.
>> >
>> > Thanks.
>> >
>> > - Asiri
>> > _______________________________________________
>> > devs mailing list
>> > [email protected]
>> > http://lists.xwiki.org/mailman/listinfo/devs
>> >
>>
>>
>>
>> --
>> Thomas Mortagne
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>



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

Reply via email to