Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Shams Mahmood

To help reduce some code, why not extend the BookmarkablePageLink class to
form your JavascriptConfirmLink and then no need to write the onclick().

also try
new JavascriptConfirmLink(id, cls, new PageParameters(method=method1),
msg)

and the id will be used here:
span wicket:id=listViewId
  a wicket:id=theLinkId href=anotherPage?method=method1method1/a
/span
You can ignore the href, as wicket will insert it for u.

I'm trying to make a page with several similar links to another page:


a href=anotherPage?method=method1method1/a
a href=anotherPage?method=method2method2/a
a href=anotherPage?method=method3method3/a

This would be really easy to put into my html code, but then it
becomes fragile to whether or not I'm mounting my urls. I suppose I
could just make sure to always mount them and make sure to keep these
links in sync with that mapping. But let's for some reason suppose
that I want to inject these from my java code. I'm not sure how to do
this exactly. I was thinking I could do something like I outline
below. Actually, my links are a bit more complicated than displayed
above, since I would like to make sure to have a javascript
confirmation for each click. So I think that for each link what I
would need would be the class of the page they link to, and a map of
the parameters. So I think the code might be something like:

class JavascriptConfirmLink extends Link {
 JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
   super(id);
   _pageClass = pageClass;
   _params = params;
   add(new SimpleAttributeModifier(onclick, return
confirm+confirmationMessage+););
 }

 onClick() {
   setResponsePage(_pageClass, _params);
 }
}

Then I'd populate my page with several of these links using this code:

add(new ListView(theLinks, theLinks) {
   @Override protected void populateItem(ListItem item)
   {
   Link link = (Link) item.getModelObject();
   item.add(link);
   }
   });

Does this look correct?

Now I have gotten myself a little confused about a couple of things:
- what is the purpose of the id? Since I will be populating the page
with my links using a ListView, I don't see where the id of each link
will ever be referred to.

Finally, creating these links is quite verbose. PageParameters is
final, so I can't create my links like:

new JavascriptConfirmLink(id, cls, new PageParameters() {{
add(method, method1); }}, msg)


like I'd like so I end up having to new a PageParameters for each link

and add to it before creating the JavascriptConfirmLink, which is
seeming quite verbose.

There may be some holes in my approach. Is there a better way to do this?

Thanks,
Lowell



-
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


Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Lowell Kirsh
That looks pretty reasonable to me (though my code is not in front of
me right now). I like how you can pass a String to 'new
PageParameters()'. A little unexpected but nice (I should have read
the javadoc more thoroughly).

So I have another question: How to you set the link's title? That is,
how do you set the text between the a and the /a?

Thanks

On 5/9/07, Shams Mahmood [EMAIL PROTECTED] wrote:
 To help reduce some code, why not extend the BookmarkablePageLink class to
 form your JavascriptConfirmLink and then no need to write the onclick().

 also try
 new JavascriptConfirmLink(id, cls, new
 PageParameters(method=method1), msg)

 and the id will be used here:
 span wicket:id=listViewId
a wicket:id=theLinkId
 href=anotherPage?method=method1method1/a
 /span
 You can ignore the href, as wicket will insert it for u.



  I'm trying to make a page with several similar links to another page:
 
  a href=anotherPage?method=method1method1/a
  a href=anotherPage?method=method2method2/a
  a href=anotherPage?method=method3method3/a
 
  This would be really easy to put into my html code, but then it
  becomes fragile to whether or not I'm mounting my urls. I suppose I
  could just make sure to always mount them and make sure to keep these
  links in sync with that mapping. But let's for some reason suppose
  that I want to inject these from my java code. I'm not sure how to do
  this exactly. I was thinking I could do something like I outline
  below. Actually, my links are a bit more complicated than displayed
  above, since I would like to make sure to have a javascript
  confirmation for each click. So I think that for each link what I
  would need would be the class of the page they link to, and a map of
  the parameters. So I think the code might be something like:
 
  class JavascriptConfirmLink extends Link {
   JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
 super(id);
 _pageClass = pageClass;
 _params = params;
 add(new SimpleAttributeModifier(onclick, return
  confirm+confirmationMessage+););
   }
 
   onClick() {
 setResponsePage(_pageClass, _params);
   }
  }
 
  Then I'd populate my page with several of these links using this code:
 
  add(new ListView(theLinks, theLinks) {
 @Override protected void populateItem(ListItem item)
 {
 Link link = (Link) item.getModelObject();
 item.add(link);
 }
 });
 
  Does this look correct?
 
  Now I have gotten myself a little confused about a couple of things:
  - what is the purpose of the id? Since I will be populating the page
  with my links using a ListView, I don't see where the id of each link
  will ever be referred to.
 
  Finally, creating these links is quite verbose. PageParameters is
  final, so I can't create my links like:
 
  new JavascriptConfirmLink(id, cls, new PageParameters() {{
  add(method, method1); }}, msg)
  like I'd like so I end up having to new a PageParameters for each link
  and add to it before creating the JavascriptConfirmLink, which is
  seeming quite verbose.
 
  There may be some holes in my approach. Is there a better way to do this?
 
  Thanks,
  Lowell
 
 
 


 -
 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


Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Shams Mahmood

