Try to view the macro parameters listed as a boolean expression. For the
include macro we would have:
(page XOR (reference AND type) XOR document) OR section OR context
* the parentheses define the parameter groups
* the boolean operators specify the relation between the members of a group
We then need to express this using Java annotations. In any case, this is a
**tree** structure (not a flat structure).
On Fri, Nov 9, 2018 at 12:30 PM Adel Atallah <adel.atallah(a)xwiki.com> wrote:
On Fri, Nov 9, 2018 at 11:20 AM Marius Dumitru Florea
<mariusdumitru.florea(a)xwiki.com> wrote:
On Wed, Nov 7, 2018 at 5:34 PM Adel Atallah <adel.atallah(a)xwiki.com>
wrote:
> Hello everyone,
>
> So what we thought about with Vincent for implementing the "concept of
> aliases or groups" would be to actually have two new annotations that
> we would use on macro properties.
> The first one is a "Group" annotation which is meant to indicate that
> some properties are part of the same group, obviously.
> The second is an "Alternative" annotation which is meant to indicate
> that only one property / group of properties can be used (among the
> ones that are part of the alternative).
> Here is an example:
> We want for the Include macro to be able to specify either:
> the "reference" and "type" parameters
> or
> the "page" parameter
> For that, we will change the IncludeMacroParameters java class like
this:
@Alternative("reference")
@Group("entityReference")
public void setReference(String reference)
@Alternative("reference")
@Group("entityReference")
public void setType(EntityType type)
@Alternative("reference")
public void setPage(String page)
In the WYSIWYG side, we will only be able to specify either the
"reference" and the "type" or the "page" parameter.
I think it would make more sense, at least in this case, to have the
alternative as an attribute of the group, because semantically the
"entityReference" group is an alternative to the page parameter. You
can't
say that the type parameter alone is an
alternative to the page
parameter.
The @Group annotation is clear. No doubt about it. I'm not sure about
the @Alternative annotation. I'm thinking that the "alternative" is also
a
group, where only one item from the group can be
used, which could be
expressed with an attribute of the @Group annotation.
Thanks for the suggestion, but how can it be used? If I retake my previous
example, will it be:
@Group(name = "entityReference", alternative = "reference")
public void setReference(String reference)
@Group(name = "entityReference", alternative = "reference")
public void setType(EntityType type)
@Group(name = "page", alternative = "reference")
public void setPage(String page)
?
>
> WDYT?
>
> Thanks,
> Adel
>
> On Tue, Sep 25, 2018 at 11:51 AM Marius Dumitru Florea
> <mariusdumitru.florea(a)xwiki.com> wrote:
> >
> > On Wed, Sep 19, 2018 at 4:31 PM Vincent Massol <vincent(a)massol.net>
> wrote:
> >
> > >
> > >
> > > > On 19 Sep 2018, at 14:47, Adel Atallah
<adel.atallah(a)xwiki.com>
> wrote:
> > > >
> > > > On Wed, Jul 18, 2018 at 5:00 PM Vincent Massol <
vincent(a)massol.net>
> > > wrote:
> > > >>
> > > >>
> > > >>
> > > >>> On 5 Jul 2018, at 12:06, Vincent Massol
<vincent(a)massol.net>
> wrote:
> > > >>>
> > > >>>
> > > >>>
> > > >>>> On 4 Jul 2018, at 12:07, Thomas Mortagne <
> thomas.mortagne(a)xwiki.com>
> > > wrote:
> > > >>>>
> > > >>>> Here are more details on the actual use case we need to
support:
> > > >>>>
> > > >>>> In include/Display macro either you set:
> > > >>>>
> > > >>>> * "reference" and "type" (which
default to DOCUMENT)
> > > >>>> * or you set “page"
> > > >>>
> > > >>> Globally I think we need to add 3 concepts to macro
parameter
> > > descriptor:
> > > >>>
> > > >>> 1) The concept of “deprecated” parameter. For example for
> “document”
> > > in the include macro.
> > > >>> 2) The concept of aliases or groups, i.e the ability to list
> > > parameters that are mutually exclusive. Example: reference + type
vs
> page
> > > for display/include macros. This would mean that in the Macro
Dialog
> UI if
> > > you select one of those the other gets unselected/cleared out (you
> cannot
> > > have mutually exclusive params have values).
> > > >>> 3) The concept of Advanced parameters. For example, we should
put
> > > reference + type as advanced
parameters so that they are not shown
to
> the
> > > user by default (and so that the page parameter is more
highlighted).
> Users
> > > would need to click on Advanced to see advanced parameters. I think
> we’re
> > > doing something automatic today (I don’t remember the details) to
try
> to
> > > hide some parameters but we should probably review this.
> > > >>>
> > > >>> WDYT?
> > > >>
> > > >> Ping!
> > > >>
> > > >> Do we agree about this? If we do we can then create jira issue
> about it
> > > and take it for implementation.
> > > >
> > > > +1, I can create the jira issue if it's ok.
> > >
> > > Please do :)
> > >
> > >
> >
> > > @Marius: Ok for you?
> > >
> >
> > Yes.
> >
> >
> > >
> > > thanks
> > > -Vincent
> > >
> > > [snip]
> > >
> > >
> > >
>