Yeah. Erik, I see your point for the general case, but Alberto's case
- which I have myself sometimes too - is that you only use a panel
because you have to, but you want the user to view your component as
one of it's embedded elements (in his case the TextField). I think
that's a valid case.
So, if there are no objections, I'll remove that final later today.
Eelco
On 11/10/06, Alberto Bueno <[EMAIL PROTECTED]> wrote:
>
>
> In my case, I have created a TextField component, that is a panel that
> contains internally a TextField wicket component. Now, if I add the method
> addToField, the user will have two methods:
>
> TextField.add(IBehavior behavior)
> TextField.addToField(IBehavior behavior)
>
> I think that this case will be more confused than if I have only one
> method:
>
> TextField.add(IBehavior behavior){
> textField.add(behavior);
> }
>
> I don't want to add any behavior in the panel, I only want to add
> behaviors in the field. Why do I have to create another method, that it will
> be more confused for the user?
>
> This is the same situation that when we use the IAlternateParent. We add
> the component in a component, but the real parent is another...
>
>
>
>
> I am definitely /not/ against removing final, but it is not going to
> work (not in general that is).
>
> Alberto's defense is that the user thinks he is working with a field,
> while in reality he is working with a panel. I assume that Alberto is
> using a panel because he wants some extra functionality around the
> field, say a button or a link. Anyway, now the user adds some behavior,
> say 'new SimpleAttributeModifier("style",
> "background-color: #d91")'.
> Now in the described setup only the field will get the new background,
> while the user probably also wanted to color the whitespace around it.
> As a user I would find this pretty confusing.
>
> In short: there is no way of hiding the fact that the component you are
> offering to a user is a composite, if you also want the user to have
> access to the inner components.
>
> So my solution would be to either expose the inner field through a
> getter, or write the addToField method that was discussed earlier.
>
> Regards,
> Erik.
>
>
>
> Eelco Hillenius schreef:
>
>
> I could definitively live with removing final there. And maybe some
> other methods too.
>
> Anyone against removing final from add(IBehavior)?
>
> Eelco
>
>
> On 11/9/06, Alberto Bueno <[EMAIL PROTECTED]> wrote:
>
>
>
> Hi,
> now I have this solution, but I don't like it for you reasons:
>
> - Now I have two methods to add a Behavior: add(IBehavior) and
> addToField(IBehavior), and for the users can be confuse.
> - I want to have a transparent component. The user doesn't have to know
> that he is working with a panel. This is working with a "field". If I have:
>
> MyField extends Panel{
> public MyField(MarkupContainer parent, String id){
> super(parent, id);
>
> new TextField(this, "myField");
> }
> }
>
> For the user, MyField is a form Component, and if he add a new Behavior,
> the user thinks that the behavior is for the field, not for the panel.
>
> This is the idea...
>
>
>
>
>
> Why don't you write in your panel: void addToField(Behavior b) {...}?
> There is no need to corrupt the meaning of Wicket methods ;)
>
> Regards,
> Erik.
>
>
> Alberto Bueno schreef:
>
>
>
>
> Hi,
>
> I want to overwrite the add(IBehavior) method of the component, but this
> method is final.
> I want to use the same idea of AlternateParent when we add a new component.
> I have a panel, and I want to add a behavior in the panel, but the
> behavior is used in a field
> component that is in the panel.
>
> I don't want to say:
> panel.get("myField").add(new MyBehavior());
>
> I want to say:
>
> panel.add(new MyBehavior());
>
> and in the add() method of the panel say:
>
> public Component add(final IBehavior behavior)
> {
> get("myField").add(behavior);
> }
>
> Any idea to implement this functionality?
>
> Thanks
>
>
>
>
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job
> easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>
>
>
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user