Why not just add a label to the link.

span wicket:id=listViewId
   a wicket:id=theLinkId  href=anotherPage?method=method1
label wicket:id=theLabelIdmethod1/label
   /a
/span

add(new ListView(theLinks, theLinks) {
   @Override protected void populateItem(ListItem item)
   {
   Link link = (Link) item.getModelObject();
   Label label = new Label( theLabelId, Method-xxx );
   // label.setRenderBodyOnly( true );
   link.add( label );
   item.add(link);
   }
   });


Shams

That looks pretty reasonable to me (though my code is not in front of

me right now). I like how you can pass a String to 'new
PageParameters()'. A little unexpected but nice (I should have read
the javadoc more thoroughly).

So I have another question: How to you set the link's title? That is,
how do you set the text between the a and the /a?

Thanks

On 5/9/07, Shams Mahmood [EMAIL PROTECTED] wrote:
 To help reduce some code, why not extend the BookmarkablePageLink class
to
 form your JavascriptConfirmLink and then no need to write the onclick().

 also try
 new JavascriptConfirmLink(id, cls, new
 PageParameters(method=method1), msg)

 and the id will be used here:
 span wicket:id=listViewId
a wicket:id=theLinkId
 href=anotherPage?method=method1method1/a
 /span
 You can ignore the href, as wicket will insert it for u.



  I'm trying to make a page with several similar links to another page:
 
  a href=anotherPage?method=method1method1/a
  a href=anotherPage?method=method2method2/a
  a href=anotherPage?method=method3method3/a
 
  This would be really easy to put into my html code, but then it
  becomes fragile to whether or not I'm mounting my urls. I suppose I
  could just make sure to always mount them and make sure to keep these
  links in sync with that mapping. But let's for some reason suppose
  that I want to inject these from my java code. I'm not sure how to do
  this exactly. I was thinking I could do something like I outline
  below. Actually, my links are a bit more complicated than displayed
  above, since I would like to make sure to have a javascript
  confirmation for each click. So I think that for each link what I
  would need would be the class of the page they link to, and a map of
  the parameters. So I think the code might be something like:
 
  class JavascriptConfirmLink extends Link {
   JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
 super(id);
 _pageClass = pageClass;
 _params = params;
 add(new SimpleAttributeModifier(onclick, return
  confirm+confirmationMessage+););
   }
 
   onClick() {
 setResponsePage(_pageClass, _params);
   }
  }
 
  Then I'd populate my page with several of these links using this code:
 
  add(new ListView(theLinks, theLinks) {
 @Override protected void populateItem(ListItem item)
 {
 Link link = (Link) item.getModelObject();
 item.add(link);
 }
 });
 
  Does this look correct?
 
  Now I have gotten myself a little confused about a couple of things:
  - what is the purpose of the id? Since I will be populating the page
  with my links using a ListView, I don't see where the id of each link
  will ever be referred to.
 
  Finally, creating these links is quite verbose. PageParameters is
  final, so I can't create my links like:
 
  new JavascriptConfirmLink(id, cls, new PageParameters() {{
  add(method, method1); }}, msg)
  like I'd like so I end up having to new a PageParameters for each link
  and add to it before creating the JavascriptConfirmLink, which is
  seeming quite verbose.
 
  There may be some holes in my approach. Is there a better way to do
