git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@229 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
joha-asc 2011-02-23 08:52:53 +00:00
parent c51b91ded2
commit 636f26335f
10 changed files with 524 additions and 127 deletions

@ -0,0 +1,15 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"
>
<body>
<wicket:panel>
<a wicket:id="first">&lt;&lt;</a>&nbsp;<a wicket:id="prev">&lt;</a>
<span wicket:id="navigation">
<a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a>
</span>
<a wicket:id="next">&gt;</a>&nbsp;<a wicket:id="last">&gt;&gt;</a>
</wicket:panel>
</body>
</html>

@ -0,0 +1,16 @@
package se.su.dsv.scipro.message.panels;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
public class CustomPagingNavigator extends PagingNavigator {
public CustomPagingNavigator(final String id, final IPageable pageable) {
this(id, pageable, null);
}
public CustomPagingNavigator(final String id, final IPageable pageable,
final IPagingLabelProvider labelProvider) {
super(id, pageable, labelProvider);
}
}

@ -28,28 +28,7 @@
<td><a href="#" wicket:id="removeLink">Remove<p/></a></td>
</tr>
</table>
<table wicket:id="private-message-item">
<tr>
<hr/>
</tr>
<tr><strong>Private Message</strong></tr>
<tr >
<td wicket:id="application.date"></td>
</tr>
<tr >
<td wicket:id="application.from"></td>
</tr>
<tr >
<td wicket:id="application.title"></td>
</tr>
<tr>
<td wicket:id="application.message"></td>
</tr>
<tr>
<td><a href="#" wicket:id="removeLink">Remove<p/></a></td>
</tr>
</table>
<div wicket:id="navigator"></div>
</div>
</wicket:panel>
</body>

