Supervisors should be able to report there interest for supervising a certain project idea.

This commit is contained in:
Tom Vahlman 2012-03-23 22:46:17 +01:00
parent f0a43fdf04
commit 6933a03d83
6 changed files with 198 additions and 4 deletions

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
</head>
<body>
<wicket:panel>
<form wicket:id="form">
<div wicket:id="wmc1">
<div class="append-bottom"><button wicket:id="acceptButton">Report your interest to supervise</button></div>
<div class="append-top">Enter a reason to your interest: (at least 5 characters)</div>
<textarea wicket:id="reason" rows="5" style="width: 100%;"></textarea>
</div>
</form>
</wicket:panel>
</body>
</html>

@ -0,0 +1,89 @@
package se.su.dsv.scipro.supervisor.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.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.validation.validator.StringValidator;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao;
import se.su.dsv.scipro.match.dao.interfaces.ProjectIdeaDao;
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
import se.su.dsv.scipro.match.dataobject.SupervisorInterest;
import se.su.dsv.scipro.data.dataobjects.Employee;
import java.util.ArrayList;
import java.util.List;
public abstract class SupervisorInterestPanel extends Panel {
private static final long serialVersionUID = 7164999234242995192L;
@SpringBean
private ProjectIdeaDao projectIdeaDao;
@SpringBean
private GeneralSystemSettingsDao gDao;
@SpringBean
SupervisorDao employeeDao;
public abstract void onUpdate(AjaxRequestTarget target);
public SupervisorInterestPanel(String id, final IModel<ProjectIdea> projectIdeaIModel) {
super(id);
final LoadableDetachableModel<ProjectIdea> projectIdeaModel = new LoadableDetachableModel<ProjectIdea>() {
private static final long serialVersionUID = 5696857658828934865L;
@Override
protected ProjectIdea load() {
return projectIdeaDao.load(projectIdeaIModel.getObject().getId());
}
};
add(new SupervisorAcceptDeclineForm("form", projectIdeaModel));
}
private class SupervisorAcceptDeclineForm extends Form<Void> {
private static final long serialVersionUID = -3157033328235572033L;
private TextArea<String> reason;
private String reasonString;
private LoadableDetachableModel<ProjectIdea> projectIdeaModel;
public SupervisorAcceptDeclineForm(String id, final LoadableDetachableModel<ProjectIdea> projectIdeaModel) {
super(id);
this.projectIdeaModel = projectIdeaModel;
WebMarkupContainer wmc1 = new WebMarkupContainer("wmc1");
add(wmc1);
wmc1.add(new AjaxLink("acceptButton") {
private static final long serialVersionUID = -2591216055201410154L;
@Override
public void onClick(AjaxRequestTarget target) {
if (reason.getModelObject() != null && reason.getModelObject().length() > 4) {
// here we should save the reason for the interest in some table
}
SupervisorInterest supervisorInterest = new SupervisorInterest();
List<Employee> employeeList = new ArrayList<Employee>();
Employee employee = employeeDao.getFrom(SciProSession.get().getUser());
employeeList.add(employee);
supervisorInterest.setSupervisorInterest(employeeList);
projectIdeaModel.getObject().setSupervisorInterest(supervisorInterest);
projectIdeaDao.save(projectIdeaModel.getObject());
onUpdate(target);
System.out.println("added interest from supervisor to supervise the project idea");
}
});
reason = new TextArea<String>("reason", new PropertyModel<String>(this, "reasonString"));
reason.setRequired(true);
reason.add(StringValidator.minimumLength(5));
wmc1.add(reason);
}
}
}

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<body>
<wicket:panel>
<div wicket:id="watsonPanel"></div>
<div wicket:id="acceptDeclinePanel"></div>
</wicket:panel>
</body>
</html>

