Please change javadoc as well if you remove final (describe in short the use case). In general I'm very very careful in opening things up.
Juergen On 11/10/06, Eelco Hillenius <[EMAIL PROTECTED]> wrote: > 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 > > Wicket-user@lists.sourceforge.net > > 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 > Wicket-user@lists.sourceforge.net > 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 Wicket-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-user