you have to use a detachable model for your label. i suggest you read
the models wiki page
-igor
On Thu, May 29, 2008 at 9:24 AM, Davidoff <[EMAIL PROTECTED]> wrote:
>
> finally i had an answer to my questions... was an email handling issue...but
> the problems are far to finish, then now i've a listview that refreshes
> dinamically, but a label i've put with the number of messages doesn't
> refresh its content...this is the code as you can see:
>
> public class AccountPage extends WebPage{
>
> private Manager manager;
> private User user;
> private Folder folder;
> private ModalWindow modal;
> private Store store;
> private Label contains;
>
> public AccountPage(final String username,final String password)
> throws MessagingException{
> manager=new Manager("AjaxUbiMailDB",1000);
> user=manager.authenticate(username, password);
> add(new Label("hello","Hello "+ user.firstName() + " " +
> user.lastName()));
>
> IModel mailList = new LoadableDetachableModel()
> {
> protected Object load(){
>
> Message[] messages=null;
> try {
> if (folder==null )
> {
> folder=user.openPopServer();
> }
>
> else if (folder.isOpen())
> {
> folder.close(false);
>
> folder=user.openPopServer();
>
>
> }
> contains=new
> Label("contains",""+folder.getMessageCount());
>
> addOrReplace(contains);
> messages=folder.getMessages();
> } catch (MessagingException e) {
> // TODO Auto-generated catch
> block
> e.printStackTrace();
> }
> List<Message> messagesList=Arrays.asList(messages);
> return messagesList;
> }
> };
> modal=new ModalWindow("modal");
> ListView listTable=new ListView("listView",mailList)
> {
>
> private int index;
> public void populateItem(ListItem item)
> {
> try {
> final Message msg=(Message)
> item.getModelObject();
>
> //Address[]
> add=msg.getFolder().open(Folder.READ_ONLY).getFrom();
> index=msg.getMessageNumber();
> AjaxLink rate = new
> AjaxLink("mess") {
> public void
> onClick(AjaxRequestTarget target) {
>
>
> GetMessage getMessage;
>
> getMessage = new GetMessage(modal.getContentId(), msg){};
>
>
> modal.setContent(getMessage);
>
> modal.setInitialHeight(400);
>
> modal.setInitialWidth(800);
>
> modal.show(target);
>
> modal.setTitle("Mail View");
>
>
> }
> };
> rate.add(new
> Label("prova",String.valueOf(msg.getMessageNumber())));
> item.add(rate);
> item.add(new
> AttributeAppender("class", true, new Model(index % 2 ==0 ? "odd": "even"), "
> "));
> item.add(new Label("subject",
> msg.getSubject().toString()));
> item.add(new Label("from",
> msg.getFrom()[0].toString()));
> if (msg.getSentDate()!=null)
> item.add(new Label("date",
> msg.getSentDate().toString()));
> else
> item.add(new Label("date",
> "Nothing"));
>
> } catch (MessagingException e) {
>
> System.out.println("Error populate item");
> //
> e.printStackTrace();
> }
>
>
>
> }
> };
>
>
> WebMarkupContainer listContainer = new
> WebMarkupContainer("theContainer");
> //generate a markup-id so the contents can be updated
> through an AJAX call
> listContainer.setOutputMarkupId(true);
> listContainer.add(new
> AjaxSelfUpdatingTimerBehavior(Duration.seconds(20)));
> // add the list view to the container
> listContainer.add(listTable);
> // finally add the container to the page
>
> add(listContainer);
> add(modal);
>
> }
>
>
> AccountPage.html
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> "http://www.w3.org/TR/html4/loose.dtd">
> <html xmlns:wicket="http://wicket.apache.org/">
> <head>
> <style type="text/css">
> .odd { background-color: #FFE0E0 }
> .even { background-color: #E0E0FF }
> </style>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
> <title>Ajax UbiMail</title>
> </head>
> <body>
> <h1>Ajax UbiMail</h1>
> <br>
>
>
>
> <table wicket:id="theContainer" width="100%">
> <tr>
> <th>#</th>
> <th>Subject</th>
> <th>Sender</th>
> <th>Date</th>
> </tr>
> <tr wicket:id="listView">
> <td> # </td>
> <td></td>
> <td></td>
> <td></td>
> </tr>
> </table>
> <div wicket:id="modal"></div>
> </body>
> </html>
>
>
> the label "contains" doesn't refresh its content: the number of messages is
> still the number given at first( when the page loades)
> What's the matter with this?
>
>
> Davidoff wrote:
>>
>> yes, i think is a email handling issue, because the ajax calls that i see
>> through the wicket ajax debug window gives the right response.
>>
>>
>> igor.vaynberg wrote:
>>>
>>> first you have to confirm that this is a wicket issue or your email
>>> handling issue. it sounds like it is an email handling issue. make
>>> sure that part works first before trying to fix your UI components.
>>>
>>> -igor
>>>
>>> On Tue, May 27, 2008 at 4:01 AM, Davidoff <[EMAIL PROTECTED]> wrote:
>>>>
>>>> the problem is that even if i refresh the page manually, its content
>>>> doesn't
>>>> change...i modified the code for closing connection with the pop3
>>>> server...but nothing....i send emails but no new email results on the
>>>> table....see the code:
>>>>
>>>> MailList.java
>>>>
>>>> public class MailList extends Panel implements Serializable {
>>>>
>>>> private ListView listTable;
>>>> private ModalWindow modal;
>>>> private Message[] messages;
>>>> private List<Message> mailList;
>>>> private int contains;
>>>>
>>>>
>>>> public MailList(String id, final User user, Folder folder) throws
>>>> MessagingException {
>>>> super(id);
>>>> // TODO Auto-generated constructor stub
>>>> final Folder folder1=folder;
>>>> try {
>>>> contains=folder1.getMessageCount();
>>>> addOrReplace(new Label("contains","Your MailBox
>>>> contains " + contains +"
>>>> messages."));
>>>>
>>>> messages=folder1.getMessages();
>>>>
>>>> } catch (MessagingException e2) {
>>>> // TODO Auto-generated catch block
>>>> e2.printStackTrace();
>>>> }
>>>> mailList=Arrays.asList(messages);
>>>>
>>>> add(new Label("prova",folder1.getFullName()));
>>>> //user.closePopServer();
>>>> modal = new ModalWindow("modal");
>>>>
>>>>
>>>> //listTable.setReuseItems(true);
>>>>
>>>> listTable=new ListView("listview",mailList)
>>>> {
>>>>
>>>> private int index;
>>>> public void populateItem(ListItem item)
>>>> {
>>>> user.openPopServer();
>>>> try {
>>>> final Message msg=(Message)
>>>> item.getModelObject();
>>>>
>>>> //Address[]
>>>> add=msg.getFolder().open(Folder.READ_ONLY).getFrom();
>>>>
>>>> index=msg.getMessageNumber();
>>>> AjaxLink rate = new
>>>> AjaxLink("mess") {
>>>> public void
>>>> onClick(AjaxRequestTarget target) {
>>>>
>>>>
>>>> GetMessage getMessage;
>>>>
>>>> getMessage = new GetMessage(modal.getContentId(), msg){};
>>>>
>>>>
>>>> modal.setContent(getMessage);
>>>>
>>>> modal.setInitialHeight(400);
>>>>
>>>> modal.setInitialWidth(800);
>>>>
>>>> modal.show(target);
>>>>
>>>> modal.setTitle("Mail View");
>>>>
>>>>
>>>> }
>>>> };
>>>>
>>>> rate.add(new
>>>> Label("prova",String.valueOf(msg.getMessageNumber())));
>>>>
>>>> item.add(rate);
>>>>
>>>> item.add(new AttributeAppender("class", true, new
>>>> Model(index % 2 ==0 ? "odd": "even"), " "));
>>>>
>>>> item.add(new Label("subject",
>>>> msg.getSubject().toString()));
>>>>
>>>> item.add(new Label("from",
>>>> msg.getFrom()[0].toString()));
>>>>
>>>> if (msg.getSentDate()!=null)
>>>>
>>>> item.add(new Label("date",
>>>> msg.getSentDate().toString()));
>>>>
>>>> else
>>>>
>>>> item.add(new Label("date", "Nothing"));
>>>>
>>>> } catch
>>>> (MessagingException e) {
>>>>
>>>> System.out.println("Error populate item");
>>>> //
>>>> e.printStackTrace();
>>>> }
>>>> try {
>>>>
>>>>
>>>> messages=folder1.getMessages();
>>>>
>>>> mailList=Arrays.asList(messages);
>>>>
>>>> contains=folder1.getMessageCount();
>>>> } catch
>>>> (MessagingException e) {
>>>> // TODO
>>>> Auto-generated catch block
>>>>
>>>> e.printStackTrace();
>>>> }
>>>> user.closePopServer();
>>>>
>>>> }
>>>> };
>>>> add(listTable);
>>>> addOrReplace(modal);
>>>> }
>>>>
>>>> }
>>>>
>>>>
>>>> AccountPage.java
>>>>
>>>> public class AccountPage extends WebPage{
>>>>
>>>> private Manager manager;
>>>> private User user;
>>>> private Folder folder;
>>>> private MailList tableListPanel;
>>>> private Store store;
>>>>
>>>> public AccountPage(String username,String password) throws
>>>> MessagingException{
>>>> manager=new Manager("AjaxUbiMailDB",1000);
>>>> user=manager.authenticate(username, password);
>>>> add(new Label("welcome","hello "+ user.firstName() + " "
>>>> + user.lastName()
>>>> + "."));
>>>> folder=user.openPopServer();
>>>> tableListPanel=new MailList("mail",user,folder);
>>>> WebMarkupContainer listContainer = new
>>>> WebMarkupContainer("theContainer");
>>>> //generate a markup-id so the contents can be updated
>>>> through an AJAX call
>>>> listContainer.setOutputMarkupId(true);
>>>> listContainer.add(new
>>>> AjaxSelfUpdatingTimerBehavior(Duration.seconds(10)));
>>>> // add the list view to the container
>>>> listContainer.add(tableListPanel);
>>>> // finally add the container to the page
>>>> add(listContainer);
>>>> // add(tableListPanel);
>>>> }
>>>> IModel mailList = new LoadableDetachableModel()
>>>> {
>>>> protected Object load() {
>>>>
>>>> user.closePopServer();
>>>> folder=user.openPopServer();
>>>> return tableListPanel;
>>>> }
>>>> };
>>>> }
>>>>
>>>>
>>>> Please help me...i'm really in trouble!
>>>>
>>>>
>>>>
>>>> Iman Rahmatizadeh wrote:
>>>>>
>>>>> The problem is with the way you fetch the messages, they are not loaded
>>>>> again , just fetched from the same folder instance each time. I guess
>>>>> the
>>>>> folder instance isnt updated between requests.
>>>>>
>>>>> On Fri, May 23, 2008 at 8:58 PM, Davidoff <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>>
>>>>>> it just exists...it's in the code i posted
>>>>>>
>>>>>> IModel mailList = new LoadableDetachableModel()
>>>>>> {
>>>>>> protected Object load() {
>>>>>>
>>>>>> user.openPopServer();
>>>>>> try {
>>>>>> messages=folder.getMessages();
>>>>>> } catch (MessagingException e) {
>>>>>> // TODO Auto-generated catch
>>>>>> block
>>>>>>
>>>>>> e.printStackTrace();
>>>>>> }
>>>>>> List mailList1=Arrays.asList(messages);
>>>>>> return mailList1;
>>>>>> }
>>>>>> };
>>>>>> }
>>>>>>
>>>>>> maybe the problem is that the new mails are not downloaded?!I've to
>>>>>> start
>>>>>> a
>>>>>> new session or reconnect to the pop folder in some way (i think it
>>>>>> just
>>>>>> happens with folder.openPopServer() )??
>>>>>>
>>>>>>
>>>>>> igor.vaynberg wrote:
>>>>>> >
>>>>>> > you should use a loadable detachable model for your listview, that
>>>>>> way
>>>>>> > it will work transparently.
>>>>>> >
>>>>>> > -igor
>>>>>> >
>>>>>> > On Fri, May 23, 2008 at 9:25 AM, Davidoff <[EMAIL PROTECTED]>
>>>>>> wrote:
>>>>>> >>
>>>>>> >> this is code for the mail list (i implemented modal windows in
>>>>>> order
>>>>>> to
>>>>>> >> show
>>>>>> >> emails but JWebUnit tests returned errors then i have to find some
>>>>>> other
>>>>>> >> way
>>>>>> >> to show mails...my priority now is to find the way to refresh the
>>>>>> mail
>>>>>> >> listview:
>>>>>> >>
>>>>>> >> public class MailAccount extends WebPage {
>>>>>> >> private ModalWindow modal;
>>>>>> >> private Folder folder;
>>>>>> >> private User user;
>>>>>> >> private ListView listTable;
>>>>>> >> private List<Message> test;
>>>>>> >> private Message[] messages;
>>>>>> >> private Message msg;
>>>>>> >> private int index;
>>>>>> >> public MailAccount(String username, String password)
>>>>>> >> {
>>>>>> >> Manager manager=new Manager("AjaxUbiMailDB",1000);
>>>>>> >> user=manager.authenticate(username, password);
>>>>>> >> add(new Label("message","Hello " + user.firstName()
>>>>>> +"
>>>>>> "+
>>>>>> >> user.lastName()));
>>>>>> >> Properties sysProperties = System.getProperties();
>>>>>> >> Session
>>>>>> session=Session.getDefaultInstance(sysProperties,
>>>>>> >> null);
>>>>>> >> session.setDebug(false);
>>>>>> >>
>>>>>> >> folder=user.openPopServer();
>>>>>> >> try {
>>>>>> >>
>>>>>> >> add(new Label("contains","Your MailBox
>>>>>> contains
>>>>>> "+
>>>>>> >> folder.getMessageCount() + " messages."));
>>>>>> >>
>>>>>> >>
>>>>>> >> } catch (MessagingException e) {
>>>>>> >> // TODO Auto-generated catch block
>>>>>> >> add(new Label("contains","Wrong Username or
>>>>>> >> password"));
>>>>>> >> System.out.println("Error on opening pop
>>>>>> folder
>>>>>> or
>>>>>> >> something else");
>>>>>> >> //e.printStackTrace();
>>>>>> >> }
>>>>>> >>
>>>>>> >>
>>>>>> >> initMailList();
>>>>>> >>
>>>>>> >> WebMarkupContainer listContainer = new
>>>>>> >> WebMarkupContainer("theContainer");
>>>>>> >> //generate a markup-id so the contents can be
>>>>>> updated
>>>>>> >> through an AJAX call
>>>>>> >> listContainer.setOutputMarkupId(true);
>>>>>> >> listContainer.add(new
>>>>>> >> AjaxSelfUpdatingTimerBehavior(Duration.seconds(5)));
>>>>>> >> // add the list view to the container
>>>>>> >> listContainer.add(listTable);
>>>>>> >> // finally add the container to the page
>>>>>> >> add(listContainer);
>>>>>> >> user.closePopServer();
>>>>>> >> modal = new ModalWindow("modal");
>>>>>> >> addOrReplace(modal);
>>>>>> >> }
>>>>>> >>
>>>>>> >> public void initMailList(){
>>>>>> >> listTable=new ListView("listview",mailList)
>>>>>> >> {
>>>>>> >> private Folder folder=user.openPopServer();
>>>>>> >>
>>>>>> >> public void populateItem(ListItem item)
>>>>>> >> {
>>>>>> >> try {
>>>>>> >> final Message msg=(Message)
>>>>>> >> item.getModelObject();
>>>>>> >> Address[]
>>>>>> >> add=msg.getFrom();
>>>>>> >>
>>>>>> index=msg.getMessageNumber();
>>>>>> >> AjaxLink rate = new
>>>>>> >> AjaxLink("mess") {
>>>>>> >> public void
>>>>>> >> onClick(AjaxRequestTarget target) {
>>>>>> >>
>>>>>> >>
>>>>>> >> GetMessage getMessage;
>>>>>> >>
>>>>>> >> getMessage = new GetMessage(modal.getContentId(), msg){};
>>>>>> >>
>>>>>> >> modal.setContent(getMessage);
>>>>>> >>
>>>>>> >> modal.setInitialHeight(600);
>>>>>> >>
>>>>>> >> modal.setInitialWidth(1000);
>>>>>> >>
>>>>>> >> modal.show(target);
>>>>>> >>
>>>>>> >> modal.setTitle("Mail View");
>>>>>> >>
>>>>>> >> }
>>>>>> >> };
>>>>>> >>
>>>>>> >> rate.add(new
>>>>>> >> Label("prova",String.valueOf(msg.getMessageNumber())));
>>>>>> >>
>>>>>> >> item.add(rate);
>>>>>> >>
>>>>>> >> item.add(new AttributeAppender("class", true, new
>>>>>> >> Model(index % 2 ==0 ? "odd": "even"), " "));
>>>>>> >>
>>>>>> >> item.add(new Label("subject",
>>>>>> >> msg.getSubject().toString()));
>>>>>> >>
>>>>>> >> item.add(new Label("from", add[0].toString()));
>>>>>> >> if
>>>>>> >> (msg.getSentDate()!=null)
>>>>>> >>
>>>>>> >> item.add(new Label("date",
>>>>>> >> msg.getSentDate().toString()));
>>>>>> >> else
>>>>>> >>
>>>>>> >> item.add(new Label("date", "Nothing"));
>>>>>> >> } catch (MessagingException
>>>>>> e)
>>>>>> {
>>>>>> >>
>>>>>> System.out.println("Error
>>>>>> >> populate item");
>>>>>> >> //
>>>>>> >> e.printStackTrace();
>>>>>> >> }
>>>>>> >>
>>>>>> >> }
>>>>>> >> };
>>>>>> >> }
>>>>>> >> IModel mailList = new LoadableDetachableModel()
>>>>>> >> {
>>>>>> >>
>>>>>> >>
>>>>>> >> protected Object load() {
>>>>>> >>
>>>>>> >> user.openPopServer();
>>>>>> >> try {
>>>>>> >>
>>>>>> messages=folder.getMessages();
>>>>>> >> } catch (MessagingException e) {
>>>>>> >> // TODO Auto-generated catch
>>>>>> block
>>>>>> >>
>>>>>> >> e.printStackTrace();
>>>>>> >> }
>>>>>> >> List mailList1=Arrays.asList(messages);
>>>>>> >> return mailList1;
>>>>>> >> }
>>>>>> >> };
>>>>>> >> }
>>>>>> >>
>>>>>> >>
>>>>>> >>
>>>>>> >>
>>>>>> >> igor.vaynberg wrote:
>>>>>> >>>
>>>>>> >>> On Fri, May 23, 2008 at 2:20 AM, Davidoff <[EMAIL PROTECTED]>
>>>>>> wrote:
>>>>>> >>>>
>>>>>> >>>> I'm creating a simple webmail application: i've created a
>>>>>> listview
>>>>>> >>>> where
>>>>>> >>>> the
>>>>>> >>>> items are rows containing the number of the message, the subject
>>>>>> and
>>>>>> so
>>>>>> >>>> on... my target is to reproduce what Gmail does: clicking on the
>>>>>> number
>>>>>> >>>> of a
>>>>>> >>>> mail i wanto to read it's content, and clicking again i want to
>>>>>> return
>>>>>> >>>> to
>>>>>> >>>> the list (the content collapses).How can i do this?
>>>>>> >>>
>>>>>> >>> include a hidden webmarkupcontainer which you then replace with
>>>>>> some
>>>>>> >>> other component that contains the mail content when the header is
>>>>>> >>> clicked. replace it back with a webmarkupcontianer to collapse.
>>>>>> >>>
>>>>>> >>>> Second question: i created a list like this
>>>>>> >>>>
>>>>>> http://www.google.it/search?q=ajax+listview&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:it:official&client=firefox-a
>>>>>> >>>> but even if i send emails to the address in list, the listview
>>>>>> will
>>>>>> not
>>>>>> >>>> refresh(the messages are always the same).
>>>>>> >>>
>>>>>> >>> show us some code
>>>>>> >>>
>>>>>> >>> -igor
>>>>>> >>>
>>>>>> >>>> --
>>>>>> >>>> View this message in context:
>>>>>> >>>>
>>>>>> http://www.nabble.com/Ajax-ListView-as-Gmail-tp17421986p17421986.html
>>>>>> >>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> >>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> >>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>
>>>>>> >>>
>>>>>> ---------------------------------------------------------------------
>>>>>> >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> >>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>> >>>
>>>>>> >>>
>>>>>> >>>
>>>>>> >>
>>>>>> >> --
>>>>>> >> View this message in context:
>>>>>> >>
>>>>>> http://www.nabble.com/Ajax-ListView-as-Gmail-tp17421986p17428158.html
>>>>>> >> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>> >>
>>>>>> >>
>>>>>> >>
>>>>>> ---------------------------------------------------------------------
>>>>>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>> >>
>>>>>> >>
>>>>>> >
>>>>>> >
>>>>>> ---------------------------------------------------------------------
>>>>>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> > For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://www.nabble.com/Ajax-ListView-as-Gmail-tp17421986p17430132.html
>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/Ajax-ListView-as-Gmail-tp17421986p17487871.html
>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/Ajax-ListView-as-Gmail-tp17421986p17539740.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]