this?
 
  Thanks,
  Lowell
 
 
 

-
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


Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Lowell Kirsh
D'oh! Of course. And I assume you mean span instead of label.

On 5/9/07, Shams Mahmood [EMAIL PROTECTED] wrote:
 Why not just add a label to the link.

 span wicket:id=listViewId
 a wicket:id=theLinkId
 href=anotherPage?method=method1
  label wicket:id=theLabelIdmethod1/label
 /a
 /span

 add(new ListView(theLinks, theLinks) {
 @Override protected void populateItem(ListItem item)
 {
 Link link = (Link) item.getModelObject ();
 Label label = new Label( theLabelId, Method-xxx );
 // label.setRenderBodyOnly( true );
 link.add( label );
 item.add(link);
 }
 });


 Shams



  That looks pretty reasonable to me (though my code is not in front of
  me right now). I like how you can pass a String to 'new
  PageParameters()'. A little unexpected but nice (I should have read
  the javadoc more thoroughly).
 
  So I have another question: How to you set the link's title? That is,
  how do you set the text between the a and the /a?
 
  Thanks
 
  On 5/9/07, Shams Mahmood [EMAIL PROTECTED]  wrote:
   To help reduce some code, why not extend the BookmarkablePageLink class
 to
   form your JavascriptConfirmLink and then no need to write the onclick().
  
   also try
   new JavascriptConfirmLink(id, cls, new
   PageParameters(method=method1), msg)
  
   and the id will be used here:
   span wicket:id=listViewId
  a wicket:id=theLinkId
   href=anotherPage?method=method1method1/a
   /span
   You can ignore the href, as wicket will insert it for u.
  
  
  
I'm trying to make a page with several similar links to another page:
   
a href=anotherPage?method=method1method1/a
a href=anotherPage?method=method2method2/a
a href=anotherPage?method=method3method3/a
   
This would be really easy to put into my html code, but then it
becomes fragile to whether or not I'm mounting my urls. I suppose I
could just make sure to always mount them and make sure to keep these
links in sync with that mapping. But let's for some reason suppose
that I want to inject these from my java code. I'm not sure how to do
this exactly. I was thinking I could do something like I outline
below. Actually, my links are a bit more complicated than displayed
above, since I would like to make sure to have a javascript
confirmation for each click. So I think that for each link what I
would need would be the class of the page they link to, and a map of
the parameters. So I think the code might be something like:
   
class JavascriptConfirmLink extends Link {
 JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
   super(id);
   _pageClass = pageClass;
   _params = params;
   add(new SimpleAttributeModifier(onclick, return
confirm+confirmationMessage+););
 }
   
 onClick() {
   setResponsePage(_pageClass, _params);
 }
}
   
Then I'd populate my page with several of these links using this code:
   
add(new ListView(theLinks, theLinks) {
   @Override protected void populateItem(ListItem item)
   {
   Link link = (Link) item.getModelObject();
   item.add(link);
   }
   });
   
Does this look correct?
   
Now I have gotten myself a little confused about a couple of things:
- what is the purpose of the id? Since I will be populating the page
with my links using a ListView, I don't see where the id of each link
will ever be referred to.
   
Finally, creating these links is quite verbose. PageParameters is
final, so I can't create my links like:
   
new JavascriptConfirmLink(id, cls, new PageParameters() {{
add(method, method1); }}, msg)
like I'd like so I end up having to new a PageParameters for each link
and add to it before creating the JavascriptConfirmLink, which is
seeming quite verbose.
   
There may be some holes in my approach. Is there a better way to do
 this?
   
Thanks,
Lowell
   
   
   
 


 -
 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

Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Shams Mahmood

You may choose to use almost any html tag for labels.
It's just that the wicket examples all use spans :)


D'oh! Of course. And I assume you mean span instead of label.


