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]