git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@111 73ecded7-942e-4092-bab0-0e58ef0ee984

This commit is contained in:
dan-kjel 2011-02-11 15:58:05 +00:00
parent 8a8e20a233
commit 5e5263d358
23 changed files with 548 additions and 206 deletions

@ -127,7 +127,7 @@ public class EventDataInitializer {
groupEvent = new GroupEvent();
groupEvent.setTitle("Group event title");
groupEvent.setDescription("Group Event Description");
groupEvent.setDueDate(new Date(System.currentTimeMillis() + 5000000));
groupEvent.setDueDate(new Date(System.currentTimeMillis() + 500000000));
groupEvent.addProjectSchedule(schedule1);
groupEvent.addProjectSchedule(schedule2);
groupEvent.setCreator(groupEventCreatorUserRole);

@ -0,0 +1,46 @@
package se.su.dsv.scipro.schedule.forms;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import se.su.dsv.scipro.components.CustomDateTimeField;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
import se.su.dsv.scipro.data.dataobjects.Event;
public abstract class EventForm<T> extends Form<T> {
private static final long serialVersionUID = 1L;
protected WebMarkupContainer feedbackContainer;
protected FeedbackPanel feedbackPanel;
protected boolean isEdit;
protected AjaxFromDialogUpdatingListPanel<Event> parent;
public EventForm(String id, T model, final AjaxFromDialogUpdatingListPanel<Event> parent, final boolean isEdit) {
super(id, new CompoundPropertyModel<T>(model));
this.parent = parent;
this.isEdit = isEdit;
feedbackContainer = new WebMarkupContainer("feedbackContainer");
feedbackContainer.setOutputMarkupId(true);
feedbackContainer.setVersioned(false);
feedbackPanel = new FeedbackPanel("feedbackPanel");
feedbackContainer.add(feedbackPanel);
add(feedbackContainer);
TextField<String> title = new TextField<String>("title");
title.setRequired(true);
add(title);
TextArea<String> description = new TextArea<String>("description");
add(description);
CustomDateTimeField dp = new CustomDateTimeField("date");
dp.setRequired(true);
add(dp);
}
}

@ -0,0 +1,16 @@
package se.su.dsv.scipro.schedule.forms;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.GroupEvent;
import se.su.dsv.scipro.schedule.models.GroupEventModel;
public class GroupEventForm extends EventForm<GroupEventModel>{
private static final long serialVersionUID = 1L;
public GroupEventForm(String id, final GroupEvent ge, final AjaxFromDialogUpdatingListPanel<Event> parent, final boolean isEdit) {
super(id, new GroupEventModel(ge), parent, isEdit);
}
}

@ -9,16 +9,14 @@ import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBoxMultipleChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.odlabs.wiquery.core.effects.EffectSpeed;
import org.odlabs.wiquery.core.effects.fading.FadeIn;
import org.odlabs.wiquery.core.javascript.JsStatement;
import se.su.dsv.scipro.components.CustomDateTimeField;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.Project;
@ -26,33 +24,12 @@ import se.su.dsv.scipro.data.dataobjects.ProjectEvent;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.schedule.models.ProjectEventModel;
public class ProjectEventForm extends Form<ProjectEventModel> {
public class ProjectEventForm extends EventForm<ProjectEventModel> {
private static final long serialVersionUID = 1L;
private WebMarkupContainer feedbackContainer;
private FeedbackPanel feedbackPanel;
public ProjectEventForm(String id, final ProjectEvent e, Project p, final AjaxFromDialogUpdatingListPanel<Event> parent, final boolean isEdit) {
super(id, new CompoundPropertyModel<ProjectEventModel>(new ProjectEventModel(e)));
feedbackContainer = new WebMarkupContainer("feedbackContainer");
feedbackContainer.setOutputMarkupId(true);
feedbackContainer.setVersioned(false);
feedbackPanel = new FeedbackPanel("feedbackPanel");
feedbackContainer.add(feedbackPanel);
add(feedbackContainer);
TextField<String> title = new TextField<String>("title");
title.setRequired(true);
add(title);
TextArea<String> description = new TextArea<String>("description");
add(description);
CustomDateTimeField dp = new CustomDateTimeField("date");
dp.setRequired(true);
add(dp);
super(id, new ProjectEventModel(e), parent, isEdit);
List<Student> partList = new ArrayList<Student>(p.getProjectParticipants());
CheckBoxMultipleChoice<Student> checkBox = new CheckBoxMultipleChoice<Student>("participants", partList);
add(checkBox);
@ -63,11 +40,19 @@ public class ProjectEventForm extends Form<ProjectEventModel> {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
ProjectEventModel model = (ProjectEventModel) form.getModelObject();
if(model.getDate().before(new Date())){
error("Please provide a date in the future");
invalid();
target.addComponent(feedbackContainer);
} else {
}
if(model.getParticipants().size() == 0){
error("The event needs at least one participant");
invalid();
}
if(isValid()){
List<Event> eventList = parent.getListView().getModelObject();
if(isEdit){
@ -79,6 +64,11 @@ public class ProjectEventForm extends Form<ProjectEventModel> {
parent.getListContainer().replace(parent.getListView());
target.addComponent(parent.getListContainer());
target.appendJavascript( parent.getDialog().close().render(true).toString() );
WebMarkupContainer feedback = new WebMarkupContainer("toasterFeedback");
feedback.setOutputMarkupId(true);
feedback.add(new Label("tfMessage", "Deleted"));
target.appendJavascript(new StringBuffer(new JsStatement().$(feedback).chain(new FadeIn(EffectSpeed.SLOW)).render(true)).toString());
target.addComponent(feedback);
}
}

@ -0,0 +1,60 @@
package se.su.dsv.scipro.schedule.models;
import java.util.Date;
import org.apache.wicket.IClusterable;
import org.apache.wicket.injection.web.InjectorHolder;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
import se.su.dsv.scipro.data.dataobjects.Event;
public abstract class EventModel<T extends Event> implements IClusterable {
private static final long serialVersionUID = 1L;
@SpringBean
protected EventDao eventDao;
protected T event;
private String title;
private String description;
private Date date;
public EventModel(T e) {
this.event = e;
if(event.getDueDate() == null){
event.setDueDate(new Date());
}
setTitle(event.getTitle());
setDescription(event.getDescription());
setDate(event.getDueDate());
InjectorHolder.getInjector().inject(this);
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public abstract T persist();
}

@ -0,0 +1,47 @@
package se.su.dsv.scipro.schedule.models;
import java.util.ArrayList;
import java.util.Set;
import java.util.TreeSet;
import se.su.dsv.scipro.data.dataobjects.GroupEvent;
import se.su.dsv.scipro.data.dataobjects.ProjectSchedule;
public class GroupEventModel extends EventModel<GroupEvent> {
private static final long serialVersionUID = 1L;
private Set<ProjectSchedule> eventParticipants;
public GroupEventModel(GroupEvent e) {
super(e);
if(event.getProjectSchedules() == null){
eventParticipants = new TreeSet<ProjectSchedule>();
} else {
new TreeSet<ProjectSchedule>(event.getProjectSchedules());
}
}
public Set<ProjectSchedule> getEventParticipants() {
return eventParticipants;
}
public void setEventParticipants(Set<ProjectSchedule> eventParticipants) {
this.eventParticipants = eventParticipants;
}
@Override
public GroupEvent persist() {
event.setTitle(getTitle());
event.setDescription(getDescription());
event.setDueDate(getDate());
event.setProjectSchedules(new ArrayList<ProjectSchedule>(eventParticipants));
return (GroupEvent) eventDao.save(event);
}
}

@ -13,72 +13,33 @@ import se.su.dsv.scipro.data.dao.interfaces.ProjectEventDao;
import se.su.dsv.scipro.data.dataobjects.ProjectEvent;
import se.su.dsv.scipro.data.dataobjects.Student;
public class ProjectEventModel implements IClusterable {
public class ProjectEventModel extends EventModel<ProjectEvent> {
private static final long serialVersionUID = 1L;
@SpringBean
private ProjectEventDao peDao;
private ProjectEvent event;
private String title;
private String description;
private Date date;
private List<Student> participants;
public ProjectEventModel(ProjectEvent event) {
this.event = event;
if(event.getDueDate() == null){
event.setDueDate(new Date());
}
setTitle(event.getTitle());
setDescription(event.getDescription());
public ProjectEventModel(ProjectEvent e) {
super(e);
if(event.getParticipants() != null){
setParticipants(new ArrayList<Student>(event.getParticipants()));
}
setDate(event.getDueDate());
InjectorHolder.getInjector().inject(this);
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public List<Student> getParticipants() {
return participants;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public void setParticipants(List<Student> participants) {
this.participants = participants;
}
public ProjectEvent persist(){
event.setTitle(title);
event.setDescription(description);
event.setDueDate(date);
event.setTitle(getTitle());
event.setDescription(getDescription());
event.setDueDate(getDate());
event.setParticipants(new TreeSet<Student>(participants));
return peDao.save(event);
return (ProjectEvent) eventDao.save(event);
}
}

@ -1,7 +1,6 @@
<html>
<body>
<wicket:extend>
<h3>Schedule Planner</h3>
<div>

@ -10,6 +10,7 @@ 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.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.odlabs.wiquery.core.effects.EffectSpeed;
import org.odlabs.wiquery.core.effects.fading.FadeIn;
@ -18,8 +19,6 @@ import org.odlabs.wiquery.core.javascript.JsStatement;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.basepages.PublicPage;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dao.interfaces.ProjectScheduleDao;
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.data.enums.ProjectStatus;
@ -50,8 +49,6 @@ public class SchedulePage extends PublicPage {
for(Project p : projects)
System.out.println(p.getTitle());
spContainer = new WebMarkupContainer("spContainer");
spContainer.setOutputMarkupId(true);
spContainer.setVersioned(false);

@ -0,0 +1,19 @@
<html>
<body>
<wicket:panel>
<form wicket:id="eventForm" class="dialogForm">
<div wicket:id="feedbackContainer">
<div wicket:id="feedbackPanel"></div>
</div>
<p>Title:</p>
<input type="text" wicket:id="title" />
<p>Description:</p>
<textarea wicket:id="description"></textarea>
<p>Date:</p>
<div wicket:id="date"></div>
<wicket:child />
</form>
</wicket:panel>
</body>
</html>

@ -0,0 +1,36 @@
package se.su.dsv.scipro.schedule.panels;
import org.apache.wicket.markup.html.panel.Panel;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.schedule.forms.EventForm;
import se.su.dsv.scipro.schedule.models.EventModel;
public abstract class CreateEventPanel<E extends Event, F extends EventForm<? extends EventModel<E>>> extends Panel {
private static final long serialVersionUID = 1L;
protected final Project project;
protected final E event;
protected final AjaxFromDialogUpdatingListPanel<Event> parent;
public CreateEventPanel(String id, E event, Project p, AjaxFromDialogUpdatingListPanel<Event> parent){
super(id);
this.project = p;
this.parent = parent;
System.out.println(project.getProjectSchedule().getId());
boolean isEdit = true;
if(event == null){
this.event = newEventInstance();
isEdit = false;
} else {
this.event = event;
}
add(newFormInstance(isEdit));
}
public abstract E newEventInstance();
public abstract F newFormInstance(boolean isEdit);
}

@ -0,0 +1,6 @@
<html>
<body>
<wicket:extend>
</wicket:extend>
</body>
</html>

@ -0,0 +1,31 @@
package se.su.dsv.scipro.schedule.panels;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.GroupEvent;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.schedule.forms.GroupEventForm;
public class CreateGroupEventPanel extends CreateEventPanel<GroupEvent, GroupEventForm> {
private static final long serialVersionUID = 1L;
public CreateGroupEventPanel(String id, GroupEvent event, Project p, AjaxFromDialogUpdatingListPanel<Event> parent) {
super(id, event, p, parent);
}
@Override
public GroupEvent newEventInstance() {
GroupEvent ge = new GroupEvent();
if(project != null){
ge.addProjectSchedule(project.getProjectSchedule());
}
return ge;
}
@Override
public GroupEventForm newFormInstance(boolean isEdit) {
return new GroupEventForm("eventForm", event, parent, isEdit);
}
}

@ -1,23 +1,12 @@
<html>
<body>
<wicket:panel>
<form wicket:id="eventForm">
<div wicket:id="feedbackContainer">
<div wicket:id="feedbackPanel"></div>
</div>
<p>Title:</p>
<input type="text" wicket:id="title" />
<p>Description:</p>
<textarea wicket:id="description"></textarea>
<p>Date:</p>
<div wicket:id="date"></div>
<p>Select participant(s):</p>
<span wicket:id="participants">
<input type="checkbox" />
</span>
<br />
<input type="submit" wicket:id="saveButton" />
</form>
</wicket:panel>
<wicket:extend>
<p>Select participant(s):</p>
<span wicket:id="participants">
<input type="checkbox" />
</span>
<br />
<input type="submit" wicket:id="saveButton" />
</wicket:extend>
</body>
</html>

@ -1,25 +1,28 @@
package se.su.dsv.scipro.schedule.panels;
import org.apache.wicket.markup.html.panel.Panel;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.ProjectEvent;
import se.su.dsv.scipro.schedule.forms.ProjectEventForm;
public class CreateProjectEventPanel extends Panel {
public class CreateProjectEventPanel extends CreateEventPanel<ProjectEvent, ProjectEventForm> {
private static final long serialVersionUID = 1L;
public CreateProjectEventPanel(String id, Project p, ProjectEvent e, AjaxFromDialogUpdatingListPanel<Event> parent){
super(id);
boolean isEdit = true;
if(e == null){
e = new ProjectEvent();
e.setProjectSchedule(p.getProjectSchedule());
isEdit = false;
}
add(new ProjectEventForm("eventForm", e, p, parent, isEdit));
super(id, e, p, parent);
}
@Override
public ProjectEvent newEventInstance() {
ProjectEvent e = new ProjectEvent();
e.setProjectSchedule(project.getProjectSchedule());
return e;
}
@Override
public ProjectEventForm newFormInstance(boolean isEdit) {
return new ProjectEventForm("eventForm", event, project, parent, isEdit);
}
}

@ -0,0 +1,28 @@
<html>
<body>
<wicket:panel>
<div class="scheduleEvent">
<div class="scheduleEventHeader">
<span wicket:id="eventTitle">Event title here</span>
<span wicket:id="eventDueDate">Event date here</span>
<div wicket:id="eventDeleteLink" class="icon icon-delete"></div>
<div wicket:id="eventEditLink" class="icon icon-edit"></div>
</div>
<div class="scheduleEventContent">
<div class="scheduleEventLeftColumn">
<span wicket:id="eventDescription">eventDescription</span>
</div>
<div class="scheduleEventRightColumn">
<wicket:child />
</div>
</div>
<div class="scheduleEventFooter">
<span wicket:id="timeDiffDays" class="icon icon-timeDiff">18</span> <span wicket:id="timeDiffDaysText">days</span>
<span wicket:id="timeDiffHours">5</span> <span wicket:id="timeDiffHoursText">hours</span>
</div>
</div>
</wicket:panel>
</body>
</html>

@ -0,0 +1,101 @@
package se.su.dsv.scipro.schedule.panels;
import java.util.Date;
import java.util.List;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.datetime.PatternDateConverter;
import org.apache.wicket.datetime.markup.html.basic.DateLabel;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.basic.MultiLineLabel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
import se.su.dsv.scipro.data.dataobjects.Event;
public abstract class EventPanel<T extends Event> extends Panel {
private static final long serialVersionUID = 1L;
@SpringBean
protected EventDao eventDao;
protected final AjaxFromDialogUpdatingListPanel<Event> parent;
protected final T event;
public EventPanel(String id, T event, final AjaxFromDialogUpdatingListPanel<Event> parent){
super(id);
this.event = event;
this.parent = parent;
add(new Label("eventTitle", event.getTitle()));
add(new DateLabel("eventDueDate", new Model<Date>(event.getDueDate()), new PatternDateConverter("yyyy-MM-dd HH:mm", false)));
add(new Label("eventDescription", event.getDescription()));
WebMarkupContainer editDiv = new WebMarkupContainer("eventEditLink");
editDiv.setOutputMarkupId(true);
editDiv.add(getEditBehavior());
add(editDiv);
WebMarkupContainer deleteDiv = new WebMarkupContainer("eventDeleteLink");
deleteDiv.setOutputMarkupId(true);
deleteDiv.add(getDeleteBehavior());
add(deleteDiv);
Long timeDiffDays = null;
Long timeDiffHours = null;
List<Event> eventList = parent.getListView().getModelObject();
final int index = eventList.indexOf(event) + 1;
final int eventListSize = eventList.size();
if(index < eventList.size()){
long timeDiff = (eventList.get(index).getDueDate().getTime() - event.getDueDate().getTime()) / (1000 * 60 * 60);
timeDiffHours = timeDiff % 24;
timeDiffDays = timeDiff / 24;
}
final Model<Long> timeDiffDaysModel = new Model<Long>(timeDiffDays);
add(new Label("timeDiffDays", timeDiffDaysModel){
private static final long serialVersionUID = 1L;
public boolean isVisible(){
return index < eventListSize;
}
});
add(new Label("timeDiffDaysText", "days "){
private static final long serialVersionUID = 1L;
public boolean isVisible(){
return index < eventListSize;
}
});
final Model<Long> timeDiffHoursModel = new Model<Long>(timeDiffHours);
add(new Label("timeDiffHours", timeDiffHoursModel){
private static final long serialVersionUID = 1L;
public boolean isVisible(){
return index < eventListSize;
}
});
add(new Label("timeDiffHoursText", "hours"){
private static final long serialVersionUID = 1L;
public boolean isVisible(){
return index < eventListSize;
}
});
}
public abstract AjaxEventBehavior getEditBehavior();
public abstract AjaxEventBehavior getDeleteBehavior();
}

@ -1,16 +1,10 @@
<html>
<body>
<wicket:panel>
<div class="scheduleEventHeader">
<span wicket:id="eventTitle">Event title here</span>
<a href="#" wicket:id="eventDeleteLink">Delete</a>
</div>
<div class="scheduleEventContent">
<span>Due date: <span wicket:id="eventDueDate"></span></span>
<wicket:extend>
<span>Participants:</span>
<div class="scheduleEventParticipants" wicket:id="eventParticipants">
<span wicket:id="participant" class="project">Event participant here</span>
<span wicket:id="participant" class="icon icon-project">Event participant here</span>
</div>
</div>
</wicket:panel>
</wicket:extend>
</body>
</html>

@ -1,11 +1,13 @@
package se.su.dsv.scipro.schedule.panels;
import java.util.List;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
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.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
@ -14,7 +16,7 @@ import se.su.dsv.scipro.data.dao.interfaces.EventParticipant;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.GroupEvent;
public class GroupEventPanel extends Panel {
public class GroupEventPanel extends EventPanel<GroupEvent> {
private static final long serialVersionUID = 1L;
@ -22,24 +24,7 @@ public class GroupEventPanel extends Panel {
private EventDao eventDao;
public GroupEventPanel(String id, final GroupEvent e, final AjaxFromDialogUpdatingListPanel<Event> parent){
super(id);
add(new Label("eventTitle", e.getTitle()));
add(new AjaxLink<Void>("eventDeleteLink"){
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
eventDao.lazyDelete(e);
parent.getListView().getModelObject().remove(e);
target.addComponent(parent.getListContainer());
}
});
add(new Label("eventDueDate", e.getDueDate().toString()));
super(id, e, parent);
add(new ListView<EventParticipant>("eventParticipants", e.getEventParticipants()){
private static final long serialVersionUID = 1L;
@ -51,4 +36,38 @@ public class GroupEventPanel extends Panel {
}
});
}
@Override
public AjaxEventBehavior getEditBehavior() {
return new AjaxEventBehavior("onclick"){
private static final long serialVersionUID = 1L;
@Override
public void onEvent(AjaxRequestTarget target) {
parent.getDialogContainer().replace(new CreateGroupEventPanel("containerContent", event, null, parent));
target.addComponent(parent.getDialogContainer());
parent.getDialog().setTitle("Edit event");
parent.getDialog().open(target);
}
};
}
@Override
public AjaxEventBehavior getDeleteBehavior() {
return new AjaxEventBehavior("onclick"){
private static final long serialVersionUID = 1L;
@Override
public void onEvent(AjaxRequestTarget target) {
eventDao.lazyDelete(event);
parent.getListView().getModelObject().remove(event);
target.addComponent(parent.getListContainer());
}
};
}
}

@ -1,17 +1,10 @@
<html>
<body>
<wicket:panel>
<div class="scheduleEventHeader">
<span wicket:id="eventTitle">Event title here</span>
<a href="#" wicket:id="eventEditLink">Edit</a>
<a href="#" wicket:id="eventDeleteLink">Delete</a>
</div>
<div class="scheduleEventContent">
<span>Date: <span wicket:id="eventDueDate"></span></span>
<div class="scheduleEventParticipants" wicket:id="eventParticipants">
<span wicket:id="participant" class="user">Event participant here</span>
</div>
</div>
</wicket:panel>
<wicket:extend>
<span>Participants:</span>
<div class="scheduleEventParticipants" wicket:id="eventParticipants">
<span wicket:id="participant" class="icon icon-user">Event participant here</span>
</div>
</wicket:extend>
</body>
</html>

@ -1,63 +1,25 @@
package se.su.dsv.scipro.schedule.panels;
import java.util.Iterator;
import org.apache.wicket.ajax.AjaxEventBehavior;
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 org.odlabs.wiquery.core.effects.EffectSpeed;
import org.odlabs.wiquery.core.effects.fading.FadeOut;
import org.odlabs.wiquery.core.javascript.JsStatement;
import se.su.dsv.scipro.data.dao.interfaces.AjaxFromDialogUpdatingListPanel;
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
import se.su.dsv.scipro.data.dao.interfaces.EventParticipant;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.ProjectEvent;
public class ProjectEventPanel extends Panel {
public class ProjectEventPanel extends EventPanel<ProjectEvent> {
private static final long serialVersionUID = 1L;
@SpringBean
private EventDao eventDao;
private ProjectEvent event;
public ProjectEventPanel(String id, final ProjectEvent e, final AjaxFromDialogUpdatingListPanel<Event> parent){
super(id);
this.event = e;
add(new Label("eventTitle", e.getTitle()));
add(new AjaxLink<Void>("eventEditLink"){
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
parent.getDialogContainer().replace(new CreateProjectEventPanel("containerContent", e.getProjectSchedule().getProject(), e, parent));
target.addComponent(parent.getDialogContainer());
parent.getDialog().setTitle("Edit event");
parent.getDialog().open(target);
}
});
add(new AjaxLink<Void>("eventDeleteLink"){
private static final long serialVersionUID = 1L;
public void onClick(AjaxRequestTarget target) {
eventDao.lazyDelete(event);
parent.getListView().getModelObject().remove(event);
target.addComponent(parent.getListContainer());
}
});
add(new Label("eventDueDate", e.getDueDate().toString()));
super(id, e, parent);
add(new ListView<EventParticipant>("eventParticipants", e.getEventParticipants()){
private static final long serialVersionUID = 1L;
@ -69,4 +31,35 @@ public class ProjectEventPanel extends Panel {
}
});
}
@Override
public AjaxEventBehavior getEditBehavior() {
return new AjaxEventBehavior("onclick"){
private static final long serialVersionUID = 1L;
@Override
public void onEvent(AjaxRequestTarget target) {
parent.getDialogContainer().replace(new CreateProjectEventPanel("containerContent", event.getProjectSchedule().getProject(), event, parent));
target.addComponent(parent.getDialogContainer());
parent.getDialog().setTitle("Edit event");
parent.getDialog().open(target);
}
};
}
@Override
public AjaxEventBehavior getDeleteBehavior() {
return new AjaxEventBehavior("onclick"){
private static final long serialVersionUID = 1L;
public void onEvent(AjaxRequestTarget target) {
eventDao.lazyDelete(event);
parent.getListView().getModelObject().remove(event);
target.addComponent(parent.getListContainer());
}
};
}
}

@ -4,7 +4,8 @@
<div class="boxContent">
<h4 wicket:id="selectedProject">Selected project title here</h4>
<a href="#" wicket:id="addCustomEventLink">Add custom event</a>
<a href="#" wicket:id="addProjectEventLink">Add project event</a>
<a href="#" wicket:id="addGroupEventLink">Add group event</a>
<a href="#" wicket:id="addEventFromTemplateLink">Add event from template</a>
<a href="#" wicket:id="createScheduleFromTemplateLink">Create schedule from template</a>

@ -73,7 +73,7 @@ public class SchedulePlannerPanel extends Panel implements AjaxFromDialogUpdatin
dialog.setWidth(600);
add(dialog);
AjaxLink<Void> addCustomEventLink = new AjaxLink<Void>("addCustomEventLink"){
AjaxLink<Void> addProjectEventLink = new AjaxLink<Void>("addProjectEventLink"){
/**
*
*/
@ -82,12 +82,25 @@ public class SchedulePlannerPanel extends Panel implements AjaxFromDialogUpdatin
public void onClick(AjaxRequestTarget target) {
dialogContainer.replace(new CreateProjectEventPanel("containerContent", project, null, SchedulePlannerPanel.this));
target.addComponent(dialogContainer);
dialog.setTitle("Add custom event");
dialog.setTitle("Add project event");
dialog.open(target);
}
};
add(addCustomEventLink);
add(addProjectEventLink);
AjaxLink<Void> addGroupEventLink = new AjaxLink<Void>("addGroupEventLink"){
private static final long serialVersionUID = 1L;
public void onClick(AjaxRequestTarget target) {
dialogContainer.replace(new CreateGroupEventPanel("containerContent", null, project, SchedulePlannerPanel.this));
target.addComponent(dialogContainer);
dialog.setTitle("Add Group Event");
dialog.open(target);
}
};
add(addGroupEventLink);
AjaxLink<Void> addEventFromTemplateLink = new AjaxLink<Void>("addEventFromTemplateLink"){