On 5/9/07, Shams Mahmood [EMAIL PROTECTED] wrote:
 Why not just add a label to the link.

 span wicket:id=listViewId
 a wicket:id=theLinkId
 href=anotherPage?method=method1
  label wicket:id=theLabelIdmethod1/label
 /a
 /span

 add(new ListView(theLinks, theLinks) {



Shams
-
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


Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Igor Vaynberg

you can also factor out the javascript confirmation into a behavior and
reuse it across any links classes like

Link link=new Link(foo) { onclick(){..}}.add(new
LinkConfirmation(sure?));
BookmarkablePageLink link=new BPL(...).add(new LinkConfirmation(sure?));

-igor


public class LinkConfirmation extends AbstractBehavior {

   private final IModel msg;

   public LinkConfirmation(String msg) { this(new Model(msg)); }

   public LinkConfirmation(IModel msg) { this.msg = msg; }

   @Override
   public void onComponentTag(Component component, ComponentTag tag) {
   super.onComponentTag(component, tag);

   String onclick = tag.getAttributes().getString(onclick);

   IModel model = msg;
   if (model instanceof IComponentAssignedModel) {
   model = ((IComponentAssignedModel)
model).wrapOnAssignment(component);
   }

   onclick = if (!confirm(' + model.getObject().toString() + '))
return false;  + onclick;
   tag.getAttributes().put(onclick, onclick);

   model.detach();
   msg.detach();
   }

}

-igor


On 5/9/07, Shams Mahmood [EMAIL PROTECTED] wrote:


To help reduce some code, why not extend the BookmarkablePageLink class to
form your JavascriptConfirmLink and then no need to write the onclick().

also try
new JavascriptConfirmLink(id, cls, new PageParameters(method=method1),
msg)

and the id will be used here:
span wicket:id=listViewId
   a wicket:id=theLinkId href=anotherPage?method=method1method1/a
/span
You can ignore the href, as wicket will insert it for u.

I'm trying to make a page with several similar links to another page:

 a href=anotherPage?method=method1method1/a
 a href=anotherPage?method=method2method2/a
 a href=anotherPage?method=method3method3/a

 This would be really easy to put into my html code, but then it
 becomes fragile to whether or not I'm mounting my urls. I suppose I
 could just make sure to always mount them and make sure to keep these
 links in sync with that mapping. But let's for some reason suppose
 that I want to inject these from my java code. I'm not sure how to do
 this exactly. I was thinking I could do something like I outline
 below. Actually, my links are a bit more complicated than displayed
 above, since I would like to make sure to have a javascript
 confirmation for each click. So I think that for each link what I
 would need would be the class of the page they link to, and a map of
 the parameters. So I think the code might be something like:

 class JavascriptConfirmLink extends Link {
  JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
super(id);
_pageClass = pageClass;
_params = params;
add(new SimpleAttributeModifier(onclick, return
 confirm+confirmationMessage+););
  }

  onClick() {
setResponsePage(_pageClass, _params);
  }
 }

 Then I'd populate my page with several of these links using this code:

 add(new ListView(theLinks, theLinks) {
@Override protected void populateItem(ListItem item)
{
Link link = (Link) item.getModelObject();
item.add(link);
}
});

 Does this look correct?

 Now I have gotten myself a little confused about a couple of things:
 - what is the purpose of the id? Since I will be populating the page
 with my links using a ListView, I don't see where the id of each link
 will ever be referred to.

 Finally, creating these links is quite verbose. PageParameters is
 final, so I can't create my links like:

 new JavascriptConfirmLink(id, cls, new PageParameters() {{
 add(method, method1); }}, msg)

like I'd like so I end up having to new a PageParameters for each link
 and add to it before creating the JavascriptConfirmLink, which is
 seeming quite verbose.

 There may be some holes in my approach. Is there a better way to do
 this?

 Thanks,
 Lowell




-
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


Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Lowell Kirsh
Is IComponentAssignedModel only in 1.3?

On 5/9/07, Igor Vaynberg [EMAIL PROTECTED] wrote:
 you can also factor out the javascript confirmation into a behavior and
 reuse it across any links classes like

 Link link=new Link(foo) { onclick(){..}}.add(new
 LinkConfirmation(sure?));
 BookmarkablePageLink link=new BPL(...).add(new LinkConfirmation(sure?));

 -igor


 public class LinkConfirmation extends AbstractBehavior {

 private final IModel msg;

 public LinkConfirmation(String msg) { this(new Model(msg)); }

 public LinkConfirmation(IModel msg) { this.msg = msg; }

 @Override
 public void onComponentTag(Component component, ComponentTag tag) {
 super.onComponentTag(component, tag);

 String onclick = tag.getAttributes().getString(onclick);

 IModel model = msg;
 if (model instanceof IComponentAssignedModel) {
 model = ((IComponentAssignedModel)
 model).wrapOnAssignment(component);
 }

 onclick = if (!confirm(' + model.getObject().toString() + '))
 return false;  + onclick;
 tag.getAttributes().put(onclick, onclick);

 model.detach();
 msg.detach();
 }

 }

  -igor


 On 5/9/07, Shams Mahmood [EMAIL PROTECTED] wrote:
 
  To help reduce some code, why not extend the BookmarkablePageLink class to
  form your JavascriptConfirmLink and then no need to write the onclick().
 
  also try
  new JavascriptConfirmLink(id, cls, new
 PageParameters(method=method1), msg)
 
  and the id will be used here:
  span wicket:id=listViewId
 a wicket:id=theLinkId
 href=anotherPage?method=method1method1/a
  /span
  You can ignore the href, as wicket will insert it for u.
 
 
 
 
   I'm trying to make a page with several similar links to another page:
  
   a href=anotherPage?method=method1method1/a
   a href=anotherPage?method=method2method2/a
   a href=anotherPage?method=method3method3/a
  
   This would be really easy to put into my html code, but then it
   becomes fragile to whether or not I'm mounting my urls. I suppose I
   could just make sure to always mount them and make sure to keep these
   links in sync with that mapping. But let's for some reason suppose
   that I want to inject these from my java code. I'm not sure how to do
   this exactly. I was thinking I could do something like I outline
   below. Actually, my links are a bit more complicated than displayed
   above, since I would like to make sure to have a javascript
   confirmation for each click. So I think that for each link what I
   would need would be the class of the page they link to, and a map of
   the parameters. So I think the code might be something like:
  
   class JavascriptConfirmLink extends Link {
JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
  super(id);
  _pageClass = pageClass;
  _params = params;
  add(new SimpleAttributeModifier(onclick, return
   confirm+confirmationMessage+););
}
  
onClick() {
  setResponsePage(_pageClass, _params);
}
   }
  
   Then I'd populate my page with several of these links using this code:
  
   add(new ListView(theLinks, theLinks) {
  @Override protected void populateItem(ListItem item)
  {
  Link link = (Link) item.getModelObject();
  item.add(link);
  }
  });
  
   Does this look correct?
  
   Now I have gotten myself a little confused about a couple of things:
   - what is the purpose of the id? Since I will be populating the page
   with my links using a ListView, I don't see where the id of each link
   will ever be referred to.
  
   Finally, creating these links is quite verbose. PageParameters is
   final, so I can't create my links like:
  
   new JavascriptConfirmLink(id, cls, new PageParameters() {{
   add(method, method1); }}, msg)
 
   like I'd like so I end up having to new a PageParameters for each link
   and add to it before creating the JavascriptConfirmLink, which is
   seeming quite verbose.
  
   There may be some holes in my approach. Is there a better way to do
 this?
  
   Thanks,
   Lowell
  
  
  
 
 
 
 -
  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
 

Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Igor Vaynberg

