Schematemplates
git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@331 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
parent
9218f6ffd5
commit
e8d6a10592
src/main/java/se/su/dsv/scipro/schedule/templates
4
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplateDetailsPage.html
Normal file
4
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplateDetailsPage.html
Normal file
@ -0,0 +1,4 @@
|
||||
<wicket:extend>
|
||||
<h3>Schedule template details</h3>
|
||||
<div wicket:id="scheduleTemplateDetailsPanel"></div>
|
||||
</wicket:extend>
|
31
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplateDetailsPage.java
Normal file
31
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplateDetailsPage.java
Normal file
@ -0,0 +1,31 @@
|
||||
package se.su.dsv.scipro.schedule.templates.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.basepages.PublicPage;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplateDetailsPanel;
|
||||
|
||||
public class ScheduleTemplateDetailsPage extends PublicPage {
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
public ScheduleTemplateDetailsPage(final PageParameters pp){
|
||||
Long id = pp.getAsLong("id");
|
||||
|
||||
if(id == null){
|
||||
//TODO: 404
|
||||
}
|
||||
|
||||
ScheduleTemplate s = scheduleTemplateDao.load(id);
|
||||
|
||||
if(s == null){
|
||||
//404
|
||||
}
|
||||
|
||||
add(new ScheduleTemplateDetailsPanel("scheduleTemplateDetailsPanel", s));
|
||||
}
|
||||
}
|
8
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplateEditorPage.html
Normal file
8
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplateEditorPage.html
Normal file
@ -0,0 +1,8 @@
|
||||
<html>
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<h3>Schedule Template Editor</h3>
|
||||
<div wicket:id="scheduleTemplateFormPanel"></div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
33
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplateEditorPage.java
Normal file
33
src/main/java/se/su/dsv/scipro/schedule/templates/pages/ScheduleTemplateEditorPage.java
Normal file
@ -0,0 +1,33 @@
|
||||
package se.su.dsv.scipro.schedule.templates.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.SciProApplication;
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.basepages.PublicPage;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplateFormPanel;
|
||||
|
||||
public class ScheduleTemplateEditorPage extends PublicPage {
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
public ScheduleTemplateEditorPage(final PageParameters pp, Long id){
|
||||
super(pp);
|
||||
ScheduleTemplate st = null;
|
||||
|
||||
if(id != null){
|
||||
st = scheduleTemplateDao.load(id);
|
||||
}
|
||||
|
||||
add(new ScheduleTemplateFormPanel("scheduleTemplateFormPanel", st, id != null));
|
||||
}
|
||||
|
||||
public ScheduleTemplateEditorPage(final PageParameters pp){
|
||||
this(pp, null);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div wicket:id="scheduleTemplatePanel"></div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,18 @@
|
||||
package se.su.dsv.scipro.schedule.templates.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.IAjaxIndicatorAware;
|
||||
|
||||
import se.su.dsv.scipro.basepages.PublicPage;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.ScheduleTemplatePanel;
|
||||
|
||||
public class ScheduleTemplatePage extends PublicPage {
|
||||
|
||||
public ScheduleTemplatePage(final PageParameters pp){
|
||||
super(pp);
|
||||
setVersioned(false);
|
||||
add(new ScheduleTemplatePanel("scheduleTemplatePanel", false));
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
<wicket:panel>
|
||||
<form wicket:id="eventTemplateForm">
|
||||
<div wicket:id="eventTemplateFeedbackContainer">
|
||||
<div wicket:id="eventTemplateFeedback"></div>
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="eventTemplateTitle">Title:</label>
|
||||
<input type="text" wicket:id="title" name="eventTemplateTitle" />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="eventTemplateDescription">Description:</label>
|
||||
<textarea wicket:id="description" name="eventTemplateDescription"></textarea>
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="estimatedTimeConsumption">Estimated time consumtion:</label>
|
||||
<input type="text" wicket:id="estimatedTimeConsumption" name="estimatedTimeConsumption" />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<input type="submit" wicket:id="addEventTemplateButton" />
|
||||
<input type="submit" wicket:id="cancelEventTemplateButton" />
|
||||
</div>
|
||||
</form>
|
||||
</wicket:panel>
|
@ -0,0 +1,95 @@
|
||||
package se.su.dsv.scipro.schedule.templates.panels;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
|
||||
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.Panel;
|
||||
import org.apache.wicket.model.CompoundPropertyModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
|
||||
import se.su.dsv.scipro.components.FormFeedbackPanel;
|
||||
import se.su.dsv.scipro.data.dataobjects.EventTemplate;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
|
||||
public class EventTemplateFormPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private EventTemplate eventTemplate;
|
||||
private ScheduleTemplate owner;
|
||||
private boolean isEdit;
|
||||
|
||||
public EventTemplateFormPanel(String id, EventTemplate eventTemplate, ScheduleTemplate owner, boolean isEdit){
|
||||
super(id);
|
||||
this.eventTemplate = eventTemplate;
|
||||
this.owner = owner;
|
||||
this.isEdit = isEdit;
|
||||
add(new EventTemplateForm("eventTemplateForm"));
|
||||
}
|
||||
|
||||
protected void onEventTemplateAdded(AjaxRequestTarget target){
|
||||
|
||||
}
|
||||
|
||||
protected void onEventTemplatedCanceled(AjaxRequestTarget target){
|
||||
|
||||
}
|
||||
|
||||
class EventTemplateForm extends Form<EventTemplate> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private FormFeedbackPanel<EventTemplate> eventTemplateFeedbackPanel;
|
||||
private WebMarkupContainer eventTemplateFeedbackContainer;
|
||||
|
||||
public EventTemplateForm(String id) {
|
||||
super(id, new CompoundPropertyModel<EventTemplate>(eventTemplate));
|
||||
|
||||
eventTemplateFeedbackContainer = new WebMarkupContainer("eventTemplateFeedbackContainer");
|
||||
eventTemplateFeedbackContainer.setOutputMarkupId(true);
|
||||
eventTemplateFeedbackPanel = new FormFeedbackPanel<EventTemplate>("eventTemplateFeedback", this);
|
||||
eventTemplateFeedbackContainer.add(eventTemplateFeedbackPanel);
|
||||
add(eventTemplateFeedbackContainer);
|
||||
|
||||
add(new TextField<String>("title").setRequired(true));
|
||||
add(new TextArea<String>("description"));
|
||||
add(new TextField<Long>("estimatedTimeConsumption"));
|
||||
|
||||
add(new AjaxButton("addEventTemplateButton", new Model<String>(isEdit ? "Done" : "Add")){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onSubmit(AjaxRequestTarget target,
|
||||
Form<?> form) {
|
||||
EventTemplate eTemplate = (EventTemplate) form.getModelObject();
|
||||
|
||||
if(!isEdit){
|
||||
eTemplate.setNumberInOrder(owner.getEventTemplates().size());
|
||||
owner.addEventTemplate(eTemplate);
|
||||
}
|
||||
EventTemplateFormPanel.this.onEventTemplateAdded(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(AjaxRequestTarget target, Form<?> form){
|
||||
target.addComponent(eventTemplateFeedbackContainer);
|
||||
}
|
||||
});
|
||||
|
||||
add(new AjaxButton("cancelEventTemplateButton", new Model<String>("Cancel")){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
|
||||
EventTemplateFormPanel.this.onEventTemplatedCanceled(target);
|
||||
}
|
||||
|
||||
}.setDefaultFormProcessing(false));
|
||||
}
|
||||
}
|
||||
}
|
62
src/main/java/se/su/dsv/scipro/schedule/templates/panels/ScheduleTemplateDetailsPanel.html
Normal file
62
src/main/java/se/su/dsv/scipro/schedule/templates/panels/ScheduleTemplateDetailsPanel.html
Normal file
@ -0,0 +1,62 @@
|
||||
<html>
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div style="">
|
||||
|
||||
<h4 wicket:id="templateName">Tempalte name</h4>
|
||||
<span wicket:id="templateDescription">Template description</span>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Number of events:</td>
|
||||
<td><span wicket:id="numEventTemplates">Number of events</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Total estimated time:</td>
|
||||
<td><span wicket:id="totalEstimatedTime">Total time</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Creator:</td>
|
||||
<td><span wicket:id="templateCreator">Creator</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Date created:</td>
|
||||
<td><span wicket:id="templateCreated"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Last updated:</td>
|
||||
<td><span wicket:id="templateUpdated"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>System template:</td>
|
||||
<td><span wicket:id="isSysAdminTemplate"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Active:</td>
|
||||
<td><span wicket:id="templateActive"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Direct link:</td>
|
||||
<td><a href="#" wicket:id="directLink">link</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<h4>Events</h4>
|
||||
<div wicket:id="eventList">
|
||||
<div style="border:1px solid black; margin: 0.5em 0;">
|
||||
<div>
|
||||
<span wicket:id="etTitle">Event title</span>
|
||||
</div>
|
||||
<div>
|
||||
<span wicket:id="etDescription">Event description</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>Estimated time: </span><span wicket:id="etTimeConsumption">Time consumption</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>For debug number in order: </span><span wicket:id="etNumberInOrder">Number in order</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
87
src/main/java/se/su/dsv/scipro/schedule/templates/panels/ScheduleTemplateDetailsPanel.java
Normal file
87
src/main/java/se/su/dsv/scipro/schedule/templates/panels/ScheduleTemplateDetailsPanel.java
Normal file
@ -0,0 +1,87 @@
|
||||
package se.su.dsv.scipro.schedule.templates.panels;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.behavior.AttributeAppender;
|
||||
import org.apache.wicket.datetime.PatternDateConverter;
|
||||
import org.apache.wicket.datetime.markup.html.basic.DateLabel;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||
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.components.ExpandableMultiLineLabel;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.EventTemplate;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplateDetailsPage;
|
||||
|
||||
public class ScheduleTemplateDetailsPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private ScheduleTemplate template;
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
public ScheduleTemplateDetailsPanel(String id, final ScheduleTemplate st){
|
||||
super(id);
|
||||
template = scheduleTemplateDao.reLoad(st);
|
||||
|
||||
add(new Label("templateName", template.getTemplateName()));
|
||||
|
||||
add(new ExpandableMultiLineLabel("templateDescription", 100, template.getTemplateDescription() != null ?
|
||||
template.getTemplateDescription() : "", false));
|
||||
|
||||
List<EventTemplate> etList = template.getEventTemplates();
|
||||
|
||||
add(new Label("numEventTemplates", etList.size() + ""));
|
||||
long totalEstimatedTime = 0;
|
||||
for(EventTemplate et : etList){
|
||||
totalEstimatedTime += et.getEstimatedTimeConsumption();
|
||||
}
|
||||
add(new Label("totalEstimatedTime", totalEstimatedTime + ""));
|
||||
|
||||
add(template.getCreator().getWebLabel("templateCreator"));
|
||||
final PatternDateConverter pc = new PatternDateConverter("yyyy-MM-dd hh-mm", false);
|
||||
add(new DateLabel("templateCreated", new Model<Date>(template.getDateCreated()), pc));
|
||||
add(new DateLabel("templateUpdated", new Model<Date>(template.getLastModified()), pc));
|
||||
|
||||
Label isSysAdminTemplateLabel = new Label("isSysAdminTemplate", "");
|
||||
isSysAdminTemplateLabel.add(new AttributeAppender("class", new Model<String>("icon " + (template.isSysAdminTemplate() ? "icon-check" : "icon-delete")), " "));
|
||||
add(isSysAdminTemplateLabel);
|
||||
|
||||
Label active = new Label("templateActive", "");
|
||||
active.add(new AttributeAppender("class", new Model<String>("icon " + (template.isActive() ? "icon-check" : "icon-delete")), " "));
|
||||
add(active);
|
||||
|
||||
final PageParameters pp = new PageParameters();
|
||||
pp.put("id", template.getId());
|
||||
BookmarkablePageLink<ScheduleTemplateDetailsPage> directLink = new BookmarkablePageLink<ScheduleTemplateDetailsPage>("directLink", ScheduleTemplateDetailsPage.class, pp);
|
||||
add(directLink);
|
||||
|
||||
add(new ListView<EventTemplate>("eventList", etList){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(ListItem<EventTemplate> item) {
|
||||
EventTemplate et = item.getModelObject();
|
||||
item.setOutputMarkupId(true);
|
||||
item.add(new Label("etTitle", et.getTitle()));
|
||||
item.add(new ExpandableMultiLineLabel("etDescription", 100, et.getDescription() != null ? et.getDescription() : "", false));
|
||||
item.add(new Label("etTimeConsumption", et.getEstimatedTimeConsumption() + ""));
|
||||
item.add(new Label("etNumberInOrder", et.getNumberInOrder() + ""));
|
||||
add(item);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
55
src/main/java/se/su/dsv/scipro/schedule/templates/panels/ScheduleTemplateFormPanel.html
Normal file
55
src/main/java/se/su/dsv/scipro/schedule/templates/panels/ScheduleTemplateFormPanel.html
Normal file
@ -0,0 +1,55 @@
|
||||
<wicket:panel>
|
||||
<form wicket:id="templateForm">
|
||||
<div wicket:id="feedbackContainer">
|
||||
<div wicket:id="feedbackPanel"></div>
|
||||
</div>
|
||||
<div class="float-left" style="width: 20em;">
|
||||
<h5>General</h5>
|
||||
<div class="formRow">
|
||||
<label for="templateName">Name:</label>
|
||||
<input type="text" wicket:id="templateName" name="templateName" />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="templateDescription">Description:</label>
|
||||
<textarea wicket:id="templateDescription" name="templateDescription"></textarea>
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<label for="active">Active:</label>
|
||||
<input type="checkbox" wicket:id="active" name="active" />
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<span>Days total: </span><span wicket:id="totalEstimatedTime">Number of days</span>
|
||||
</div>
|
||||
<div class="formRow">
|
||||
<input type="submit" wicket:id="saveButton" />
|
||||
<input type="submit" wicket:id="cancelButton" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="float-left" style="width: 30em; margin-left: 2em;">
|
||||
<h5>Events</h5>
|
||||
<div class="formRow">
|
||||
<span wicket:id="addEventTemplate" class="icon icon-button icon-plus"></span><span>Add event template to schedule</span>
|
||||
<div wicket:id="addEventTemplateContainer" style="display:none;">
|
||||
<div wicket:id="addEventTemplateFormPanel"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div wicket:id="eventTemplateListContainer">
|
||||
<div wicket:id="eventTemplates" class="connectedSortable" style="border: 1px solid black; margin: 5px 5px; padding: 0.3em;background-color:#B3D1FF;">
|
||||
<div style="border-bottom: 1px dashed black; margin: 2px 3px;">
|
||||
<span wicket:id="eventTemplateTitle">Event template title</span>
|
||||
<span wicket:id="deleteEventTemplateIcon" class="icon icon-button icon-delete floating-icon float-right"></span>
|
||||
<span wicket:id="editEventTemplateIcon" class="icon icon-button icon-pencil floating-icon float-right"></span>
|
||||
</div>
|
||||
<div>
|
||||
<span>Estimated time:</span><span wicket:id="eventTemplateTimeConsumption">Event template time consumption</span>
|
||||
</div>
|
||||
<div wicket:id="editEventTemplateContainer">
|
||||
<div wicket:id="eventTemplateFormContainer">
|
||||
<div wicket:id="editEventTemplateFormPanel"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</wicket:panel>
|
291
src/main/java/se/su/dsv/scipro/schedule/templates/panels/ScheduleTemplateFormPanel.java
Normal file
291
src/main/java/se/su/dsv/scipro/schedule/templates/panels/ScheduleTemplateFormPanel.java
Normal file
@ -0,0 +1,291 @@
|
||||
package se.su.dsv.scipro.schedule.templates.panels;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.Component;
|
||||
import org.apache.wicket.ajax.AjaxEventBehavior;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.CheckBox;
|
||||
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.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.CompoundPropertyModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.model.util.ListModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.core.effects.EffectSpeed;
|
||||
import org.odlabs.wiquery.ui.sortable.SortableAjaxBehavior;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.components.FormFeedbackPanel;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.EventTemplate;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectEventTemplate;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplatePage;
|
||||
import se.su.dsv.scipro.util.JavascriptEventConfirmation;
|
||||
import se.su.dsv.scipro.util.WiQueryCoreEffectsHelper;
|
||||
|
||||
public class ScheduleTemplateFormPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
public ScheduleTemplateFormPanel(String id, ScheduleTemplate template, boolean isSysAdminView) {
|
||||
super(id);
|
||||
|
||||
if(template == null){
|
||||
template = new ScheduleTemplate();
|
||||
template.setCreator(SciProSession.get().getUser());
|
||||
template.setSysAdminTemplate(isSysAdminView);
|
||||
} else {
|
||||
template = scheduleTemplateDao.reLoad(template);
|
||||
}
|
||||
|
||||
add(new ScheduleTemplateForm("templateForm", template));
|
||||
}
|
||||
|
||||
class ScheduleTemplateForm extends Form<ScheduleTemplate> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private WebMarkupContainer addEventTemplateContainer;
|
||||
private WebMarkupContainer eventTemplateListContainer;
|
||||
private WebMarkupContainer feedbackContainer;
|
||||
private FormFeedbackPanel<ScheduleTemplate> feedbackPanel;
|
||||
private Label totalEstimatedTimeLabel;
|
||||
private Long totalEstimatedTime = (long) 0;
|
||||
|
||||
public ScheduleTemplateForm(String id, final ScheduleTemplate template) {
|
||||
super(id, new CompoundPropertyModel<ScheduleTemplate>(template));
|
||||
|
||||
feedbackContainer = new WebMarkupContainer("feedbackContainer");
|
||||
feedbackContainer.setOutputMarkupId(true);
|
||||
feedbackPanel = new FormFeedbackPanel<ScheduleTemplate>("feedbackPanel", this);
|
||||
feedbackContainer.add(feedbackPanel);
|
||||
add(feedbackContainer);
|
||||
|
||||
add(new TextField<String>("templateName").setRequired(true));
|
||||
add(new TextArea<String>("templateDescription"));
|
||||
add(new CheckBox("active"));
|
||||
|
||||
updateEstimatedTime();
|
||||
totalEstimatedTimeLabel = new Label("totalEstimatedTime", new Model<Long>(){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Long getObject(){
|
||||
updateEstimatedTime();
|
||||
return totalEstimatedTime;
|
||||
}
|
||||
});
|
||||
totalEstimatedTimeLabel.setOutputMarkupId(true);
|
||||
add(totalEstimatedTimeLabel);
|
||||
|
||||
eventTemplateListContainer = new WebMarkupContainer("eventTemplateListContainer");
|
||||
eventTemplateListContainer.setOutputMarkupId(true);
|
||||
|
||||
addEventTemplateContainer = new WebMarkupContainer("addEventTemplateContainer");
|
||||
addEventTemplateContainer.setOutputMarkupId(true);
|
||||
addEventTemplateContainer.add(new EmptyPanel("addEventTemplateFormPanel"));
|
||||
add(addEventTemplateContainer);
|
||||
|
||||
WebMarkupContainer addEventTemplate = new WebMarkupContainer("addEventTemplate");
|
||||
addEventTemplate.setOutputMarkupId(true);
|
||||
addEventTemplate.add(new AjaxEventBehavior("onclick"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onEvent(AjaxRequestTarget target) {
|
||||
addEventTemplateContainer.replace(new EventTemplateFormPanel("addEventTemplateFormPanel", new ProjectEventTemplate(), template, false){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
protected void onEventTemplateAdded(AjaxRequestTarget target){
|
||||
System.out.println("Total now: " + totalEstimatedTimeLabel.getDefaultModelObject());
|
||||
target.addComponent(totalEstimatedTimeLabel);
|
||||
target.addComponent(eventTemplateListContainer);
|
||||
target.appendJavascript(WiQueryCoreEffectsHelper.slideUpJs(addEventTemplateContainer, EffectSpeed.FAST));
|
||||
}
|
||||
@Override
|
||||
protected void onEventTemplatedCanceled(AjaxRequestTarget target){
|
||||
target.appendJavascript(WiQueryCoreEffectsHelper.slideUpJs(addEventTemplateContainer, EffectSpeed.FAST));
|
||||
}
|
||||
|
||||
});
|
||||
target.addComponent(WiQueryCoreEffectsHelper.slideDown(addEventTemplateContainer, EffectSpeed.FAST));
|
||||
|
||||
}
|
||||
});
|
||||
add(addEventTemplate);
|
||||
|
||||
final ListView<EventTemplate> eventList = new ListView<EventTemplate>("eventTemplates",
|
||||
new ListModel<EventTemplate>(template.getEventTemplates())){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(final ListItem<EventTemplate> item) {
|
||||
final EventTemplate et = item.getModelObject();
|
||||
item.add(new Label("eventTemplateTitle", new Model<String>(et.getTitle())));
|
||||
item.add(new Label("eventTemplateTimeConsumption", new Model<Long>(et.getEstimatedTimeConsumption())));
|
||||
|
||||
final WebMarkupContainer editEventContainer = new WebMarkupContainer("editEventTemplateContainer");
|
||||
editEventContainer.setOutputMarkupId(true);
|
||||
final WebMarkupContainer eventTemplateFormContainer = new WebMarkupContainer("eventTemplateFormContainer");
|
||||
eventTemplateFormContainer.setOutputMarkupId(true);
|
||||
eventTemplateFormContainer.add(new EmptyPanel("editEventTemplateFormPanel"));
|
||||
editEventContainer.add(eventTemplateFormContainer);
|
||||
item.add(editEventContainer);
|
||||
|
||||
WebMarkupContainer editEventTemplateIcon = new WebMarkupContainer("editEventTemplateIcon");
|
||||
editEventTemplateIcon.setOutputMarkupId(true);
|
||||
editEventTemplateIcon.add(new AjaxEventBehavior("onclick"){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onEvent(AjaxRequestTarget target) {
|
||||
eventTemplateFormContainer.replace(new EventTemplateFormPanel("editEventTemplateFormPanel", et, template, true){
|
||||
private static final long serialVersionUID = 1L;
|
||||
protected void onEventTemplateAdded(AjaxRequestTarget target){
|
||||
target.addComponent(totalEstimatedTimeLabel);
|
||||
target.addComponent(eventTemplateListContainer);
|
||||
//Does not work...
|
||||
target.appendJavascript(WiQueryCoreEffectsHelper.slideUpJs(editEventContainer, EffectSpeed.FAST));
|
||||
}
|
||||
|
||||
protected void onEventTemplatedCanceled(AjaxRequestTarget target){
|
||||
target.appendJavascript(WiQueryCoreEffectsHelper.slideUpJs(editEventContainer, EffectSpeed.FAST));
|
||||
}
|
||||
|
||||
});
|
||||
target.addComponent(WiQueryCoreEffectsHelper.slideDown(editEventContainer, EffectSpeed.FAST));
|
||||
}
|
||||
});
|
||||
item.add(editEventTemplateIcon);
|
||||
|
||||
WebMarkupContainer deleteEventTempalteIcon = new WebMarkupContainer("deleteEventTemplateIcon");
|
||||
deleteEventTempalteIcon.setOutputMarkupId(true);
|
||||
deleteEventTempalteIcon.add(new AjaxEventBehavior("onclick"){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onEvent(AjaxRequestTarget target) {
|
||||
ScheduleTemplate tpl = ScheduleTemplateForm.this.getModelObject();
|
||||
List<EventTemplate> evList = tpl.getEventTemplates();
|
||||
//Decrease number in order with 1 for all events after the one being removed
|
||||
for(int i = et.getNumberInOrder() + 1; i < evList.size(); i++){
|
||||
evList.get(i).setNumberInOrder(i - 1);
|
||||
}
|
||||
evList.remove(et.getNumberInOrder());
|
||||
target.addComponent(totalEstimatedTimeLabel);
|
||||
target.addComponent(eventTemplateListContainer);
|
||||
}
|
||||
|
||||
});
|
||||
deleteEventTempalteIcon.add(new JavascriptEventConfirmation("onclick", "Are you sure?"));
|
||||
item.add(deleteEventTempalteIcon);
|
||||
item.setOutputMarkupId(true);
|
||||
add(item);
|
||||
}
|
||||
|
||||
};
|
||||
SortableAjaxBehavior<ListItem<EventTemplate>> sortB = new SortableAjaxBehavior<ListItem<EventTemplate>>(){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
//If you have several lists and moving objects back and fourth this gets called when your list receives an element
|
||||
@Override
|
||||
public void onReceive(ListItem<EventTemplate> sortedComponent,
|
||||
int index, Component parentSortedComponent,
|
||||
AjaxRequestTarget ajaxRequestTarget) {
|
||||
//Do nothing
|
||||
}
|
||||
|
||||
//If you have several lists and moving objects back and fourth this gets called when an element gets removed from the list
|
||||
@Override
|
||||
public void onRemove(ListItem<EventTemplate> sortedComponent,
|
||||
AjaxRequestTarget ajaxRequestTarget) {
|
||||
//Do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ListItem<EventTemplate> sortedComponent,
|
||||
int index, AjaxRequestTarget ajaxRequestTarget) {
|
||||
EventTemplate et = sortedComponent.getModelObject();
|
||||
int prevNumberInOrder = et.getNumberInOrder();
|
||||
List<EventTemplate> tList = template.getEventTemplates();
|
||||
if(prevNumberInOrder > index){ //moving backwards
|
||||
int i = index;
|
||||
while(i < prevNumberInOrder){
|
||||
EventTemplate e = tList.get(i++);
|
||||
e.setNumberInOrder(e.getNumberInOrder()+1);
|
||||
}
|
||||
} else if(prevNumberInOrder < index){ //moving forward
|
||||
int i = index;
|
||||
while(i > prevNumberInOrder){
|
||||
EventTemplate e = tList.get(i--);
|
||||
e.setNumberInOrder(e.getNumberInOrder()-1);
|
||||
}
|
||||
}
|
||||
et.setNumberInOrder(index);
|
||||
Collections.sort(tList);
|
||||
ajaxRequestTarget.addComponent(eventTemplateListContainer);
|
||||
}
|
||||
|
||||
};
|
||||
sortB.setConnectWith(".connectedSortable");
|
||||
eventTemplateListContainer.add(sortB);
|
||||
|
||||
eventTemplateListContainer.add(eventList);
|
||||
add(eventTemplateListContainer);
|
||||
|
||||
add(new AjaxButton("saveButton", new Model<String>("Save")){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
|
||||
ScheduleTemplate st = (ScheduleTemplate) form.getModelObject();
|
||||
st = scheduleTemplateDao.save(st);
|
||||
form.info("Template saved");
|
||||
target.addComponent(feedbackContainer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onError(AjaxRequestTarget target, Form<?> form){
|
||||
target.addComponent(feedbackContainer);
|
||||
}
|
||||
});
|
||||
|
||||
AjaxButton cancelButton = new AjaxButton("cancelButton", new Model<String>("Cancel")){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
|
||||
setResponsePage(ScheduleTemplatePage.class);
|
||||
}
|
||||
|
||||
};
|
||||
cancelButton.setDefaultFormProcessing(false);
|
||||
add(cancelButton);
|
||||
}
|
||||
|
||||
private void updateEstimatedTime(){
|
||||
long acc = 0;
|
||||
for(EventTemplate e : getModelObject().getEventTemplates()){
|
||||
acc += e.getEstimatedTimeConsumption();
|
||||
}
|
||||
totalEstimatedTime = acc;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
<wicket:panel>
|
||||
|
||||
<h3>Schedule templates</h3>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<span>Show templates:</span><select wicket:id="sysAdminDD"></select><br />
|
||||
</div>
|
||||
<div>
|
||||
<span>Active:</span><select wicket:id="activeDD"></select>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#" wicket:id="createNew">Create new template</a>
|
||||
</div>
|
||||
</div>
|
||||
<div wicket:id="templateListContainer">
|
||||
<table>
|
||||
<th>Template name</th>
|
||||
<th>System template</th>
|
||||
<th>Active</th>
|
||||
<th>Creator</th>
|
||||
<th>Last updated</th>
|
||||
<tr wicket:id="templateList">
|
||||
<td wicket:id="templateName">TempalteName</td>
|
||||
<td wicket:id="isSysAdminTemplate">Is system template</td>
|
||||
<td wicket:id="templateActive">Is active</td>
|
||||
<td wicket:id="templateCreator">Creator</td>
|
||||
<td wicket:id="templateUpdated">Last updated</td>
|
||||
<td wicket:id="showScheduleTemplateDetailsIcon" class="icon icon-button icon-zoom-in"></td>
|
||||
<td wicket:id="editScheduleTemplateIcon" class="icon icon-button icon-pencil"></td>
|
||||
<td wicket:id="deleteScheduleTemplateIcon" class="icon icon-button icon-delete"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div wicket:id="pager"></div>
|
||||
</div>
|
||||
<div wicket:id="templateDetailsContainer">
|
||||
<div wicket:id="templateDetailsPanel"></div>
|
||||
</div>
|
||||
|
||||
</wicket:panel>
|
@ -0,0 +1,244 @@
|
||||
package se.su.dsv.scipro.schedule.templates.panels;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.AjaxEventBehavior;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
|
||||
import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
|
||||
import org.apache.wicket.behavior.AttributeAppender;
|
||||
import org.apache.wicket.datetime.PatternDateConverter;
|
||||
import org.apache.wicket.datetime.markup.html.basic.DateLabel;
|
||||
import org.apache.wicket.extensions.ajax.markup.html.AjaxIndicatorAppender;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.DropDownChoice;
|
||||
import org.apache.wicket.markup.html.link.Link;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.PageableListView;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.core.effects.EffectSpeed;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.schedule.templates.pages.ScheduleTemplateEditorPage;
|
||||
import se.su.dsv.scipro.schedule.templates.panels.models.ScheduleTemplatesModel;
|
||||
import se.su.dsv.scipro.util.JavascriptEventConfirmation;
|
||||
import se.su.dsv.scipro.util.SelectOption;
|
||||
import se.su.dsv.scipro.util.WiQueryCoreEffectsHelper;
|
||||
|
||||
public class ScheduleTemplatePanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 6197924655284748823L;
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
public enum ActiveOption {
|
||||
ALL,
|
||||
ACTIVE,
|
||||
INACTIVE
|
||||
}
|
||||
|
||||
public enum SysAdminOption {
|
||||
ALL,
|
||||
ONLY_SYSADMIN,
|
||||
ONLY_SUPERVISOR,
|
||||
ONLY_LOGGED_IN_USER
|
||||
}
|
||||
|
||||
private WebMarkupContainer templateListContainer;
|
||||
private ScheduleTemplatesModel templateModel;
|
||||
private WebMarkupContainer templateDetailsContainer;
|
||||
|
||||
public ScheduleTemplatePanel(String id, final boolean isSysAdminView) {
|
||||
super(id);
|
||||
|
||||
templateModel = new ScheduleTemplatesModel();
|
||||
|
||||
templateDetailsContainer = new WebMarkupContainer("templateDetailsContainer");
|
||||
templateDetailsContainer.setOutputMarkupId(true);
|
||||
templateDetailsContainer.add(new EmptyPanel("templateDetailsPanel"));
|
||||
|
||||
templateListContainer = new WebMarkupContainer("templateListContainer");
|
||||
templateListContainer.setOutputMarkupId(true);
|
||||
|
||||
final PatternDateConverter pc = new PatternDateConverter("yyyy-MM-dd", false);
|
||||
|
||||
final PageableListView<ScheduleTemplate> templateList = new PageableListView<ScheduleTemplate>("templateList", templateModel, 10){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(ListItem<ScheduleTemplate> item) {
|
||||
final ScheduleTemplate s = item.getModelObject();
|
||||
item.add(new Label("templateName", s.getTemplateName()));
|
||||
|
||||
Label active = new Label("templateActive", "");
|
||||
active.add(new AttributeAppender("class", new Model<String>("icon " + (s.isActive() ? "icon-check" : "icon-delete")), " "));
|
||||
item.add(active);
|
||||
|
||||
Label isSysAdminTemplate = new Label("isSysAdminTemplate", "");
|
||||
isSysAdminTemplate.add(new AttributeAppender("class", new Model<String>("icon " + (s.isSysAdminTemplate() ? "icon-check" : "icon-delete")), " "));
|
||||
item.add(isSysAdminTemplate);
|
||||
item.add(s.getCreator().getWebLabel("templateCreator"));
|
||||
item.add(new DateLabel("templateUpdated", new Model<Date>(s.getLastModified()), pc));
|
||||
|
||||
WebMarkupContainer editScheduleTemplateIcon = new WebMarkupContainer("editScheduleTemplateIcon");
|
||||
editScheduleTemplateIcon.setOutputMarkupId(true);
|
||||
editScheduleTemplateIcon.setVisible( s.getCreator().equals(SciProSession.get().getUser()) || isSysAdminView);
|
||||
editScheduleTemplateIcon.add(new AjaxEventBehavior("onclick"){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onEvent(AjaxRequestTarget target) {
|
||||
setResponsePage(new ScheduleTemplateEditorPage(new PageParameters(), s.getId()));
|
||||
}
|
||||
});
|
||||
item.add(editScheduleTemplateIcon);
|
||||
|
||||
WebMarkupContainer deleteScheduleTemplateIcon = new WebMarkupContainer("deleteScheduleTemplateIcon");
|
||||
deleteScheduleTemplateIcon.setOutputMarkupId(true);
|
||||
deleteScheduleTemplateIcon.setVisible( s.getCreator().equals(SciProSession.get().getUser()) || isSysAdminView);
|
||||
deleteScheduleTemplateIcon.add(new AjaxEventBehavior("onclick"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onEvent(AjaxRequestTarget target) {
|
||||
ScheduleTemplate toBeRemoved = scheduleTemplateDao.reLoad(s);
|
||||
scheduleTemplateDao.delete(toBeRemoved);
|
||||
target.addComponent(templateListContainer);
|
||||
}
|
||||
});
|
||||
deleteScheduleTemplateIcon.add(new JavascriptEventConfirmation("onclick", "Are you sure you want to delete this template and all of its events?"));
|
||||
item.add(deleteScheduleTemplateIcon);
|
||||
|
||||
WebMarkupContainer showScheduleTemplateDetailsIcon = new WebMarkupContainer("showScheduleTemplateDetailsIcon");
|
||||
showScheduleTemplateDetailsIcon.setOutputMarkupId(true);
|
||||
showScheduleTemplateDetailsIcon.add(new AjaxEventBehavior("onclick"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onEvent(AjaxRequestTarget target) {
|
||||
templateDetailsContainer.replace(new ScheduleTemplateDetailsPanel("templateDetailsPanel", s));
|
||||
target.addComponent(WiQueryCoreEffectsHelper.fadeIn(templateDetailsContainer, EffectSpeed.FAST));
|
||||
}
|
||||
});
|
||||
item.add(showScheduleTemplateDetailsIcon);
|
||||
add(item);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
final AjaxPagingNavigator pager = new AjaxPagingNavigator("pager", templateList) {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onAjaxEvent(AjaxRequestTarget target) {
|
||||
target.addComponent(WiQueryCoreEffectsHelper.fadeIn(templateListContainer, EffectSpeed.FAST));
|
||||
}
|
||||
};
|
||||
|
||||
final List<SelectOption<ActiveOption>> activeOptions = new ArrayList<SelectOption<ActiveOption>>();
|
||||
activeOptions.add(new SelectOption<ActiveOption>("All", ActiveOption.ALL));
|
||||
activeOptions.add(new SelectOption<ActiveOption>("Active", ActiveOption.ACTIVE));
|
||||
activeOptions.add(new SelectOption<ActiveOption>("Inactive", ActiveOption.INACTIVE));
|
||||
|
||||
final DropDownChoice<SelectOption<ActiveOption>> activeDD =
|
||||
new DropDownChoice<SelectOption<ActiveOption>>("activeDD", new Model<SelectOption<ActiveOption>>(activeOptions.get(0)),activeOptions);
|
||||
activeDD.add(new AjaxFormComponentUpdatingBehavior("onchange"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
|
||||
ActiveOption selected = activeDD.getModelObject().value;
|
||||
switch(selected) {
|
||||
case ALL:
|
||||
templateModel.setOnlyActiveTemplates(null);
|
||||
break;
|
||||
case ACTIVE:
|
||||
templateModel.setOnlyActiveTemplates(true);
|
||||
break;
|
||||
case INACTIVE:
|
||||
templateModel.setOnlyActiveTemplates(false);
|
||||
break;
|
||||
default:
|
||||
templateModel.setOnlyActiveTemplates(null);
|
||||
}
|
||||
target.addComponent(WiQueryCoreEffectsHelper.fadeIn(templateListContainer, EffectSpeed.FAST));
|
||||
}
|
||||
|
||||
});
|
||||
add(activeDD);
|
||||
|
||||
final List<SelectOption<SysAdminOption>> sysadminOptions = new ArrayList<SelectOption<SysAdminOption>>();
|
||||
sysadminOptions.add(new SelectOption<SysAdminOption>("All templates", SysAdminOption.ALL));
|
||||
sysadminOptions.add(new SelectOption<SysAdminOption>("Only system templates", SysAdminOption.ONLY_SYSADMIN));
|
||||
sysadminOptions.add(new SelectOption<SysAdminOption>("Only supervisor templates", SysAdminOption.ONLY_SUPERVISOR));
|
||||
sysadminOptions.add(new SelectOption<SysAdminOption>("Only mine", SysAdminOption.ONLY_LOGGED_IN_USER));
|
||||
|
||||
final DropDownChoice<SelectOption<SysAdminOption>> sysAdminDD =
|
||||
new DropDownChoice<SelectOption<SysAdminOption>>("sysAdminDD", new Model<SelectOption<SysAdminOption>>(sysadminOptions.get(0)),sysadminOptions);
|
||||
sysAdminDD.add(new AjaxFormComponentUpdatingBehavior("onchange"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
|
||||
SysAdminOption selected = sysAdminDD.getModelObject().value;
|
||||
switch(selected) {
|
||||
case ALL:
|
||||
templateModel.clearFilter(true);
|
||||
templateModel.setOnlySysAdminTemplates(null);
|
||||
break;
|
||||
case ONLY_SYSADMIN:
|
||||
templateModel.clearFilter(false);
|
||||
templateModel.setOnlySysAdminTemplates(true);
|
||||
break;
|
||||
case ONLY_SUPERVISOR:
|
||||
templateModel.clearFilter(false);
|
||||
templateModel.setOnlySysAdminTemplates(false);
|
||||
break;
|
||||
case ONLY_LOGGED_IN_USER:
|
||||
templateModel.clearFilter(false);
|
||||
templateModel.setCreator(SciProSession.get().getUser());
|
||||
break;
|
||||
default:
|
||||
templateModel.clearFilter(true);
|
||||
}
|
||||
target.addComponent(WiQueryCoreEffectsHelper.fadeIn(templateListContainer, EffectSpeed.FAST));
|
||||
}
|
||||
|
||||
});
|
||||
sysAdminDD.add(new AjaxIndicatorAppender());
|
||||
add(sysAdminDD);
|
||||
|
||||
templateListContainer.add(pager);
|
||||
templateListContainer.add(templateList);
|
||||
add(templateListContainer);
|
||||
|
||||
add(new Link<Void>("createNew"){
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
public void onClick() {
|
||||
setResponsePage(ScheduleTemplateEditorPage.class);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
add(templateDetailsContainer);
|
||||
}
|
||||
|
||||
public void reloadTemplateList(){
|
||||
templateModel.reloadModel();
|
||||
}
|
||||
}
|
89
src/main/java/se/su/dsv/scipro/schedule/templates/panels/models/ScheduleTemplatesModel.java
Normal file
89
src/main/java/se/su/dsv/scipro/schedule/templates/panels/models/ScheduleTemplatesModel.java
Normal file
@ -0,0 +1,89 @@
|
||||
package se.su.dsv.scipro.schedule.templates.panels.models;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.injection.web.InjectorHolder;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
|
||||
/**
|
||||
* @author dan
|
||||
*/
|
||||
public class ScheduleTemplatesModel extends LoadableDetachableModel<List<ScheduleTemplate>>{
|
||||
|
||||
private static final long serialVersionUID = 514862281817276921L;
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
private ProjectClass projectClass = null;
|
||||
private Boolean onlyActiveTemplates = null;
|
||||
private User creator = null;
|
||||
private Boolean onlySysAdminTemplates = null;
|
||||
|
||||
public ScheduleTemplatesModel(){
|
||||
InjectorHolder.getInjector().inject(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<ScheduleTemplate> load() {
|
||||
List<ScheduleTemplate> list = scheduleTemplateDao.getScheduleTemplates(creator, onlySysAdminTemplates, onlyActiveTemplates, projectClass);
|
||||
System.out.println("Found " + list.size() + " templates");
|
||||
return list;
|
||||
}
|
||||
|
||||
public void reloadModel(){
|
||||
setObject(load());
|
||||
}
|
||||
|
||||
public void setOnlySysAdminTemplates(Boolean onlySysAdminTemplates) {
|
||||
this.onlySysAdminTemplates = onlySysAdminTemplates;
|
||||
}
|
||||
|
||||
public Boolean getOnlySysAdminTemplates() {
|
||||
return onlySysAdminTemplates;
|
||||
}
|
||||
|
||||
public Boolean isOnlyActiveTemplates() {
|
||||
return onlyActiveTemplates;
|
||||
}
|
||||
|
||||
public void setOnlyActiveTemplates(Boolean onlyActiveTemplates) {
|
||||
this.onlyActiveTemplates = onlyActiveTemplates;
|
||||
reloadModel();
|
||||
}
|
||||
|
||||
public ProjectClass getProjectClass() {
|
||||
return projectClass;
|
||||
}
|
||||
|
||||
public void setProjectClass(ProjectClass projectClass) {
|
||||
this.projectClass = projectClass;
|
||||
reloadModel();
|
||||
}
|
||||
|
||||
public User getCreator() {
|
||||
return creator;
|
||||
}
|
||||
|
||||
public void setCreator(User creator) {
|
||||
this.creator = creator;
|
||||
reloadModel();
|
||||
}
|
||||
|
||||
public void clearFilter(boolean withReload){
|
||||
projectClass = null;
|
||||
onlyActiveTemplates = null;
|
||||
creator = null;
|
||||
onlySysAdminTemplates = null;
|
||||
if(withReload){
|
||||
reloadModel();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
29
src/main/java/se/su/dsv/scipro/schedule/templates/panels/models/SelectedScheduleTemplateModel.java
Normal file
29
src/main/java/se/su/dsv/scipro/schedule/templates/panels/models/SelectedScheduleTemplateModel.java
Normal file
@ -0,0 +1,29 @@
|
||||
package se.su.dsv.scipro.schedule.templates.panels.models;
|
||||
|
||||
import org.apache.wicket.injection.web.InjectorHolder;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ScheduleTemplateDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
|
||||
public class SelectedScheduleTemplateModel extends LoadableDetachableModel<ScheduleTemplate> {
|
||||
|
||||
private static final long serialVersionUID = 7788734120202052793L;
|
||||
|
||||
@SpringBean
|
||||
private ScheduleTemplateDao scheduleTemplateDao;
|
||||
|
||||
private Long scheduleTemplateId;
|
||||
|
||||
public SelectedScheduleTemplateModel(Long scheduleTemplateId){
|
||||
InjectorHolder.getInjector().inject(this);
|
||||
this.scheduleTemplateId = scheduleTemplateId;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ScheduleTemplate load() {
|
||||
return scheduleTemplateDao.load(scheduleTemplateId);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user