Done with upcomingEventPanel

This commit is contained in:
Fredrik Norberg 2011-07-19 11:49:28 +02:00
parent bfa5f8ad7c
commit e842e1e543
2 changed files with 108 additions and 19 deletions
src/main/java/se/su/dsv/scipro/project/panels

@ -4,14 +4,20 @@
<wicket:panel>
<div class="span-10 last">
<h5 class="peer-title">Upcoming events</h5>
<div wicket:id="eventListContainer">
<div wicket:id="events">
<span wicket:id="title"></span>
<span wicket:id="date"></span>
</div>
<div wicket:id="eventListContainer" class="span-10 last">
<div class="span-10 last"></div>
<div class="span-10 last" wicket:id="events">
<div wicket:id="eventPanel"></div>
</div>
</div>
</div>
<div wicket:id="dialog">
<div wicket:id="dialogContainer">
<div wicket:id="containerContent">
</div>
</div>
</div>
</wicket:panel>
</body>
</html>

@ -1,18 +1,22 @@
package se.su.dsv.scipro.project.panels;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
import org.apache.wicket.ajax.AjaxRequestTarget;
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.EmptyPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.odlabs.wiquery.core.effects.EffectSpeed;
import org.odlabs.wiquery.ui.dialog.Dialog;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
@ -20,6 +24,11 @@ import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.project.pages.ProjectEventPage;
import se.su.dsv.scipro.project.pages.ProjectScheduleGeneratorPage;
import se.su.dsv.scipro.project.pages.ProjectSchedulePlannerPage;
import se.su.dsv.scipro.schedule.baseevent.panels.EventSchedulePanel;
import se.su.dsv.scipro.util.WiQueryCoreEffectsHelper;
public class UpcomingEventPanel extends Panel{
@ -39,8 +48,11 @@ public class UpcomingEventPanel extends Panel{
private User user;
private ListView<Event> eventList;
private IModel<List<Event>> listModel;
private WebMarkupContainer wmc;
private WebMarkupContainer eventListContainer;
private int amountToShow;
private WebMarkupContainer dialogContainer;
private Dialog dialog;
private Model<String> dialogTitle = new Model<String>("");
public UpcomingEventPanel(String id, final Project p, final int amountToShow){
super(id);
@ -48,6 +60,19 @@ public class UpcomingEventPanel extends Panel{
this.user = SciProSession.get().getUser();
this.amountToShow = amountToShow;
dialogContainer = new WebMarkupContainer("dialogContainer");
dialogContainer.setOutputMarkupId(true);
dialogContainer.setVersioned(false);
dialogContainer.add(new EmptyPanel("containerContent"));
dialog = new Dialog("dialog");
dialog.setModal(true);
dialog.setAutoOpen(false);
dialog.add(dialogContainer);
dialog.setWidth(600);
dialog.setHeight(450);
dialog.setTitle(dialogTitle);
add(dialog);
listModel = new LoadableDetachableModel<List<Event>>(){
/**
*
@ -58,10 +83,9 @@ public class UpcomingEventPanel extends Panel{
protected List<Event> load() {
List<Event> list = eventDao.getEventsByUserAndProject(user, project,
new Date(), null, null);
//Collections.reverse(list);
/*if(amountToShow < list.size()){ //use this to limit the events shown
if(amountToShow < list.size()){ //use this to limit the events shown
list = list.subList(0, amountToShow);
}*/
}
return list;
@ -72,20 +96,79 @@ public class UpcomingEventPanel extends Panel{
eventList = new ListView<Event>("events", listModel){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Event> item) {
final Event e = item.getModelObject();
item.add(new EventSchedulePanel("eventPanel", e, project, false){
private static final long serialVersionUID = 1L;
@Override
@Override
public void replaceAndOpenDialog(AjaxRequestTarget target,
Panel replacePanel) {
dialogContainer.replace(replacePanel);
target.addComponent(dialogContainer);
dialog.open(target);
}
@Override
public void refreshListView(AjaxRequestTarget target) {
target.addComponent(WiQueryCoreEffectsHelper.fadeIn(eventListContainer, EffectSpeed.FAST));
}
@Override
public void closeDialogAndRefreshListView(AjaxRequestTarget target) {
target.addComponent(WiQueryCoreEffectsHelper.fadeIn(eventListContainer, EffectSpeed.FAST));
dialog.close(target);
}
@Override
public void onEventDetailsClick() {
PageParameters pp = getEventPageParameters();
pp.add(Event.PP_EVENT_ID, String.valueOf(e.getId()));
setResponsePage(getEventPageClass(), pp);
}
});
add(item);
}
};
/*@Override
protected void populateItem(ListItem<Event> item) {
final Event e = item.getModelObject();
item.add(new Label("title", e.getTitle()));
item.add(new Label("date", e.getDueDate().toString()));
}
};
};*/
wmc = new WebMarkupContainer("eventListContainer");
wmc.setOutputMarkupId(true);
wmc.add(eventList);
add(wmc);
eventListContainer = new WebMarkupContainer("eventListContainer");
eventListContainer.setOutputMarkupId(true);
eventListContainer.add(eventList);
add(eventListContainer);
}
public Class<? extends Page> getGeneratorPageClass() {
return ProjectScheduleGeneratorPage.class;
}
public Class<? extends Page> getEventPageClass() {
return ProjectEventPage.class;
}
public PageParameters getSchedulePageParameters(){
return new PageParameters();
}
public PageParameters getGeneratorPageParameters(){
return new PageParameters();
}
public PageParameters getEventPageParameters(){
return new PageParameters();
}
}