yes, and you can ignore that part if you are on 1.2.x

-igor


On 5/9/07, Lowell Kirsh [EMAIL PROTECTED] wrote:


Is IComponentAssignedModel only in 1.3?

On 5/9/07, Igor Vaynberg [EMAIL PROTECTED] wrote:
 you can also factor out the javascript confirmation into a behavior and
 reuse it across any links classes like

 Link link=new Link(foo) { onclick(){..}}.add(new
 LinkConfirmation(sure?));
 BookmarkablePageLink link=new BPL(...).add(new
LinkConfirmation(sure?));

 -igor


 public class LinkConfirmation extends AbstractBehavior {

 private final IModel msg;

 public LinkConfirmation(String msg) { this(new Model(msg)); }

 public LinkConfirmation(IModel msg) { this.msg = msg; }

 @Override
 public void onComponentTag(Component component, ComponentTag tag) {
 super.onComponentTag(component, tag);

 String onclick = tag.getAttributes().getString(onclick);

 IModel model = msg;
 if (model instanceof IComponentAssignedModel) {
 model = ((IComponentAssignedModel)
 model).wrapOnAssignment(component);
 }

 onclick = if (!confirm(' + model.getObject().toString() + '))
 return false;  + onclick;
 tag.getAttributes().put(onclick, onclick);

 model.detach();
 msg.detach();
 }

 }

  -igor


 On 5/9/07, Shams Mahmood [EMAIL PROTECTED] wrote:
 
  To help reduce some code, why not extend the BookmarkablePageLink
