+1 for implementation mixin. Such an implementation with respect both
arguments.

On Sun, Aug 14, 2011 at 11:40 PM, Bob Harner <bobhar...@gmail.com> wrote:
> Ah, an implementation mixin. I forgot about those. I withdraw my
> objection if the mixin can be made to work this way.
>
> On Sun, Aug 14, 2011 at 7:56 AM, Andreas Andreou <andre...@gmail.com> wrote:
>> Hi, on my way out so just a quick reply...
>>
>> If this is a mixin (and i'm thinking something that uses
>> Tapestry.Initializer.updateZoneOnEvent and has 2 parameters, zone and
>> eventName)
>> then it can be applied by default in all AbstractField subclasses
>> (the way that the RenderDisabled mixin applies to AbstractTextField 
>> subclasses)
>>
>> So, users will still just write zone="myZone"
>>
>> And of course, they'll be able to reuse the mixin in their own components.
>>
>>
>> On Sun, Aug 14, 2011 at 12:07, Igor Drobiazko <igor.drobia...@gmail.com> 
>> wrote:
>>> Whether you implement that feature as a mixin or as a component's parameter
>>> is probably a matter of taste. But I have two concerns implementing about a
>>> mixin:
>>>
>>> 1) I think everybody will agree that inconsistent API sucks. If you are used
>>> to use zone parameter for ajaxifying  ActionLink, Form, Select, etc, you
>>> would expect the Checkbox component to behave same. Having a consistent API
>>> is much more important that the fact that "zone is orthogonal to the
>>> core components'
>>> functionality".
>>>
>>> 2) Currently, when I need to explain somebody how to ajaxify a component it
>>> tell him to use zone parameter. Using this parameter is very simple. Even
>>> Tapestry beginners are happy with it. In the last 8 months I teached a lot
>>> of non-Java developers. They start to ask about Ajax after a couple of hours
>>> using Tapestry. In order to get started with Ajax, they just need to learn
>>> what is a zone and how to connect it to a component, such as ActionLink.
>>> That's all.
>>>
>>> 3) Now imagine how that would change if you would need to use mixins: First
>>> of all, you would need to use two parameters for a
>>> component(t:mixins="FooMixin" and FooMixin.zone="myZone"). Using just
>>> zone="myZone" is much more simple. Over overcomplicating things? Now let's
>>> try to explain how to ajaxify a component to a Tapestry beginner. You tell
>>> him about using FooMixin. Oh, wait. You need to explain the mixin concept
>>> first. Not that easy for a Tapestry beginners. I'm pretty sure that even
>>> advanced users don't feel comfortable about mixins. That's just reality.
>>>
>>> Much as I like mixins, I strongly believe we should not use the concept in
>>> this case.
>>>
>>> On Sat, Aug 13, 2011 at 4:18 PM, Andreas Andreou <andre...@gmail.com> wrote:
>>>
>>>> I'm thinking that zone (and ajax) is orthogonal to the core
>>>> components' functionality. And
>>>> that's exactly where mixins are supposed to be good at.
>>>>
>>>> Now that doesn't mean that those components cannot directly offer the
>>>> zone parameter
>>>> to their users (this can still be the case) - it's just they will have
>>>> implemented that through
>>>> a mixin.
>>>>
>>>> The context parameter of ActionLink, EventLink was implemented through
>>>> inheritance
>>>> (in the way AbstractComponentEventLink is used) so i'm not sure if
>>>> it's a good counter-case
>>>> here.
>>>>
>>>>
>>>> On Sat, Aug 13, 2011 at 11:43, Igor Drobiazko <igor.drobia...@gmail.com>
>>>> wrote:
>>>> > -1 for implementing it as a mixin. We should keep consisten API for
>>>> > components. Almost every component has a zone parameter. Why should Radio
>>>> > and Checkbox behave different?
>>>> >
>>>> > Following this idea we should also have implemented context parameter of
>>>> > ActionLink, EventLink, etc as a mixin but we didn't. Why? Just because it
>>>> > doesn't make sense. Same for the current patch.
>>>> >
>>>> > IMHO, the patch should be applied as it is. We shouldn't use mixins just
>>>> > because we can. The zone parameter is definitely a part of the component.
>>>> >
>>>> > On Sat, Aug 13, 2011 at 10:30 AM, Denis Stepanov
>>>> > <denis.stepa...@gmail.com>wrote:
>>>> >
>>>> >> > I see the implementation of both very similar: almost just JavaScript,
>>>> >> listen to a change event and use ZoneManager to update a zone passing a
>>>> >> value as context (the selected value in Select, true or false in
>>>> Checkbox
>>>> >> and Radio, select value for RadioGroup). The JavaScript code would
>>>> figure
>>>> >> out what to do based on the type of HTML form component (or any
>>>> component
>>>> >> implementing ClientElement instance) in which the mixin was applied. We
>>>> >> could even have a generic ZoneUpdater mixin that updates a zone and that
>>>> >> could be used in any component or HTML element (in this case, the Any
>>>> >> component should be used).
>>>> >>
>>>> >> I Agree now :). It would be better to have to have a ZoneUpdater mixin
>>>> even
>>>> >> though I still think that one param is more lazy dev friendly :).
>>>> >>
>>>> >> > I haven't seen your patches, though.
>>>> >>
>>>> >>
>>>> >> I will try to implement it.
>>>> >>
>>>> >> Denis
>>>> >>
>>>> >> On 12.8.2011, at 22:30, Thiago H. de Paula Figueiredo wrote:
>>>> >>
>>>> >> > On Fri, 12 Aug 2011 15:49:05 -0300, Denis Stepanov <
>>>> >> denis.stepa...@gmail.com> wrote:
>>>> >> >
>>>> >> >> I understand mixin concept and code separation but in this case I
>>>> don't
>>>> >> think we need discuss so much about a few lines of code.
>>>> >> >
>>>> >> > I disagree. :)
>>>> >> >
>>>> >> >> We can also discuss that Autocomplete should be somehow wired with
>>>> all
>>>> >> that onchange actions because it does the same thing.
>>>> >> >
>>>> >> > I'm not following you here. I just presented Autocomplete as something
>>>> >> that could be implemented inside the component but it was decided that
>>>> it
>>>> >> was best implemented as a mixin. IMHO that's the approach we should
>>>> follow.
>>>> >> >
>>>> >> >> IMHO mixin is too abstract for two different form components.
>>>> >> >
>>>> >> > I see the implementation of both very similar: almost just JavaScript,
>>>> >> listen to a change event and use ZoneManager to update a zone passing a
>>>> >> value as context (the selected value in Select, true or false in
>>>> Checkbox
>>>> >> and Radio, select value for RadioGroup). The JavaScript code would
>>>> figure
>>>> >> out what to do based on the type of HTML form component (or any
>>>> component
>>>> >> implementing ClientElement instance) in which the mixin was applied. We
>>>> >> could even have a generic ZoneUpdater mixin that updates a zone and that
>>>> >> could be used in any component or HTML element (in this case, the Any
>>>> >> component should be used).
>>>> >> >
>>>> >> > I haven't seen your patches, though.
>>>> >> >
>>>> >> >> Select component already has a zone parameter
>>>> >> >
>>>> >> > That's my point: it shouldn't have a zone parameter and IMHO we
>>>> shouldn't
>>>> >> propagate this error to any other component.
>>>> >> >
>>>> >> >> The question is should other form components like Checkbox support
>>>> >> similar behaviour using same approach simply by binging a zone
>>>> parameter?
>>>> >> >
>>>> >> > I don't think so.
>>>> >> >
>>>> >> > --
>>>> >> > Thiago H. de Paula Figueiredo
>>>> >> > Independent Java, Apache Tapestry 5 and Hibernate consultant,
>>>> developer,
>>>> >> and instructor
>>>> >> > Owner, Ars Machina Tecnologia da Informação Ltda.
>>>> >> > http://www.arsmachina.com.br
>>>> >>
>>>> >>
>>>> >> ---------------------------------------------------------------------
>>>> >> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
>>>> >> For additional commands, e-mail: dev-h...@tapestry.apache.org
>>>> >>
>>>> >>
>>>> >
>>>> >
>>>> > --
>>>> > Best regards,
>>>> >
>>>> > Igor Drobiazko
>>>> > http://tapestry5.de
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>> Andreas Andreou - andy...@apache.org - http://blog.andyhot.gr
>>>> Apache Tapestry PMC / http://chesstu.be owner
>>>> Open Source / JEE Consulting
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
>>>> For additional commands, e-mail: dev-h...@tapestry.apache.org
>>>>
>>>>
>>>
>>>
>>> --
>>> Best regards,
>>>
>>> Igor Drobiazko
>>> http://tapestry5.de
>>>
>>
>>
>>
>> --
>> Andreas Andreou - andy...@apache.org - http://blog.andyhot.gr
>> Apache Tapestry PMC / http://chesstu.be owner
>> Open Source / JEE Consulting
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: dev-h...@tapestry.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: dev-h...@tapestry.apache.org
>
>



-- 
Regards

Taha Hafeez Siddiqi (tawus)
http://tawus.wordpress.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to