git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@111 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
parent
8a8e20a233
commit
5e5263d358
src/main/java/se/su/dsv/scipro
datainitializers
schedule
forms
models
pages
panels
CreateEventPanel.htmlCreateEventPanel.javaCreateGroupEventPanel.htmlCreateGroupEventPanel.javaCreateProjectEventPanel.htmlCreateProjectEventPanel.javaEventPanel.htmlEventPanel.javaGroupEventPanel.htmlGroupEventPanel.javaProjectEventPanel.htmlProjectEventPanel.javaSchedulePlannerPanel.htmlSchedulePlannerPanel.java
@ -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);
|
||||
|
46
src/main/java/se/su/dsv/scipro/schedule/forms/EventForm.java
Normal file
46
src/main/java/se/su/dsv/scipro/schedule/forms/EventForm.java
Normal file
@ -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>
|
101
src/main/java/se/su/dsv/scipro/schedule/panels/EventPanel.java
Normal file
101
src/main/java/se/su/dsv/scipro/schedule/panels/EventPanel.java
Normal file
@ -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"){
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user