class to
  form your JavascriptConfirmLink and then no need to write the
onclick().
 
  also try
  new JavascriptConfirmLink(id, cls, new
 PageParameters(method=method1), msg)
 
  and the id will be used here:
  span wicket:id=listViewId
 a wicket:id=theLinkId
 href=anotherPage?method=method1method1/a
  /span
  You can ignore the href, as wicket will insert it for u.
 
 
 
 
   I'm trying to make a page with several similar links to another
page:
  
   a href=anotherPage?method=method1method1/a
   a href=anotherPage?method=method2method2/a
   a href=anotherPage?method=method3method3/a
  
   This would be really easy to put into my html code, but then it
   becomes fragile to whether or not I'm mounting my urls. I suppose I
   could just make sure to always mount them and make sure to keep
these
   links in sync with that mapping. But let's for some reason suppose
   that I want to inject these from my java code. I'm not sure how to
do
   this exactly. I was thinking I could do something like I outline
   below. Actually, my links are a bit more complicated than displayed
   above, since I would like to make sure to have a javascript
   confirmation for each click. So I think that for each link what I
   would need would be the class of the page they link to, and a map of
   the parameters. So I think the code might be something like:
  
   class JavascriptConfirmLink extends Link {
JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
  super(id);
  _pageClass = pageClass;
  _params = params;
  add(new SimpleAttributeModifier(onclick, return
   confirm+confirmationMessage+););
}
  
onClick() {
  setResponsePage(_pageClass, _params);
}
   }
  
   Then I'd populate my page with several of these links using this
code:
  
   add(new ListView(theLinks, theLinks) {
  @Override protected void populateItem(ListItem item)
  {
  Link link = (Link) item.getModelObject();
  item.add(link);
  }
  });
  
   Does this look correct?
  
   Now I have gotten myself a little confused about a couple of things:
   - what is the purpose of the id? Since I will be populating the page
   with my links using a ListView, I don't see where the id of each
link
   will ever be referred to.
  
   Finally, creating these links is quite verbose. PageParameters is
   final, so I can't create my links like:
  
   new JavascriptConfirmLink(id, cls, new PageParameters() {{
   add(method, method1); }}, msg)
 
   like I'd like so I end up having to new a PageParameters for each
link
   and add to it before creating the JavascriptConfirmLink, which is
   seeming quite verbose.
  
   There may be some holes in my approach. Is there a better way to do
 this?
  
   Thanks,
   Lowell
  
  
  
 
 
 

-
  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.
 

Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Jeremy Thomerson

Igor,
 I notice that you call detach() on your models in this example.  I have
searched, but can not find where it is written when (or if) we should be
calling detach ourselves.  I'm using implementations of
LoadableDetachableModel for my models that hold DB-backed domain objects.  I
don't want them to be stored in the session between requests at all.  How do
I make sure that happens?  Should I be calling detach somewhere implicitly,
or is it handled automatically?

Thank you for all your help - it's amazing how helpful all the core team is
on the mailing list!!

Jeremy

On 5/9/07, Igor Vaynberg [EMAIL PROTECTED] wrote:


you can also factor out the javascript confirmation into a behavior and
reuse it across any links classes like