@ -5,6 +5,7 @@ package se.su.dsv.scipro.message.panels;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
@ -13,6 +14,10 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.list.PageableListView;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.spring.injection.annot.SpringBean;
@ -27,6 +32,7 @@ import se.su.dsv.scipro.data.dao.interfaces.UserDao;
import se.su.dsv.scipro.data.dataobjects.BoardMessage;
import se.su.dsv.scipro.data.dataobjects.MessageBoard;
import se.su.dsv.scipro.data.dataobjects.PrivateMessage;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.Recipient;
import se.su.dsv.scipro.data.dataobjects.User;
@ -36,83 +42,50 @@ import se.su.dsv.scipro.data.dataobjects.User;
*/
public class MessagePanel extends Panel {
@SpringBean
private MessageBoardDao messageBoardDao;
@SpringBean
private BoardMessageDao boardMessageDao;
@SpringBean
private UserDao userDao;
@SpringBean
private SupervisorMessageBoardDao supervisorMessageBoardDao;
@SpringBean
private SupervisorBoardMessageDao supervisorBoardMessageDao;
@SpringBean
private ProjectDao projectDao;
@SpringBean
private PrivateMessageDao privateMessageDao;
@SpringBean
private RecipientDao recipientDao;
private WebMarkupContainer listContainer;
private CustomPagingNavigator pagingNavigator;
private MessageBoard mb;
private Project project;
private ListView<BoardMessage> boardMessageListView;
private PageableListView<BoardMessage> boardMessageListView;
private ListView<Recipient> privateMessageListView;
public MessagePanel(String id, MessageBoard mb) {
public MessagePanel(String id, Project project) {
super(id);
this.mb = mb;
// BoardMessage bm = new BoardMessage();
// bm.setFromUser(user);
// bm.setTitle("WuuuuuuuuuuuuuuuuT");
// bm.setMessage("Tjena tja");
// bm = boardMessageDao.save(bm);
//
// mb.setTitle("Apans messageBoard");
// List<BoardMessage> bmList = mb.getBoardMessageList();
// bmList.add(bm);
// mb.setBoardMessageList(bmList);
// mb.setProject(projectDao.load(1L));
// mb = messageBoardDao.save(mb);
//
// SupervisorBoardMessage sbm = new SupervisorBoardMessage();
// sbm.setFromUser(userDao.load(1L));
// sbm.setTitle("Han jobbar sakta");
// sbm.setMessage("Fett långsamtttttt");
// sbm = supervisorBoardMessageDao.save(sbm);
//
// SupervisorMessageBoard smb = new SupervisorMessageBoard();
// smb.setTitle("Gorillans supervisorMessageBoard");
// smb.setProject(projectDao.load(2L));
// List<SupervisorBoardMessage> sbmList =
// smb.getSupervisorBoardMessageList();
// sbmList.add(sbm);
// smb.setSupervisorBoardMessageList(sbmList);
//
// smb = supervisorMessageBoardDao.save(smb);
this.project = project;
loadListView();
listContainer = new WebMarkupContainer("listContainer");
listContainer.add(boardMessageListView);
listContainer.add(privateMessageListView);
listContainer.add(pagingNavigator = new CustomPagingNavigator("navigator", boardMessageListView){
@Override
public boolean isVisible(){
return boardMessageListView.size() > 0;
}
});
listContainer.setOutputMarkupId(true);
add(listContainer);
}
public void loadListView() {
User user = userDao.load(1L);
mb = messageBoardDao.reLoad(mb);
List<BoardMessage> bmList = mb.getBoardMessageList();
project = projectDao.reLoad(project);
List<BoardMessage> bmList = project.getMessageBoard().getBoardMessageList();
Collections.sort(bmList, new Comparator<BoardMessage>() {
public int compare(BoardMessage o1, BoardMessage o2) {
return o1.getDateCreated().compareTo(o2.getDateCreated());
}
});
boardMessageListView = new ListView<BoardMessage>(
"board-message-item", bmList) {
boardMessageListView = new PageableListView<BoardMessage>(
"board-message-item", bmList, 5) {
@Override
protected void populateItem(final ListItem<BoardMessage> item) {
@ -127,34 +100,8 @@ public class MessagePanel extends Panel {
};
};
privateMessageListView = new ListView<Recipient>(
"private-message-item", recipientDao.getRecipientsByUser(user)) {
@Override
protected void populateItem(final ListItem<Recipient> item) {
final Recipient rec = item.getModelObject();
PrivateMessage pm = rec.getPrivateMessage();
item.add(new Label("application.date", pm.getDateCreated()
.toString()));
item.add(new Label("application.from", pm.getFromUser()
.getFirstName() + " " + pm.getFromUser().getLastName()));
item.add(new Label("application.title", pm.getTitle()));
item.add(new Label("application.message", pm.getMessage()));
RecipientDeleteLink rdl = new RecipientDeleteLink("removeLink", item.getModelObject());
item.add(rdl);
};
};
}
public void removeMessage(BoardMessage bm) {
boardMessageDao.delete(bm);
}
public void removeRecipient(Recipient r) {
recipientDao.delete(r);
}
private class BoardMessageDeleteLink extends AjaxLink<BoardMessage> {
@ -170,39 +117,18 @@ public class MessagePanel extends Panel {
@Override
public void onClick(AjaxRequestTarget target) {
boardMessage = boardMessageDao.reLoad(boardMessage);
System.out.println(boardMessage);
boardMessageDao.delete(boardMessage);
listContainer.remove(boardMessageListView);
listContainer.remove(privateMessageListView);
listContainer.remove(pagingNavigator);
loadListView();
listContainer.add(boardMessageListView);
listContainer.add(privateMessageListView);
target.addComponent(listContainer);
}
}
private class RecipientDeleteLink extends AjaxLink<BoardMessage> {
private static final long serialVersionUID = 5900025667153930797L;
private Recipient recipient;
public RecipientDeleteLink(String id, Recipient recipient) {
super(id);
this.recipient = recipient;
}
@Override
public void onClick(AjaxRequestTarget target) {
recipient = recipientDao.reLoad(recipient);
recipientDao.lazyDelete(recipient);
listContainer.remove(boardMessageListView);
listContainer.remove(privateMessageListView);
loadListView();
listContainer.add(boardMessageListView);
listContainer.add(privateMessageListView);
listContainer.add(pagingNavigator = new CustomPagingNavigator("navigator", boardMessageListView){
@Override
public boolean isVisible(){
return boardMessageListView.size() > 0;
}
});
target.addComponent(listContainer);
}

@ -0,0 +1,45 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"
>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
</head>
<body>
<wicket:panel>
<div wicket:id="listContainer">
<table wicket:id="private-message-item">
<tr>
<hr/>
</tr>
<tr><strong>Private Message</strong></tr>
<tr >
<td wicket:id="application.date"></td>
</tr>
<tr >
<td wicket:id="application.dateRead"></td>
</tr>
<tr >
<td wicket:id="application.from"></td>
</tr>
<tr >
<td wicket:id="application.title"></td>
</tr>
<tr>
<td wicket:id="application.message"></td>
</tr>
<tr>
<td><a href="#" wicket:id="removeLink">Remove</a></td>
</tr>
<tr>
<td><a href="#" wicket:id="setReadLink">Set Read<p/></a></td>
</tr>
</table>
</div>
</wicket:panel>
</body>
</html>

@ -0,0 +1,131 @@
/**
*
*/
package se.su.dsv.scipro.message.panels;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.list.PageableListView;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.BoardMessageDao;
import se.su.dsv.scipro.data.dao.interfaces.MessageBoardDao;
import se.su.dsv.scipro.data.dao.interfaces.PrivateMessageDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dao.interfaces.RecipientDao;
import se.su.dsv.scipro.data.dao.interfaces.SupervisorBoardMessageDao;
import se.su.dsv.scipro.data.dao.interfaces.SupervisorMessageBoardDao;
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
import se.su.dsv.scipro.data.dataobjects.BoardMessage;
import se.su.dsv.scipro.data.dataobjects.MessageBoard;
import se.su.dsv.scipro.data.dataobjects.PrivateMessage;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.Recipient;
import se.su.dsv.scipro.data.dataobjects.User;
/**
* @author Johan Aschan - aschan@dsv.su.se
*
*/
public class PrivateMessagePanel extends Panel {
@SpringBean
private RecipientDao recipientDao;
private WebMarkupContainer listContainer;
private PageableListView<BoardMessage> boardMessageListView;
private ListView<Recipient> privateMessageListView;
private User user;
public PrivateMessagePanel(String id, User user) {
super(id);
this.user = user;
loadListView();
listContainer = new WebMarkupContainer("listContainer");
listContainer.add(privateMessageListView);
listContainer.setOutputMarkupId(true);
add(listContainer);
}
public void loadListView() {
privateMessageListView = new ListView<Recipient>(
"private-message-item", recipientDao.getRecipientsByUser(user)) {
@Override
protected void populateItem(final ListItem<Recipient> item) {
final Recipient rec = item.getModelObject();
PrivateMessage pm = rec.getPrivateMessage();
item.add(new Label("application.date", pm.getDateCreated()
.toString()));
String read = "Not Read";
if(rec.getDateRead() != null){
read = rec.getDateRead().toString();
}
item.add(new Label("application.dateRead", read));
item.add(new Label("application.from", pm.getFromUser()
.getFirstName() + " " + pm.getFromUser().getLastName()));
item.add(new Label("application.title", pm.getTitle()));
item.add(new Label("application.message", pm.getMessage()));
RecipientDeleteLink rdl = new RecipientDeleteLink("removeLink", item.getModelObject());
item.add(new AjaxLink<Recipient>("setReadLink"){
@Override
public void onClick(AjaxRequestTarget target) {
rec.setDateRead(new Date());
recipientDao.save(rec);
//Recipient rec2 = recipientDao.reLoad(rec);
listContainer.remove(privateMessageListView);
loadListView();
listContainer.add(privateMessageListView);
target.addComponent(listContainer);
}
});
item.add(rdl);
};
};
}
private class RecipientDeleteLink extends AjaxLink<Recipient> {
private static final long serialVersionUID = 5900025667153930797L;
private Recipient recipient;
public RecipientDeleteLink(String id, Recipient recipient) {
super(id);
this.recipient = recipient;
}
@Override
public void onClick(AjaxRequestTarget target) {
recipient = recipientDao.reLoad(recipient);
recipientDao.lazyDelete(recipient);
listContainer.remove(privateMessageListView);
loadListView();
listContainer.add(privateMessageListView);
target.addComponent(listContainer);
}
}
}

@ -0,0 +1,35 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"
>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
</head>
<body>
<wicket:panel>
<div wicket:id="listContainer">
<table wicket:id="private-message-item">
<tr>
<hr/>
</tr>
<tr><strong>Sent Private Message</strong></tr>
<tr >
<td wicket:id="date"></td>
</tr>
<tr >
<td wicket:id="to"></td>
</tr>
<tr >
<td wicket:id="title"></td>
</tr>
<tr>
<td><a href="#" wicket:id="removeLink">Remove</a></td>
</tr>
</table>
</div>
</wicket:panel>
</body>
</html>

@ -0,0 +1,90 @@
/**
*
*/
package se.su.dsv.scipro.message.panels;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.PrivateMessageDao;
import se.su.dsv.scipro.data.dao.interfaces.RecipientDao;
import se.su.dsv.scipro.data.dataobjects.PrivateMessage;
import se.su.dsv.scipro.data.dataobjects.User;
/**
* @author Johan Aschan - aschan@dsv.su.se
*
*/
public class SentPrivateMessagePanel extends Panel {
@SpringBean
private PrivateMessageDao privateMessageDao;
private WebMarkupContainer listContainer;
private ListView<PrivateMessage> privateMessageListView;
private User user;
public SentPrivateMessagePanel(String id, User user) {
super(id);
this.user = user;
loadListView();
listContainer = new WebMarkupContainer("listContainer");
listContainer.add(privateMessageListView);
listContainer.setOutputMarkupId(true);
add(listContainer);
}
public void loadListView() {
privateMessageListView = new ListView<PrivateMessage>(
"private-message-item", privateMessageDao.getPrivateMessagesFromUser(user)) {
@Override
protected void populateItem(final ListItem<PrivateMessage> item) {
final PrivateMessage pm = item.getModelObject();
item.add(new Label("date", pm.getDateCreated()
.toString()));;
item.add(new Label("to", pm.getRecipientList().toString()));
item.add(new Label("title", pm.getTitle()));
DeletePrivateMessage rdl = new DeletePrivateMessage("removeLink", item.getModelObject());
item.add(rdl);
};
};
}
private class DeletePrivateMessage extends AjaxLink<PrivateMessage> {
private static final long serialVersionUID = 5900025667153930797L;
private PrivateMessage privateMessage;
public DeletePrivateMessage(String id, PrivateMessage privateMessage) {
super(id);
this.privateMessage = privateMessage;
}
@Override
public void onClick(AjaxRequestTarget target) {
privateMessage = privateMessageDao.reLoad(privateMessage);
privateMessageDao.lazyDelete(privateMessage);
listContainer.remove(privateMessageListView);
loadListView();
listContainer.add(privateMessageListView);
target.addComponent(listContainer);
}
}
}

@ -0,0 +1,35 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"
>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
</head>
<body>
<wicket:panel>
<div wicket:id="listContainer">
<table wicket:id="board-message-item">
<tr>
<hr/>
</tr>
<tr><strong>Supervisor Board message</strong></tr>
<tr >
<td wicket:id="application.date"></td>
</tr>
<tr >
<td wicket:id="application.from"></td>
</tr>
<tr>
<td wicket:id="application.message"></td>
</tr>
<tr>
<td><a href="#" wicket:id="removeLink">Remove<p/></a></td>
</tr>
</table>
<div wicket:id="navigator"></div>
</div>
</wicket:panel>
</body>
</html>

@ -0,0 +1,125 @@
/**
*
*/
package se.su.dsv.scipro.message.panels;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.list.PageableListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.BoardMessageDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dao.interfaces.SupervisorBoardMessageDao;
import se.su.dsv.scipro.data.dataobjects.BoardMessage;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.Recipient;
import se.su.dsv.scipro.data.dataobjects.SupervisorBoardMessage;
/**
* @author Johan Aschan - aschan@dsv.su.se
*
*/
public class SupervisorMessageBoardPanel extends Panel {
@SpringBean
private SupervisorBoardMessageDao boardMessageDao;
@SpringBean
private ProjectDao projectDao;
private WebMarkupContainer listContainer;
private CustomPagingNavigator pagingNavigator;
private Project project;
private PageableListView<SupervisorBoardMessage> boardMessageListView;
public SupervisorMessageBoardPanel(String id, Project project) {
super(id);
this.project = project;
loadListView();
listContainer = new WebMarkupContainer("listContainer");
listContainer.add(boardMessageListView);
listContainer.add(pagingNavigator = new CustomPagingNavigator("navigator", boardMessageListView){
@Override
public boolean isVisible(){
return boardMessageListView.size() > 0;
}
});
listContainer.setOutputMarkupId(true);
add(listContainer);
}
public void loadListView() {
project = projectDao.reLoad(project);
List<SupervisorBoardMessage> bmList = project.getSupervisorMessageBoard().getSupervisorBoardMessageList();
Collections.sort(bmList, new Comparator<SupervisorBoardMessage>() {
public int compare(SupervisorBoardMessage o1, SupervisorBoardMessage o2) {
return o1.getDateCreated().compareTo(o2.getDateCreated());
}
});
boardMessageListView = new PageableListView<SupervisorBoardMessage>(
"board-message-item", bmList, 5) {
@Override
protected void populateItem(final ListItem<SupervisorBoardMessage> item) {
final SupervisorBoardMessage bm = item.getModelObject();
item.add(new Label("application.date", bm.getDateCreated()
.toString()));
item.add(new Label("application.from", bm.getFromUser()
.getFirstName() + " " + bm.getFromUser().getLastName()));
item.add(new Label("application.message", bm.getMessage()));
BoardMessageDeleteLink bmdl = new BoardMessageDeleteLink("removeLink", item.getModelObject());
item.add(bmdl);
};
};
}
private class BoardMessageDeleteLink extends AjaxLink<BoardMessage> {
private static final long serialVersionUID = 5900025667153930797L;
private SupervisorBoardMessage boardMessage;
public BoardMessageDeleteLink(String id, SupervisorBoardMessage boardMessage) {
super(id);
this.boardMessage = boardMessage;
}
@Override
public void onClick(AjaxRequestTarget target) {
boardMessage = boardMessageDao.reLoad(boardMessage);
boardMessageDao.delete(boardMessage);
listContainer.remove(boardMessageListView);
listContainer.remove(pagingNavigator);
loadListView();
listContainer.add(boardMessageListView);
listContainer.add(pagingNavigator = new CustomPagingNavigator("navigator", boardMessageListView){
@Override
public boolean isVisible(){
return boardMessageListView.size() > 0;
}
});
target.addComponent(listContainer);
}
}
}