added popup dialog to abstract project idea page so the popup with confirmed/unconfirmed ideas now comes up on all authors project idea pages

This commit is contained in:
Emil Siverhall 2012-07-27 12:42:43 +02:00
parent aa25711278
commit a7e7876097
3 changed files with 93 additions and 52 deletions

@ -3,6 +3,9 @@
<body>
<wicket:extend>
<div class="span-24 last append-bottom">
<div wicket:id="abstractDialog">
<div wicket:id="abstractDialogPanel"></div>
</div>
<div wicket:id="ideaSub"></div>
</div>
<wicket:child/>

@ -1,21 +1,37 @@
package se.su.dsv.scipro.project.pages;
import java.util.List;
import javax.servlet.http.Cookie;
import org.apache.wicket.PageParameters;
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.protocol.http.WebResponse;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.util.time.Duration;
import org.odlabs.wiquery.ui.dialog.Dialog;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.data.DomainObjectDetachableModel;
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.Student;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
import se.su.dsv.scipro.project.panels.AcceptIdeaDialogPanel;
import se.su.dsv.scipro.project.panels.CompleteIdeaDialogPanel;
import se.su.dsv.scipro.project.panels.ProjectIdeaTabMenuPanel;
import se.su.dsv.scipro.project.panels.ProjectSubTabMenuPanel;
import se.su.dsv.scipro.springdata.services.StudentService;
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
/**
*
* @author Martin Peters - mpeters@dsv.su.se
@ -25,6 +41,12 @@ public abstract class AbstractProjectIdeaPage extends ProjectPage {
public static final String COOKIE_KEY = "authorLastVisitedPID";
@SpringBean
private SupervisorIdeaService ideaService;
@SpringBean
private StudentService studentService;
private Dialog dialog;
public AbstractProjectIdeaPage(PageParameters pp) {
super(pp);
@ -32,7 +54,75 @@ public abstract class AbstractProjectIdeaPage extends ProjectPage {
* This is the submenu
*/
add(new ProjectIdeaTabMenuPanel("ideaSub", this.getClass()));
/**
* Pop up dialog if author is part of a project
*/
addDialog();
checkForUnconfirmedIdeas(getUser());
}
private void addDialog() {
dialog = new Dialog("abstractDialog");
dialog.setModal(true);
dialog.setAutoOpen(false);
dialog.setWidth(500);
dialog.setHeight(600);
dialog.add(new EmptyPanel("abstractDialogPanel"));
add(dialog);
}
private void checkForUnconfirmedIdeas(final User currentUser) {
boolean hasUnconfirmed = ideaService.hasTakenIdeas(currentUser, false);
if(hasUnconfirmed) {
Student author = studentService.findByUser(currentUser);
final List<SupervisorIdea> ideas = ideaService.findIdeas(IdeaStatus.TAKEN, author, false);
if(ideas.size()>1)
System.out.println("More than one unconfirmed idea");
else {
add(new AbstractAjaxTimerBehavior(Duration.milliseconds(1)) {
private static final long serialVersionUID = 8249890924500999472L;
@Override
protected void onTimer(AjaxRequestTarget target) {
dialog.replace(new AcceptIdeaDialogPanel("abstractDialogPanel",Model.of(ideas.get(0)), currentUser, true));
dialog.setTitle("Supervisor project idea");
target.addComponent(dialog);
dialog.open(target);
stop();
}
});
}
}
else {
checkForConfirmedIdeas(currentUser);
}
}
private void checkForConfirmedIdeas(final User currentUser) {
boolean hasConfirmed = ideaService.hasTakenIdeas(currentUser, true);
if(hasConfirmed){
Student author = studentService.findByUser(currentUser);
final List<SupervisorIdea> ideas = ideaService.findIdeas(IdeaStatus.TAKEN, author, true);
add(new AbstractAjaxTimerBehavior(Duration.milliseconds(1)) {
private static final long serialVersionUID = 8249890924500999472L;
@Override
protected void onTimer(AjaxRequestTarget target) {
dialog.replace(new CompleteIdeaDialogPanel("abstractDialogPanel",Model.of(ideas.get(0))));
dialog.setWidth(550);
dialog.setHeight(700);
dialog.setTitle("Selected supervisor project idea");
target.addComponent(dialog);
dialog.open(target);
stop();
}
});
} else
System.out.println("No confirmed ideas");
}
}

@ -44,7 +44,6 @@ public class ProjectIdeaOverviewPanel extends Panel {
super(id);
addDialog();
addDataTable(currentUser);
checkForUnconfirmedIdeas(currentUser);
add(new FilterForm("form"));
}
@ -101,58 +100,7 @@ public class ProjectIdeaOverviewPanel extends Panel {
});
}
private void checkForUnconfirmedIdeas(final User currentUser) {
boolean hasUnconfirmed = ideaService.hasTakenIdeas(currentUser, false);
if(hasUnconfirmed) {
Student author = studentService.findByUser(currentUser);
final List<SupervisorIdea> ideas = ideaService.findIdeas(IdeaStatus.TAKEN, author, false);
if(ideas.size()>1)
System.out.println("More than one unconfirmed idea");
else {
add(new AbstractAjaxTimerBehavior(Duration.milliseconds(1)) {
private static final long serialVersionUID = 8249890924500999472L;
@Override
protected void onTimer(AjaxRequestTarget target) {
dialog.replace(new AcceptIdeaDialogPanel("dialogPanel",Model.of(ideas.get(0)), currentUser, true));
dialog.setTitle("Supervisor project idea");
target.addComponent(dialog);
dialog.open(target);
stop();
}
});
}
}
else {
checkForConfirmedIdeas(currentUser);
}
}
private void checkForConfirmedIdeas(final User currentUser) {
boolean hasConfirmed = ideaService.hasTakenIdeas(currentUser, true);
if(hasConfirmed){
Student author = studentService.findByUser(currentUser);
final List<SupervisorIdea> ideas = ideaService.findIdeas(IdeaStatus.TAKEN, author, true);
add(new AbstractAjaxTimerBehavior(Duration.milliseconds(1)) {
private static final long serialVersionUID = 8249890924500999472L;
@Override
protected void onTimer(AjaxRequestTarget target) {
dialog.replace(new CompleteIdeaDialogPanel("dialogPanel",Model.of(ideas.get(0))));
dialog.setWidth(550);
dialog.setHeight(700);
dialog.setTitle("Selected supervisor project idea");
target.addComponent(dialog);
dialog.open(target);
stop();
}
});
} else
System.out.println("No confirmed ideas");
}
private class FilterForm extends Form<Void> {
private static final long serialVersionUID = -5646495880236201368L;