Link link=new Link(foo) { onclick(){..}}.add(new
LinkConfirmation(sure?));
BookmarkablePageLink link=new BPL(...).add(new LinkConfirmation(sure?));


-igor


public class LinkConfirmation extends AbstractBehavior {

private final IModel msg;

public LinkConfirmation(String msg) { this(new Model(msg)); }

public LinkConfirmation(IModel msg) { this.msg = msg; }

@Override
public void onComponentTag(Component component, ComponentTag tag) {
super.onComponentTag(component, tag);

String onclick = tag.getAttributes().getString(onclick);

IModel model = msg;
if (model instanceof IComponentAssignedModel) {
model = ((IComponentAssignedModel)
model).wrapOnAssignment(component);
}

onclick = if (!confirm(' + model.getObject().toString() + '))
return false;  + onclick;
tag.getAttributes().put(onclick, onclick);

model.detach();
msg.detach();
}

}

-igor


On 5/9/07, Shams Mahmood [EMAIL PROTECTED] wrote:

 To help reduce some code, why not extend the BookmarkablePageLink class
 to
 form your JavascriptConfirmLink and then no need to write the onclick().

 also try
 new JavascriptConfirmLink(id, cls, new PageParameters(method=method1),
 msg)

 and the id will be used here:
 span wicket:id=listViewId
a wicket:id=theLinkId
 href=anotherPage?method=method1method1/a
 /span
 You can ignore the href, as wicket will insert it for u.

 I'm trying to make a page with several similar links to another page:
 
  a href=anotherPage?method=method1method1/a
  a href=anotherPage?method=method2method2/a
  a href=anotherPage?method=method3method3/a
 
  This would be really easy to put into my html code, but then it
  becomes fragile to whether or not I'm mounting my urls. I suppose I
  could just make sure to always mount them and make sure to keep these
  links in sync with that mapping. But let's for some reason suppose
  that I want to inject these from my java code. I'm not sure how to do
  this exactly. I was thinking I could do something like I outline
  below. Actually, my links are a bit more complicated than displayed
  above, since I would like to make sure to have a javascript
  confirmation for each click. So I think that for each link what I
  would need would be the class of the page they link to, and a map of
  the parameters. So I think the code might be something like:
 
  class JavascriptConfirmLink extends Link {
   JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
 super(id);
 _pageClass = pageClass;
 _params = params;
 add(new SimpleAttributeModifier(onclick, return
  confirm+confirmationMessage+););
   }
 
   onClick() {
 setResponsePage(_pageClass, _params);
   }
  }
 
  Then I'd populate my page with several of these links using this code:
 
  add(new ListView(theLinks, theLinks) {
 @Override protected void populateItem(ListItem item)
 {
 Link link = (Link) item.getModelObject();
 item.add(link);
 }
 });
 
  Does this look correct?
 
  Now I have gotten myself a little confused about a couple of things:
  - what is the purpose of the id? Since I will be populating the page
  with my links using a ListView, I don't see where the id of each link
  will ever be referred to.
 
  Finally, creating these links is quite verbose. PageParameters is
  final, so I can't create my links like:
 
  new JavascriptConfirmLink(id, cls, new PageParameters() {{
  add(method, method1); }}, msg)

 like I'd like so I end up having to new a PageParameters for each link
  and add to it before creating the JavascriptConfirmLink, which is
  seeming quite verbose.
 
  There may be some holes in my approach. Is there a better way to do
  this?
 
  Thanks,
  Lowell
 
 
 


 -
 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
 

Re: [Wicket-user] How do I do this - several similar links to another page

2007-05-09 Thread Igor Vaynberg

only models that are assigned to component's default model slot are detached
automatically.

you can think of it as component doing this

component { ondetach() { imodel model=getmodel(); if (model!=null) {
model.detach(); }}}

if you keep a reference to a model yourself (say in a field) then you have
to make sure it is detached.

class ConfirmAddRoleToUserPanel extends panel {
 private IModel role;

 public mypanel(string id, imodel user, imodel role) {
   super(id, user);
   this.role=role;
 }

