imho more reusable if you just do this
class defaulttextmodel extends abstractreadonlymodel {
private final imodel delegate;
private final string default;
public defaulttextmodel(string default, imodel delegate) {
this.default=default;this.delegate=delegate; }
public object getobject() { String s=delegate.getobject(); return (
strings.isempty(s))?default:s; }
public void detach() { delegate.detach(); }
}
then just add(new label("label", new defaulttextmodel("default text",
model));
-igor
On 6/14/07, Pieter Cogghe <[EMAIL PROTECTED]> wrote:
So if the property is first not null and I change it later on to null,
I would run in trouble?
I changed it to this;
public class LabelWithDefaultModel extends Label {
private IModel defaultModel;
public LabelWithDefaultModel(String id, IModel model, IModel
defaultModel) {
super(id, model);
this.defaultModel = defaultModel;
}
public LabelWithDefaultModel(String id, IModel model, String
defaultModel) {
this(id, model, new Model(defaultModel));
}
public LabelWithDefaultModel(String id, IModel defaultModel) {
super(id);
this.defaultModel = defaultModel;
}
public LabelWithDefaultModel(String id, String defaultModel) {
this (id, new Model(defaultModel));
}
@Override
protected void onComponentTagBody(MarkupStream markupStream,
ComponentTag openTag) {
String model = (String) getModelObject();
replaceComponentTagBody(markupStream, openTag, (String)
((model !=
null) ? model : (String) defaultModel.getObject(this)));
}
}
2007/6/14, Martijn Dashorst <[EMAIL PROTECTED]>:
> I wouldn't do that... If you change the property that should be shown
> when not null, it will not be reflected here, as you have lost the
> connection between the label and the original model.
>
> Martijn
>
> On 6/14/07, Pieter Cogghe <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > thanks for the help, I stripped it down to this:
> > (seems to work fine)
> >
> > public class LabelWithDefaultModel extends Label {
> >
> > public LabelWithDefaultModel(String id, IModel model, IModel
defaultModel) {
> > super(id, model);
> > if (this.getModelObject() == null){
> > this.setModel(defaultModel);
> > }
> > }
> >
> > }
> >
> > 2007/6/14, Martijn Dashorst <[EMAIL PROTECTED]>:
> > > Make it a proper class:
> > >
> > > public class LabelWithDefaultText extends Label {
> > > private String defaultText;
> > >
> > > public LabelWithDefaultText(String id, IModel model, String
defaultText ) {
> > > super(id, model);
> > > this.defaultText = defaultText;
> > > }
> > > @Override
> > > protected void onComponentTagBody(MarkupStream markupStream,
> > > ComponentTag openTag) {
> > > String model = (String) getModelObject();
> > > replaceComponentTagBody(markupStream, openTag, model == null
?
> > > defaultText : model);
> > > }
> > > });
> > > }
> > >
> > > Or make a model wrapper
> > >
> > > On 6/14/07, Pieter Cogghe <[EMAIL PROTECTED]> wrote:
> > > > Hi,
> > > >
> > > > I'v got this in a list:
> > > >
> > > > add(new Label("name"))
> > > >
> > > > sometimes there's no name defined, then I want to set a default
text,
> > > > I'd do it like this:
> > > >
> > > > add(new Label("name").setDefaultModel(new Model("No name
defined")));
> > > >
> > > > Now I have it like this:
> > > >
> > > > item.add(new Label("name", new PropertyModel(item.getModel
(),"name")){
> > > > @Override
> > > > protected void onComponentTagBody(MarkupStream markupStream,
> > > > ComponentTag openTag) {
> > > > String model = (String) getModelObject();
> > > > if (model == null){
> > > > replaceComponentTagBody(markupStream, openTag, "no
language selected");
> > > > } else {
> > > > super.onComponentTagBody(markupStream, openTag)
> > > > }
> > > > }
> > > > });
> > > >
> > > > This is really verbose. Anybody knows a better way?
> > > >
> > > > thanks a lot,
> > > >
> > > > Pieter
> > > >
> > > >
> > > >
> > > > --
> > > > Pieter Cogghe
> > > > Ganzendries 186
> > > > 9000 Gent
> > > > 0487 10 14 21
> > > >
> > > >
-------------------------------------------------------------------------
> > > > This SF.net email is sponsored by DB2 Express
> > > > Download DB2 Express C - the FREE version of DB2 express and take
> > > > control of your XML. No limits. Just data. Click to get it now.
> > > > http://sourceforge.net/powerbar/db2/
> > > > _______________________________________________
> > > > Wicket-user mailing list
> > > > Wicket-user@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/wicket-user
> > > >
> > >
> > >
> > > --
> > > Join the wicket community at irc.freenode.net: ##wicket
> > > Wicket 1.2.6 contains a very important fix. Download Wicket now!
> > > http://wicketframework.org
> > >
> > >
-------------------------------------------------------------------------
> > > This SF.net email is sponsored by DB2 Express
> > > Download DB2 Express C - the FREE version of DB2 express and take
> > > control of your XML. No limits. Just data. Click to get it now.
> > > http://sourceforge.net/powerbar/db2/
> > > _______________________________________________
> > > Wicket-user mailing list
> > > Wicket-user@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/wicket-user
> > >
> >
> >
> > --
> > Pieter Cogghe
> > Ganzendries 186
> > 9000 Gent
> > 0487 10 14 21
> >
> >
-------------------------------------------------------------------------
> > This SF.net email is sponsored by DB2 Express
> > Download DB2 Express C - the FREE version of DB2 express and take
> > control of your XML. No limits. Just data. Click to get it now.
> > http://sourceforge.net/powerbar/db2/
> > _______________________________________________
> > Wicket-user mailing list
> > Wicket-user@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> >
>
>
> --
> Join the wicket community at irc.freenode.net: ##wicket
> Wicket 1.2.6 contains a very important fix. Download Wicket now!
> http://wicketframework.org
>
>
-------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Wicket-user mailing list
> Wicket-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>
--
Pieter Cogghe
Ganzendries 186
9000 Gent
0487 10 14 21
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user