Schemat
git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@102 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
parent
b01020c2ff
commit
f43bc9b344
src/main/java/se/su/dsv/scipro/schedule
@ -0,0 +1,93 @@
|
||||
package se.su.dsv.scipro.schedule.forms;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
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.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 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;
|
||||
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> {
|
||||
|
||||
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);
|
||||
|
||||
List<Student> partList = new ArrayList<Student>(p.getProjectParticipants());
|
||||
CheckBoxMultipleChoice<Student> checkBox = new CheckBoxMultipleChoice<Student>("participants", partList);
|
||||
add(checkBox);
|
||||
|
||||
IndicatingAjaxButton saveButton = new IndicatingAjaxButton("saveButton", new Model<String>("Save"), this){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@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 {
|
||||
List<Event> eventList = parent.getListView().getModelObject();
|
||||
|
||||
if(isEdit){
|
||||
eventList.remove(e);
|
||||
}
|
||||
|
||||
eventList.add(model.persist());
|
||||
Collections.sort(eventList);
|
||||
parent.getListContainer().replace(parent.getListView());
|
||||
target.addComponent(parent.getListContainer());
|
||||
target.appendJavascript( parent.getDialog().close().render(true).toString() );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onError(AjaxRequestTarget target, Form<?> form) {
|
||||
target.addComponent(feedbackContainer);
|
||||
}
|
||||
};
|
||||
saveButton.add(new AttributeModifier("class", new Model<String>("ui-button")));
|
||||
add(saveButton);
|
||||
}
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
package se.su.dsv.scipro.schedule.models;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.TreeSet;
|
||||
|
||||
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.ProjectEventDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectEvent;
|
||||
import se.su.dsv.scipro.data.dataobjects.Student;
|
||||
|
||||
public class ProjectEventModel implements IClusterable {
|
||||
|
||||
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());
|
||||
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.setParticipants(new TreeSet<Student>(participants));
|
||||
return peDao.save(event);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
<html>
|
||||
<body>
|
||||
<wicket:extend>
|
||||
|
||||
<h3>Schedule Planner</h3>
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li wicket:id="projectList" style="list-style-type: none;">
|
||||
<a href="#" wicket:id="schedulePlannerLink">
|
||||
<span wicket:id="projectTitle">Link to project schedule here</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="dashboardBox">
|
||||
<h3>Project events</h3>
|
||||
<div wicket:id="spContainer" style="display:none">
|
||||
<div wicket:id="schedulePlannerPanel"></div>
|
||||
</div>
|
||||
</div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,88 @@
|
||||
package se.su.dsv.scipro.schedule.pages;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
|
||||
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.spring.injection.annot.SpringBean;
|
||||
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.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;
|
||||
import se.su.dsv.scipro.schedule.panels.SchedulePlannerPanel;
|
||||
|
||||
public class SchedulePage extends PublicPage {
|
||||
|
||||
@SpringBean
|
||||
private ProjectDao projectDao;
|
||||
|
||||
private User user;
|
||||
private WebMarkupContainer spContainer;
|
||||
|
||||
public SchedulePage(){
|
||||
super();
|
||||
setup();
|
||||
}
|
||||
|
||||
public SchedulePage(final PageParameters pp){
|
||||
super(pp);
|
||||
setup();
|
||||
}
|
||||
|
||||
public void setup(){
|
||||
user = SciProSession.get().getUser();
|
||||
System.out.println(user.getFirstName());
|
||||
List<Project> projects = projectDao.getProjectsByParticipant(user, ProjectStatus.ACTIVE);
|
||||
for(Project p : projects)
|
||||
System.out.println(p.getTitle());
|
||||
|
||||
|
||||
|
||||
spContainer = new WebMarkupContainer("spContainer");
|
||||
spContainer.setOutputMarkupId(true);
|
||||
spContainer.setVersioned(false);
|
||||
spContainer.add(new EmptyPanel("schedulePlannerPanel"));
|
||||
add(spContainer);
|
||||
|
||||
|
||||
ListView<Project> projectList = new ListView<Project>("projectList", projects){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
protected void populateItem(ListItem<Project> item) {
|
||||
|
||||
final Project p = item.getModelObject();
|
||||
IndicatingAjaxLink<Void> schedulePlannerLink = new IndicatingAjaxLink<Void>("schedulePlannerLink"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
SchedulePlannerPanel sp = new SchedulePlannerPanel("schedulePlannerPanel", p, user);
|
||||
spContainer.replace(sp);
|
||||
target.addComponent(spContainer);
|
||||
target.appendJavascript(new StringBuffer(new JsStatement().$(spContainer).chain(new FadeIn(EffectSpeed.FAST)).render(true)).toString());
|
||||
}
|
||||
};
|
||||
|
||||
schedulePlannerLink.add(new Label("projectTitle", p.getTitle()));
|
||||
item.add(schedulePlannerLink);
|
||||
}
|
||||
};
|
||||
|
||||
add(projectList);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
<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>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,25 @@
|
||||
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 {
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<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>
|
||||
<div class="scheduleEventParticipants" wicket:id="eventParticipants">
|
||||
<span wicket:id="participant" class="project">Event participant here</span>
|
||||
</div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,54 @@
|
||||
package se.su.dsv.scipro.schedule.panels;
|
||||
|
||||
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.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.dao.interfaces.EventParticipant;
|
||||
import se.su.dsv.scipro.data.dataobjects.Event;
|
||||
import se.su.dsv.scipro.data.dataobjects.GroupEvent;
|
||||
|
||||
public class GroupEventPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SpringBean
|
||||
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()));
|
||||
|
||||
add(new ListView<EventParticipant>("eventParticipants", e.getEventParticipants()){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void populateItem(ListItem<EventParticipant> item){
|
||||
item.add(new Label("participant", item.getModelObject().getEventParticipantAsString()));
|
||||
add(item);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
<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>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,72 @@
|
||||
package se.su.dsv.scipro.schedule.panels;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
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.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.dao.interfaces.EventParticipant;
|
||||
import se.su.dsv.scipro.data.dataobjects.Event;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectEvent;
|
||||
|
||||
public class ProjectEventPanel extends Panel {
|
||||
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()));
|
||||
|
||||
add(new ListView<EventParticipant>("eventParticipants", e.getEventParticipants()){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void populateItem(ListItem<EventParticipant> item){
|
||||
item.add(new Label("participant", item.getModelObject().getEventParticipantAsString()));
|
||||
add(item);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
<html>
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<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="addEventFromTemplateLink">Add event from template</a>
|
||||
<a href="#" wicket:id="createScheduleFromTemplateLink">Create schedule from template</a>
|
||||
|
||||
<div wicket:id="dialog">
|
||||
<div wicket:id="dialogContainer">
|
||||
<div wicket:id="containerContent">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="scheduleEventList" wicket:id="eventListContainer" id="eventListContainer" >
|
||||
<wicket:container wicket:id="events">
|
||||
<div wicket:id="eventPanel"></div>
|
||||
</wicket:container>
|
||||
</div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,146 @@
|
||||
package se.su.dsv.scipro.schedule.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.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.util.ListModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
|
||||
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;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
|
||||
|
||||
public class SchedulePlannerPanel extends Panel implements AjaxFromDialogUpdatingListPanel<Event> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SpringBean
|
||||
private EventDao eventDao;
|
||||
|
||||
private Project project;
|
||||
private User user;
|
||||
private WebMarkupContainer dialogContainer;
|
||||
private Dialog dialog;
|
||||
private ListView<Event> eventList;
|
||||
private WebMarkupContainer eventListContainer;
|
||||
|
||||
public SchedulePlannerPanel(String id, Project project, User user) {
|
||||
super(id);
|
||||
this.project = project;
|
||||
this.user = user;
|
||||
setup();
|
||||
}
|
||||
|
||||
public void setup(){
|
||||
|
||||
final ListModel<Event> eventsModel = new ListModel<Event>(eventDao.getAllEventsByUserAndProject(user, project));
|
||||
|
||||
eventListContainer = new WebMarkupContainer("eventListContainer");
|
||||
eventListContainer.setOutputMarkupId(true);
|
||||
|
||||
eventList = new ListView<Event>("events", eventsModel){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(ListItem<Event> item) {
|
||||
final Event e = item.getModelObject();
|
||||
item.add(e.getSchedulePanel("eventPanel", SchedulePlannerPanel.this));
|
||||
add(item);
|
||||
}
|
||||
};
|
||||
eventList.setOutputMarkupId(true);
|
||||
eventListContainer.add(eventList);
|
||||
add(eventListContainer);
|
||||
|
||||
add(new Label("selectedProject", project.getTitle()));
|
||||
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);
|
||||
add(dialog);
|
||||
|
||||
AjaxLink<Void> addCustomEventLink = new AjaxLink<Void>("addCustomEventLink"){
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
dialogContainer.replace(new CreateProjectEventPanel("containerContent", project, null, SchedulePlannerPanel.this));
|
||||
target.addComponent(dialogContainer);
|
||||
dialog.setTitle("Add custom event");
|
||||
dialog.open(target);
|
||||
}
|
||||
};
|
||||
|
||||
add(addCustomEventLink);
|
||||
|
||||
AjaxLink<Void> addEventFromTemplateLink = new AjaxLink<Void>("addEventFromTemplateLink"){
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public void onClick(AjaxRequestTarget arg0) {
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
add(addEventFromTemplateLink);
|
||||
|
||||
AjaxLink<Void> createScheduleFromTemplateLink = new AjaxLink<Void>("createScheduleFromTemplateLink"){
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public void onClick(AjaxRequestTarget arg0) {
|
||||
return;
|
||||
}
|
||||
|
||||
public boolean isVisible(){
|
||||
return project.getProjectSchedule() == null;
|
||||
}
|
||||
};
|
||||
|
||||
add(createScheduleFromTemplateLink);
|
||||
|
||||
}
|
||||
|
||||
public Dialog getDialog(){
|
||||
return dialog;
|
||||
}
|
||||
|
||||
public ListView<Event> getListView(){
|
||||
return eventList;
|
||||
}
|
||||
|
||||
public WebMarkupContainer getListContainer(){
|
||||
return eventListContainer;
|
||||
}
|
||||
|
||||
public WebMarkupContainer getDialogContainer(){
|
||||
return dialogContainer;
|
||||
}
|
||||
|
||||
public void removeObjectFromModel(Event object) {
|
||||
eventList.getModelObject().remove(object);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user