 protected void ondetach() {
 // here we need to detach role, user model will be detached for us by
component
 role.detach();
 super.ondetach();
  }
}

one thing to do might be to have something like this:

protected void ondetach() { ReflectionUtils.detachModelFields(this);
super.ondetach(); }

that can make life somewhat easier, although i prefer doing it manually.

-igor




On 5/9/07, Jeremy Thomerson [EMAIL PROTECTED] wrote:


Igor,
  I notice that you call detach() on your models in this example.  I have
searched, but can not find where it is written when (or if) we should be
calling detach ourselves.  I'm using implementations of
LoadableDetachableModel for my models that hold DB-backed domain objects.  I
don't want them to be stored in the session between requests at all.  How do
I make sure that happens?  Should I be calling detach somewhere implicitly,
or is it handled automatically?

Thank you for all your help - it's amazing how helpful all the core team
is on the mailing list!!

Jeremy

On 5/9/07, Igor Vaynberg  [EMAIL PROTECTED] wrote:

 you can also factor out the javascript confirmation into a behavior and
 reuse it across any links classes like

 Link link=new Link(foo) { onclick(){..}}.add(new
 LinkConfirmation(sure?));
 BookmarkablePageLink link=new BPL(...).add(new
 LinkConfirmation(sure?));

 -igor


 public class LinkConfirmation extends AbstractBehavior {

 private final IModel msg;

 public LinkConfirmation(String msg) { this(new Model(msg)); }

 public LinkConfirmation(IModel msg) { this.msg = msg; }

 @Override
 public void onComponentTag(Component component, ComponentTag tag) {
 super.onComponentTag(component, tag);

 String onclick = tag.getAttributes().getString(onclick);

 IModel model = msg;
 if (model instanceof IComponentAssignedModel) {
 model = ((IComponentAssignedModel)
 model).wrapOnAssignment(component);
 }

 onclick = if (!confirm(' + model.getObject().toString() + '))
 return false;  + onclick;
 tag.getAttributes().put(onclick, onclick);

 model.detach();
 msg.detach();
 }

 }

 -igor


 On 5/9/07, Shams Mahmood  [EMAIL PROTECTED] wrote:
 
  To help reduce some code, why not extend the BookmarkablePageLink
  class to
  form your JavascriptConfirmLink and then no need to write the
  onclick().
 
  also try
  new JavascriptConfirmLink(id, cls, new
  PageParameters(method=method1), msg)
 
  and the id will be used here:
  span wicket:id=listViewId
 a wicket:id=theLinkId
  href=anotherPage?method=method1method1/a
  /span
  You can ignore the href, as wicket will insert it for u.
 
  I'm trying to make a page with several similar links to another page:
  
   a href=anotherPage?method=method1method1/a
   a href=anotherPage?method=method2method2/a
   a href=anotherPage?method=method3method3/a
  
   This would be really easy to put into my html code, but then it
   becomes fragile to whether or not I'm mounting my urls. I suppose I
   could just make sure to always mount them and make sure to keep
   these
   links in sync with that mapping. But let's for some reason suppose
   that I want to inject these from my java code. I'm not sure how to
   do
   this exactly. I was thinking I could do something like I outline
   below. Actually, my links are a bit more complicated than displayed
   above, since I would like to make sure to have a javascript
   confirmation for each click. So I think that for each link what I
   would need would be the class of the page they link to, and a map of
   the parameters. So I think the code might be something like:
  
   class JavascriptConfirmLink extends Link {
JavascriptConfirmLink(id, pageClass, params, confirmationMessage) {
  
  super(id);
  _pageClass = pageClass;
  _params = params;
  add(new SimpleAttributeModifier(onclick, return
   confirm+confirmationMessage+););
}
  
onClick() {
  setResponsePage(_pageClass, _params);
}
   }
  
   Then I'd populate my page with several of these links using this
   code:
  
   add(new ListView(theLinks, theLinks) {
  @Override protected void populateItem(ListItem item)
  {
  Link link = (Link) item.getModelObject();
  item.add(link);
  }
  });
  
   Does this look correct?
  
   Now I have gotten myself a little confused about a couple of things:
  
   - what is the