@ -0,0 +1,31 @@
package se.su.dsv.scipro.supervisor.panels;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.match.dao.interfaces.MatchDao;
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
public abstract class SupervisorInterestProjectIdeaDialogPanel extends Panel {
private static final long serialVersionUID = 6580700521723559167L;
@SpringBean
MatchDao matchDao;
public abstract void onUpdateUpdate(AjaxRequestTarget target);
public SupervisorInterestProjectIdeaDialogPanel(String id, final IModel<ProjectIdea> projectIdea) {
super(id);
add(new WatsonInfoPanel("watsonPanel", projectIdea.getObject()));
add(new SupervisorInterestPanel("acceptDeclinePanel", projectIdea){
private static final long serialVersionUID = 2192277777696201317L;
@Override
public void onUpdate(AjaxRequestTarget target) {
onUpdateUpdate(target);
}
});
}
}

@ -3,6 +3,9 @@
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<body>
<wicket:panel>
<div wicket:id="dialog">
<div wicket:id="dialogContent"></div>
</div>
<div class="prepend-top"></div>
@ -82,7 +85,7 @@
<tbody>
<tr wicket:id="allDataView">
<td wicket:id="level"></td>
<td wicket:id="title"></td>
<td><a wicket:id="openLink"><span wicket:id="title"></span></a></td>
<td wicket:id="author"></td>
</tr>
<tr>

@ -15,11 +15,14 @@ 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.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.util.string.Strings;
import org.odlabs.wiquery.ui.dialog.Dialog;
import se.su.dsv.scipro.components.CustomDateTimeField;
import se.su.dsv.scipro.components.ItemsPerPageChoice;
import se.su.dsv.scipro.data.dao.interfaces.Dao.SortableParams.Sort;
@ -121,11 +124,29 @@ public class SupervisorUnmatchedThesisPanel extends Panel {
allContainer.add(new PagingNavigator("nav", allDataView));
allContainer.add(totalProjectIdeas);
}
private Dialog createDialog() {
Dialog dialog = new Dialog("dialog");
dialog.setModal(true);
dialog.setAutoOpen(false);
dialog.setWidth(800);
dialog.setHeight(800);
dialog.add(new EmptyPanel("dialogContent"));
return dialog;
}
private void allDataViewSetup(final Label totalProjectIdeas, final WebMarkupContainer allContainer, final ProjectIdeaDataProvider allProvider,
final Label emptyLabel) {
final Dialog dialog = createDialog();
add(dialog);
//Add info for the user should there be no events to display.
allContainer.add(emptyLabel);
emptyLabel.setOutputMarkupId(true); //Needs to be AJAX-enabled.
final DataView<ProjectIdea> allDataView = new DataView<ProjectIdea>("allDataView", allProvider) {
private static final long serialVersionUID = 1533192070850862197L;
@ -133,7 +154,30 @@ public class SupervisorUnmatchedThesisPanel extends Panel {
protected void populateItem(final Item<ProjectIdea> item) {
final ProjectIdea idea = item.getModelObject();
item.add(new Label("level", new Model<ProjectClass>(idea.getProjectClass())));
item.add(new Label("title", new Model<String>(idea.getTitle())));
item.add(new AjaxLink<Void>("openLink") {
private static final long serialVersionUID = -6853137019834200749L;
@Override
public void onClick(AjaxRequestTarget target) {
dialog.replace(new SupervisorInterestProjectIdeaDialogPanel("dialogContent", new Model<ProjectIdea>(idea)) {
private static final long serialVersionUID = 5108807012237992330L;
@Override
public void onUpdateUpdate(AjaxRequestTarget target2) {
emptyLabel.setVisible(allProvider.size() == 0);
dialog.close(target2);
target2.addComponent(allContainer);
target2.addComponent(emptyLabel);
}
});
dialog.setTitle(Strings.escapeMarkup(idea.getTitle()).toString());
dialog.open(target);
target.addComponent(dialog);
}
}.add(new Label("title", new Model<String>(idea.getTitle()))));
item.add(new Label("author", new Model<String>(createAuthorString(idea))));
}
};