diff --git a/resources/db_update_scripts/current.sql b/resources/db_update_scripts/current.sql index e69de29bb2..e70c3576f1 100644 --- a/resources/db_update_scripts/current.sql +++ b/resources/db_update_scripts/current.sql @@ -0,0 +1,2 @@ +alter table `general_system_settings` drop column matchAlgorithmMatchesAreForceAccepted; +alter table `general_system_settings` drop column supervisorsCanAcceptDeclinePIs; \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.html b/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.html index 552ba57247..b107f5ae04 100644 --- a/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.html +++ b/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.html @@ -51,9 +51,9 @@ </form> <div wicket:id="container"> <form wicket:id="suggestMatchesForm"> - <div wicket:id="forceAcceptInfoContainer" class="info-box rounded-box append-bottom prepend-top"><b><p>Force accepting of matches is activated</p></b><p>Suggesting matches - will automatically also force accept them without supervisors having the choice to decline to supervise - project ideas. You can change this option under Admin > System Settings</p></div> + <!--<div wicket:id="forceAcceptInfoContainer" class="info-box rounded-box append-bottom prepend-top"><b><p>Force accepting of matches is activated</p></b><p>Suggesting matches--> + <!--will automatically also force accept them without supervisors having the choice to decline to supervise--> + <!--project ideas. You can change this option under Admin > System Settings</p></div>--> <button wicket:id="suggestMatches">Suggest these matches to supervisors</button> <button wicket:id="suggestMatchesAtLeastOnePoints">Suggest matches with at least one points to supervisors diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.java b/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.java index 1feea63167..21a93227a3 100644 --- a/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.java +++ b/src/main/java/se/su/dsv/scipro/admin/pages/match/AutomaticMatchPanel.java @@ -99,7 +99,7 @@ public class AutomaticMatchPanel extends Panel { }); - add(new WebMarkupContainer("forceAcceptInfoContainer").setVisible(generalSystemSettings.isMatchAlgorithmMatchesAreForceAccepted())); +// add(new WebMarkupContainer("forceAcceptInfoContainer").setVisible(generalSystemSettings.isMatchAlgorithmMatchesAreForceAccepted())); } }; suggestMatchesForm.setOutputMarkupId(true); @@ -141,16 +141,11 @@ public class AutomaticMatchPanel extends Panel { for (Match match : result1.matches) { if(match.getPoints() >= points) { match.setCreatedBy(SciProSession.get().getUser()); - if (generalSystemSettings.isMatchAlgorithmMatchesAreForceAccepted()){ + match.setStatus(Match.Status.CONFIRMED); match = matchDao.save(match); -// if (match.getSupervisor().getUnit()!=null){ -// projectService.createAndExportProjectFromProjectIdea(match.getProjectIdea()); -// } - } else { - match.setStatus(Match.Status.PUBLISHED); - match = matchDao.save(match); - } + + } } info("Saved " + result1.matches.size() + " matches"); diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminGeneralSettingsPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminGeneralSettingsPage.html index dc4d4f8323..1de7afe6b2 100644 --- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminGeneralSettingsPage.html +++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminGeneralSettingsPage.html @@ -38,18 +38,18 @@ <!--<td><input name="7" type="checkbox" wicket:id="remoteExport" />--> <!--</td>--> <!--</tr>--> - <tr> - <td><label for="7">Supervisors can accept and decline project ideas:</label> - </td> - <td><input name="7" type="checkbox" wicket:id="supervisorsCanAcceptDeclinePIs" /> - </td> - </tr> - <tr> - <td><label for="7">Matching algorithm matches are force accepted:</label> - </td> - <td><input name="7" type="checkbox" wicket:id="matchAlgorithmMatchesAreForceAccepted" /> - </td> - </tr> + <!--<tr>--> + <!--<td><label for="7">Supervisors can accept and decline project ideas:</label>--> + <!--</td>--> + <!--<td><input name="7" type="checkbox" wicket:id="supervisorsCanAcceptDeclinePIs" />--> + <!--</td>--> + <!--</tr>--> + <!--<tr>--> + <!--<td><label for="7">Matching algorithm matches are force accepted:</label>--> + <!--</td>--> + <!--<td><input name="7" type="checkbox" wicket:id="matchAlgorithmMatchesAreForceAccepted" />--> + <!--</td>--> + <!--</tr>--> </table> diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminGeneralSettingsPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminGeneralSettingsPage.java index 04aba0a5ea..cfcd5e7c32 100644 --- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminGeneralSettingsPage.java +++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminGeneralSettingsPage.java @@ -38,16 +38,14 @@ public class AdminGeneralSettingsPage extends AbstractAdminSettingsPage { TextField<String> smtpServer = new RequiredTextField<String>("smtpServer"); CheckBox remoteExport = new CheckBox("remoteExport"); CheckBox mailNotifications = new CheckBox("mailNotifications"); - CheckBox supervisorsCanAcceptDeclinePIs = new CheckBox("supervisorsCanAcceptDeclinePIs"); - CheckBox matchAlgorithmMatchesAreForceAccepted = new CheckBox("matchAlgorithmMatchesAreForceAccepted"); + add(mailFromName); add(systemFromMail); add(smtpServer); add(mailNotifications); - add(remoteExport); - add(supervisorsCanAcceptDeclinePIs); - add(matchAlgorithmMatchesAreForceAccepted); +// add(remoteExport); + } @Override diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.html index 5fd837d809..27eeb19ea5 100644 --- a/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.html +++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.html @@ -9,9 +9,7 @@ <div class="prepend-top">If you want to match (force accept) this idea to a supervisor manually, you can do so.</div> <div><span wicket:id="manualMatchPanel"></span></div> - <div class="prepend-top">If you want to suggest this - idea to a supervisor manually, you can do so.</div> - <div><span wicket:id="manualSuggestionPanel"></span></div> + <div class="prepend-top">If this project idea is poorly written, it should be refused, which means it will be sent back to the authors for rewriting.</div> diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.java index bbf3b17e78..bd1a7884af 100644 --- a/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.java +++ b/src/main/java/se/su/dsv/scipro/admin/panels/match/ProjectIdeaActionPanel.java @@ -36,7 +36,7 @@ public class ProjectIdeaActionPanel extends Panel { Form<Match> form = new Form<Match>("form", matchModel); form.add(new ManualMatchPanel("manualMatchPanel", matchModel, Match.Status.CONFIRMED)); - form.add(new ManualMatchPanel("manualSuggestionPanel", matchModel, Match.Status.PUBLISHED)); + form.add(new ManualSetReviewerPanel("manualSetReviewerPanel", projectIdeaModel)); form.add(new ManualRefuseIdeaPanel("manualRefuseIdeaPanel", matchModel)); form.add(new AjaxSubmitLink("rematchButton") { diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/GeneralSystemSettings.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/GeneralSystemSettings.java index cd49de3a94..e1d2d8c14a 100644 --- a/src/main/java/se/su/dsv/scipro/data/dataobjects/GeneralSystemSettings.java +++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/GeneralSystemSettings.java @@ -65,28 +65,6 @@ public class GeneralSystemSettings extends DomainObject{ @Basic(optional=true) private int projectPartnerDaysToLive; - @Basic(optional=false) - private boolean supervisorsCanAcceptDeclinePIs = true; - - public boolean getSupervisorsCanAcceptDeclinePIs(){ - return supervisorsCanAcceptDeclinePIs; - } - - public void setSupervisorsCanAcceptDeclinePIs(boolean supervisorsCanAcceptDeclinePIs){ - this.supervisorsCanAcceptDeclinePIs = supervisorsCanAcceptDeclinePIs; - } - - @Basic(optional=false) - private boolean matchAlgorithmMatchesAreForceAccepted = true; - - public boolean isMatchAlgorithmMatchesAreForceAccepted() { - return matchAlgorithmMatchesAreForceAccepted; - } - - public void setMatchAlgorithmMatchesAreForceAccepted(boolean matchAlgorithmMatchesAreForceAccepted) { - this.matchAlgorithmMatchesAreForceAccepted = matchAlgorithmMatchesAreForceAccepted; - } - @Basic(optional=false) private boolean finalSeminarThesisMustBeAPDF = false; diff --git a/src/main/java/se/su/dsv/scipro/match/dataobject/ProjectIdea.java b/src/main/java/se/su/dsv/scipro/match/dataobject/ProjectIdea.java index 6d2a44fdc1..ef560b1e2d 100644 --- a/src/main/java/se/su/dsv/scipro/match/dataobject/ProjectIdea.java +++ b/src/main/java/se/su/dsv/scipro/match/dataobject/ProjectIdea.java @@ -42,7 +42,7 @@ public class ProjectIdea extends DomainObject { ) private Set<Employee> interestedSupervisors = new HashSet<Employee>(); - @ManyToMany + @ManyToMany//(fetch = FetchType.EAGER) private List<Student> authors = new ArrayList<Student>(); @ManyToOne diff --git a/src/main/java/se/su/dsv/scipro/match/panel/AdminManageSupervisorPanel.html b/src/main/java/se/su/dsv/scipro/match/panel/AdminManageSupervisorPanel.html index 413a13117e..ca31d9a8ce 100644 --- a/src/main/java/se/su/dsv/scipro/match/panel/AdminManageSupervisorPanel.html +++ b/src/main/java/se/su/dsv/scipro/match/panel/AdminManageSupervisorPanel.html @@ -81,7 +81,7 @@ </tfoot> <tbody> <tr wicket:id="dataView"> - <td><a href="#" wicket:id="detailsLink"><span wicket:id="supervisor"></span></a></td> + <td><span wicket:id="supervisor"></span></td> <td wicket:id="unit"></td> <td><select wicket:id="targetBachelor"></select></td> <td><select wicket:id="targetMaster"></select></td> diff --git a/src/main/java/se/su/dsv/scipro/match/panel/AdminManageSupervisorPanel.java b/src/main/java/se/su/dsv/scipro/match/panel/AdminManageSupervisorPanel.java index 931b569faa..45a892fbd4 100644 --- a/src/main/java/se/su/dsv/scipro/match/panel/AdminManageSupervisorPanel.java +++ b/src/main/java/se/su/dsv/scipro/match/panel/AdminManageSupervisorPanel.java @@ -148,21 +148,9 @@ public class AdminManageSupervisorPanel extends Panel { Availability bachelorAvalibality = supervisorDao.getAvailability(supervisor, projectClassDao.getProjectClass(ProjectClass.BACHELOR)); Availability masterAvalibality = supervisorDao.getAvailability(supervisor, projectClassDao.getProjectClass(ProjectClass.MASTER)); - final AjaxLink<Void> detailsLink = new AjaxLink<Void>("detailsLink") { - private static final long serialVersionUID = 1340379052190115333L; + item.add(new Label("supervisor", supervisor.getNameAsString())); - @Override - public void onClick(AjaxRequestTarget target) { - dialog.setTitle("Details for: " + supervisor.getNameAsString()); - dialog.replace(new AdminSupervisorDetailsPanel("dialogContent", item.getModel(), feedbackPanel)); - target.addComponent(dialog); - dialog.open(target); - } - - }; - detailsLink.add(new Label("supervisor", supervisor.getNameAsString())); - item.add(detailsLink); item.add(new Label("unit", new PropertyModel<Employee>(supervisor, "unit.title"))); diff --git a/src/main/java/se/su/dsv/scipro/match/panel/AdminSupervisorDetailsPanel.html b/src/main/java/se/su/dsv/scipro/match/panel/AdminSupervisorDetailsPanel.html deleted file mode 100644 index 471acf5a4e..0000000000 --- a/src/main/java/se/su/dsv/scipro/match/panel/AdminSupervisorDetailsPanel.html +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE html> -<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> -<body> -<wicket:panel> - <div> - <a href="#" wicket:id="detailsLink">Project idea details</a> - | - <a href="#" wicket:id="profileLink">Profile</a> - <div wicket:id="mainPanel"></div> - </div> -</wicket:panel> -</body> -</html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/match/panel/AdminSupervisorDetailsPanel.java b/src/main/java/se/su/dsv/scipro/match/panel/AdminSupervisorDetailsPanel.java deleted file mode 100644 index 9f3b322933..0000000000 --- a/src/main/java/se/su/dsv/scipro/match/panel/AdminSupervisorDetailsPanel.java +++ /dev/null @@ -1,101 +0,0 @@ -package se.su.dsv.scipro.match.panel; - -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxFallbackLink; -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.data.dao.interfaces.UserDao; -import se.su.dsv.scipro.data.dataobjects.Employee; -import se.su.dsv.scipro.data.dataobjects.User; -import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao; -import se.su.dsv.scipro.user.panels.UserProfilePanelFactory; - -public class AdminSupervisorDetailsPanel extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean - private UserDao userDao; - @SpringBean - private SupervisorDao supervisorDao; - @SpringBean - private UserProfilePanelFactory factory; - - private Panel detailsPanel; - private Panel profilePanel; - private Panel currentPanel; - private AjaxFallbackLink<Void> detailsLink; - private AjaxFallbackLink<Void> profileLink; - - public AdminSupervisorDetailsPanel(String id, final IModel<Employee> model, final Component feedBackPanel) { - super(id, model); - - final User supervisor = userDao.reLoad(model.getObject().getUser()); - if (supervisor != null) { - - detailsPanel = new SupervisedProjectsPanel("mainPanel", model, feedBackPanel); - profilePanel = factory.createUserProfilePanelForUser("mainPanel",model.getObject().getUser()); - currentPanel = detailsPanel; - currentPanel.setOutputMarkupId(true); - detailsPanel.setOutputMarkupId(true); - profilePanel.setOutputMarkupId(true); - - detailsLink = new AjaxFallbackLink<Void>("detailsLink") { - private static final long serialVersionUID = 1L; - - @Override - public boolean isEnabled() { - return currentPanel != detailsPanel; - } - - @Override - public void onClick(AjaxRequestTarget target) { - currentPanel.replaceWith(detailsPanel); - currentPanel = detailsPanel; - - if (target != null) { - target.addComponent(currentPanel); - target.addComponent(profileLink); - target.addComponent(this); - } - } - }; - detailsLink.setOutputMarkupId(true); - add(detailsLink); - - profileLink = new AjaxFallbackLink<Void>("profileLink") { - - private static final long serialVersionUID = 1L; - - @Override - public boolean isEnabled() { - return currentPanel != profilePanel; - } - - @Override - public void onClick(AjaxRequestTarget target) { - Employee tmp = supervisorDao.save(model.getObject()); - profilePanel = factory.createUserProfilePanelForUser("mainPanel",tmp.getUser()); - profilePanel.setOutputMarkupId(true); - currentPanel.replaceWith(profilePanel); - currentPanel = profilePanel; - - if (target != null) { - target.addComponent(currentPanel); - target.addComponent(detailsLink); - target.addComponent(this); - } - } - }; - profileLink.setOutputMarkupId(true); - add(profileLink); - - add(currentPanel); - } else { - this.setVisible(false); - } - } -} \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/match/panel/SupervisedProjectsPanel.html b/src/main/java/se/su/dsv/scipro/match/panel/SupervisedProjectsPanel.html deleted file mode 100644 index 3254bccc63..0000000000 --- a/src/main/java/se/su/dsv/scipro/match/panel/SupervisedProjectsPanel.html +++ /dev/null @@ -1,9 +0,0 @@ -<!DOCTYPE html> -<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> -<body> - <wicket:panel> - <div wicket:id="matchedThesisPanel"></div> - <div wicket:id="projectsOverviewPanel"></div> - </wicket:panel> -</body> -</html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/match/panel/SupervisedProjectsPanel.java b/src/main/java/se/su/dsv/scipro/match/panel/SupervisedProjectsPanel.java deleted file mode 100644 index ba4de6c0ce..0000000000 --- a/src/main/java/se/su/dsv/scipro/match/panel/SupervisedProjectsPanel.java +++ /dev/null @@ -1,21 +0,0 @@ -package se.su.dsv.scipro.match.panel; - -import org.apache.wicket.Component; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.IModel; - -import se.su.dsv.scipro.data.dataobjects.Employee; -import se.su.dsv.scipro.supervisor.panels.SupervisorMatchedThesisPanel; -import se.su.dsv.scipro.supervisor.panels.SupervisorProjectsOverviewPanel; - -public class SupervisedProjectsPanel extends Panel { - - private static final long serialVersionUID = 1L; - - public SupervisedProjectsPanel(String id, IModel<Employee> model, final Component feedBackPanel) { - super(id, model); - add(new SupervisorMatchedThesisPanel("matchedThesisPanel", model.getObject().getUser(), "Admin", feedBackPanel)); - add(new SupervisorProjectsOverviewPanel("projectsOverviewPanel", model.getObject().getUser())); - } - -} diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectIdeaServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectIdeaServiceImpl.java index 39d6f67b69..c05feae225 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectIdeaServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ProjectIdeaServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import se.su.dsv.scipro.data.dataobjects.Employee; import se.su.dsv.scipro.data.dataobjects.ProjectClass; import se.su.dsv.scipro.match.dataobject.Match; import se.su.dsv.scipro.match.dataobject.ProjectIdea; @@ -55,6 +56,11 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo return projectIdeaRepo.findAll(isMatchStatus(status), pageable); } + @Override + public Page<ProjectIdea> findByMatchedTo(Employee employee, Pageable pageable) { + return projectIdeaRepo.findAll(isMatchStatus(Match.Status.CONFIRMED).and(isMatchedTo(employee)), pageable); + } + @Override public Long countProjectIdeaByMatchStatus(Match.Status status) { return projectIdeaRepo.count(isMatchStatus(status)); @@ -65,6 +71,11 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo return projectIdeaRepo.count(isMatchStatus(status).and(isProjectClass(projectClass))); } + @Override + public Long countByMatchedTo(Employee employee) { + return projectIdeaRepo.count(isMatchStatus(Match.Status.CONFIRMED).and(isMatchedTo(employee))); + } + private BooleanExpression isMatchStatus(Match.Status status){ return QProjectIdea.projectIdea.match.status.eq(status); } @@ -115,4 +126,8 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo } + private BooleanExpression isMatchedTo(Employee employee){ + return QProjectIdea.projectIdea.match.supervisor.eq(employee); + } + } diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ProjectIdeaService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ProjectIdeaService.java index c6e733172d..e63aa365b1 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/services/ProjectIdeaService.java +++ b/src/main/java/se/su/dsv/scipro/springdata/services/ProjectIdeaService.java @@ -6,6 +6,7 @@ import java.util.Set; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import se.su.dsv.scipro.data.dataobjects.Employee; import se.su.dsv.scipro.data.dataobjects.ProjectClass; import se.su.dsv.scipro.match.dataobject.Match; import se.su.dsv.scipro.match.dataobject.ProjectIdea; @@ -17,10 +18,14 @@ import se.su.dsv.scipro.match.dataobject.ProjectIdea; public interface ProjectIdeaService extends GenericService<ProjectIdea,Long>, QueryService<ProjectIdea, Long> { public Page<ProjectIdea> find(Set<Match.Status> statusSet, String filterString, Date fromDate, Date toDate, Pageable pageable); - public Long count(Set<Match.Status> statusSet, String filterString, Date fromDate, Date toDate); - public Page<ProjectIdea> find(Match.Status status, Pageable pageable); - public Long countProjectIdeaByMatchStatus(Match.Status status); + public Page<ProjectIdea> findByMatchedTo(Employee employee, Pageable pageable); + + + public Long count(Set<Match.Status> statusSet, String filterString, Date fromDate, Date toDate); + public Long countProjectIdeaByMatchStatus(Match.Status status); public Long countProjectIdeaByMatchStatusAndProjectClass(Match.Status status, ProjectClass projectClass); + public Long countByMatchedTo(Employee employee); + } diff --git a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html index 161611a5c1..66738e20d3 100644 --- a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html +++ b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html @@ -1,12 +1,16 @@ <!DOCTYPE html> <html - xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> + xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> <body> - <wicket:extend> - <div class="prepend-top span-24 last"> - <div wicket:id="feedBackPanel" /> - <div wicket:id="matchedThesisPanel"></div> - </div> - </wicket:extend> +<wicket:extend> + <!--<div class="prepend-top span-24 last">--> + <!--<div wicket:id="feedBackPanel" />--> + <!--<div wicket:id="matchedThesisPanel"></div> --> + <!--</div>--> + <div wicket:id="dialog"> + <div wicket:id="dialogPanel"></div> + </div> + <div wicket:id="dp"></div> +</wicket:extend> </body> </html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.java b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.java index 9b8cc2756c..4b320f80b7 100644 --- a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.java +++ b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.java @@ -1,22 +1,103 @@ package se.su.dsv.scipro.supervisor.pages; -import org.apache.wicket.Component; import org.apache.wicket.PageParameters; -import org.apache.wicket.markup.html.panel.FeedbackPanel; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; +import org.apache.wicket.markup.html.panel.EmptyPanel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.spring.injection.annot.SpringBean; +import org.odlabs.wiquery.ui.dialog.Dialog; +import org.springframework.data.domain.PageRequest; import se.su.dsv.scipro.SciProSession; -import se.su.dsv.scipro.supervisor.panels.SupervisorMatchedThesisPanel; +import se.su.dsv.scipro.datatables.ClickableTitleColumn; +import se.su.dsv.scipro.datatables.DateColumn; +import se.su.dsv.scipro.datatables.GenericDataPanel; +import se.su.dsv.scipro.match.dataobject.ProjectIdea; +import se.su.dsv.scipro.reusable.SafeLongToIntService; +import se.su.dsv.scipro.springdata.services.EmployeeService; +import se.su.dsv.scipro.springdata.services.GenericService; +import se.su.dsv.scipro.springdata.services.ProjectIdeaService; +import se.su.dsv.scipro.supervisor.panels.WatsonInfoPanel; + +import java.util.Iterator; public class SupervisorMyProjectIdeasPage extends AbstractSupervisorProjectIdeaPage { public static final String MAIN_MENU_LABEL = "Supervisor"; private static final long serialVersionUID = -6146389373527384427L; + @SpringBean + private ProjectIdeaService projectIdeaService; + @SpringBean + private SafeLongToIntService safeLongToIntService; + @SpringBean + private EmployeeService employeeService; + + private Dialog dialog; + public SupervisorMyProjectIdeasPage(PageParameters pp) { - super(pp); - Component feedBackPanel = new FeedbackPanel("feedBackPanel"); - feedBackPanel.setOutputMarkupId(true); - add(feedBackPanel); - add(new SupervisorMatchedThesisPanel("matchedThesisPanel", SciProSession.get().getUser(), "Supervisor", feedBackPanel)); - } + super(pp); +// Component feedBackPanel = new FeedbackPanel("feedBackPanel"); +// feedBackPanel.setOutputMarkupId(true); +// add(feedBackPanel); +// add(new SupervisorMatchedThesisPanel("matchedThesisPanel", SciProSession.get().getUser(), "Supervisor", feedBackPanel)); + + dialog = new Dialog("dialog"); + dialog.setModal(true); + dialog.setAutoOpen(false); + dialog.setWidth(550); + dialog.setHeight(700); + dialog.add(new EmptyPanel("dialogPanel")); + add(dialog); + + add(new GenericDataPanel<ProjectIdea>("dp") { + + @Override + public GenericService getService() { + return projectIdeaService; + } + + @Override + public String getSortString() { + return "dateCreated"; + } + + @Override + public IColumn[] getColumns() { + IColumn[] columns = new IColumn[3]; + columns[0] = new PropertyColumn<ProjectIdea>(Model.of("Level"), "projectClass", "projectClass"); + +// columns[1] = new PropertyColumn<ProjectIdea>(Model.of("Title"), "title", "title"); + columns[1] = new ClickableTitleColumn<ProjectIdea>(Model.of("Title"), "title", "title") { + + @Override + protected void onClick(IModel<ProjectIdea> clicked, AjaxRequestTarget target) { + ProjectIdea pi = projectIdeaService.findOne(clicked.getObject().getId()); + dialog.replace(new WatsonInfoPanel("dialogPanel", pi)); + dialog.setTitle("Project idea: " + clicked.getObject().getTitle()); + target.addComponent(dialog); + dialog.open(target); + } + }; + + columns[2] = new DateColumn<ProjectIdea>(Model.of("Received"), "match.dateCreated", "match.dateCreated"); + return columns; + } + + @Override + public Iterator<ProjectIdea> getIterator() { + return projectIdeaService.findByMatchedTo(employeeService.findByUser(SciProSession.get().getUser()), new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator(); + } + + @Override + public int getSize() { + return safeLongToIntService.safeLongToInt(projectIdeaService.countByMatchedTo(employeeService.findByUser(SciProSession.get().getUser()))); + } + + }); + + } } diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorAcceptDeclinePanel2.html b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorAcceptDeclinePanel2.html deleted file mode 100644 index b749048320..0000000000 --- a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorAcceptDeclinePanel2.html +++ /dev/null @@ -1,25 +0,0 @@ -<!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">Accept to supervise</button></div> - <!-- <div class="append-bottom"><input type="button" value="Accept to supervise"></div> --> - <div class="append-top">Or enter a reason to decline: (at least - 5 characters)</div> - <textarea wicket:id="reason" rows="5" style="width: 100%;"></textarea> - <button wicket:id="declineButton" - style="float: right; margin-top: 1em;">Decline</button> - </div> - <div wicket:id="wmc2"><div wicket:id="info"></div></div> - - - </form> - </wicket:panel> -</body> -</html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorAcceptDeclinePanel2.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorAcceptDeclinePanel2.java deleted file mode 100644 index 1d8896fed7..0000000000 --- a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorAcceptDeclinePanel2.java +++ /dev/null @@ -1,129 +0,0 @@ -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.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.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.panel.Panel; -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.MatchDao; -import se.su.dsv.scipro.match.dataobject.Match; -import se.su.dsv.scipro.match.dataobject.Match.Status; -import se.su.dsv.scipro.match.facade.MatchFacade; -import se.su.dsv.scipro.springdata.services.ProjectService; -import se.su.dsv.scipro.util.JavascriptEventConfirmation; - -public abstract class SupervisorAcceptDeclinePanel2 extends Panel { - - @SpringBean - private MatchDao matchDao; - @SpringBean - private MatchFacade matchFacade; - @SpringBean - private GeneralSystemSettingsDao gDao; - @SpringBean - private ProjectService projectService; - - private static final long serialVersionUID = 1L; - private long matchId; - - public abstract void onUpdate(AjaxRequestTarget target); - - public SupervisorAcceptDeclinePanel2(String id, Match match) { - super(id); - - matchId = match.getId(); - - final LoadableDetachableModel<Match> matchModel = new LoadableDetachableModel<Match>() { - - private static final long serialVersionUID = 1L; - - @Override - protected Match load() { - return matchDao.load(matchId); - } - }; - - add(new SupervisorAcceptDeclineForm("form", matchModel)); - - } - - private class SupervisorAcceptDeclineForm extends Form<Void> { - - private static final long serialVersionUID = 1L; - private TextArea<String> reason; - private String reasonString; - private LoadableDetachableModel<Match> matchModel; - - public SupervisorAcceptDeclineForm(String id, final LoadableDetachableModel<Match> matchModel) { - super(id); - this.matchModel = matchModel; - - WebMarkupContainer wmc1 = new WebMarkupContainer("wmc1"); - - add(wmc1); - - - AjaxLink<Void> acceptButton; - - wmc1.add(acceptButton = new AjaxLink<Void>("acceptButton") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - matchDao.changeStatus(SciProSession.get().getUser(), matchModel.getObject(), Status.CONFIRMED); - matchModel.setObject(matchDao.reLoad(matchModel.getObject())); -// if (matchModel.getObject().getSupervisor().getUnit()!=null){ -// projectService.createAndExportProjectFromProjectIdea(matchModel.getObject().getProjectIdea()); -// } - onUpdate(target); - System.out.println("accept"); - } - }).setVisible(!matchModel.getObject().getStatus().equals(Match.Status.CONFIRMED)); - if (matchModel.getObject().getSupervisor().getUnit()==null){ - acceptButton.add(new JavascriptEventConfirmation("onclick", "You don't belong to an active unit in Daisy, so " + - "SciPro can not create a project and export it as a thesis course in Daisy for you. You will have to " + - "resolve this and then create a thesis course in Daisy manually. It will then take about 24 hours until " + - "that thesis course is imported into SciPro as a project.")); - } else { - acceptButton.add(new JavascriptEventConfirmation("onclick", "SciPro will attempt to create a project and export " + - "it as a thesis course to Daisy for you. If everything goes well the project will show up in My projects right " + - "away. If something goes wrong, contact support.")); - } - - - reason = new TextArea<String>("reason", new PropertyModel<String>(this, "reasonString")); - reason.setRequired(true); - reason.add(StringValidator.minimumLength(5)); - reason.setVisible(!matchModel.getObject().getStatus().equals(Match.Status.CONFIRMED)); - wmc1.add(reason); - - wmc1.add(new AjaxButton("declineButton") { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target, Form<?> form) { - if (reason.getModelObject() != null && reason.getModelObject().length() > 4) { - matchFacade.reject(matchModel.getObject(), SciProSession.get().getUser(), reasonString); - onUpdate(target); - } - } - }).setVisible(!matchModel.getObject().getStatus().equals(Match.Status.CONFIRMED)); - - WebMarkupContainer wmc2 = new WebMarkupContainer("wmc2"); - wmc2.add(new Label("info", "Accepting and declining project ideas has been disabled. If you have any questions, " - + "contact your GRUA or the administrator.")); - add(wmc2); - wmc1.setVisible(gDao.getGeneralSystemSettingsInstance().getSupervisorsCanAcceptDeclinePIs()); - wmc2.setVisible(!gDao.getGeneralSystemSettingsInstance().getSupervisorsCanAcceptDeclinePIs()); - } - } -} diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedThesisPanel.html b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedThesisPanel.html deleted file mode 100644 index 62ac1c9475..0000000000 --- a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedThesisPanel.html +++ /dev/null @@ -1,57 +0,0 @@ -<!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> - <div wicket:id="dialog"> - <div wicket:id="dialogcontents"></div> - </div> - - <div class="span-24 last"> - - </div> - <div class="span-24 last" wicket:id="radioGroup"> - <div><label for="statusListView">Show: </label><span wicket:id="statusListView"><input type="radio" - wicket:id="statusRadio"> </input> <span wicket:id="statusName"></span></span></div> - </div> - <div class="span-24 last" wicket:id="dataViewContainer"> - <table class="rounded-corner"> - <thead> - <tr> - <th class="rounded-left-top">Level</th> - <th>Title</th> - <th class="rounded-right-top">Author(s)</th> - <th class="rounded-right-top">Accepted date </th> - </tr> - </thead> - - <tfoot> - <tr> - <td colspan="4" class="rounded-foot"> </td> - </tr> - </tfoot> - - <tbody> - <tr wicket:id="projectIdeaDataView"> - <td wicket:id="level"></td> - <td> - <a wicket:id="openLink"><span wicket:id="title"></span></a> - </td> - <td wicket:id="authors"></td> - <td wicket:id="acceptedDate"></td> - </tr> - </tbody> - - <tbody> - <tr> - <td wicket:id="emptyLabel" colspan="4"></td> - </tr> - </tbody> - </table> - <div wicket:id="nav"></div> - </div> -</wicket:panel> -</body> -</html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedThesisPanel.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedThesisPanel.java deleted file mode 100644 index 0cb6536283..0000000000 --- a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedThesisPanel.java +++ /dev/null @@ -1,220 +0,0 @@ -package se.su.dsv.scipro.supervisor.panels; - -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; -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.Radio; -import org.apache.wicket.markup.html.form.RadioGroup; -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.CompoundPropertyModel; -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.admin.panels.match.AdminEditProjectIdeaPanel; -import se.su.dsv.scipro.data.dataobjects.Employee; -import se.su.dsv.scipro.data.dataobjects.User; -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.Match; -import se.su.dsv.scipro.match.dataobject.Match.Status; -import se.su.dsv.scipro.match.dataobject.ProjectIdea; -import se.su.dsv.scipro.match.dataprovider.ProjectIdeaDataProvider; -import se.su.dsv.scipro.util.DateFormatter; -import se.su.dsv.scipro.util.StringUtil; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -public class SupervisorMatchedThesisPanel extends Panel { - - @SpringBean - private SupervisorDao supervisorDao; - - private Match.Status selectedStatus; - - private List<Match.Status> status; - - private ProjectIdeaDao.Params params; - - private WebMarkupContainer dataViewContainer; - - private ProjectIdeaDataProvider provider; - - private Label emptyLabel; - - private DataView<ProjectIdea> dataView; - - private List<Match.Status> statusList; - - private static final long serialVersionUID = 1L; - - private final String panelType; - - private RadioGroup<Match.Status> radioGroup; - - private User user; - - private Dialog dialog; - - private Component feedbackPanel; - - public SupervisorMatchedThesisPanel(String id, User user, String panelType, final Component feedbackPanel__) { - super(id); - setOutputMarkupId(true); - this.user = user; - this.panelType = panelType; - feedbackPanel = feedbackPanel__; - - dialog = new Dialog("dialog"); - dialog.setModal(true); - dialog.setAutoOpen(false); - dialog.setWidth(800); - dialog.setHeight(800); - dialog.setOutputMarkupId(true); - - add(dialog); - dialog.add(new EmptyPanel("dialogcontents")); - - panelSettings(); - dataViewSetup(); - radioSetup(); - addComponents(); - - } - - private void panelSettings() { - dataViewContainer = new WebMarkupContainer("dataViewContainer"); - provider = new ProjectIdeaDataProvider(); - params = new ProjectIdeaDao.Params(); - Employee supervisor = supervisorDao.getFrom(user); - - //Supervisor is null when a sysadmin accesses the page and then we dont want to show any projectIdeas. - if (supervisor == null) { - Date d = new Date(1); - params.setSubmittedBefore(d); - } - - ArrayList<Match.Status> startValue = new ArrayList<Match.Status>(); - startValue.add(Match.Status.PUBLISHED); - params.setSupervisor(supervisor); - params.setStatuses(startValue); - - provider.setParams(params); - - emptyLabel = new Label("emptyLabel", "No project ideas."); - - statusList = new ArrayList<Match.Status>(); - statusList.add(Status.PUBLISHED); - statusList.add(Status.CONFIRMED); - - } - - private void dataViewSetup() { - - dataView = new DataView<ProjectIdea>("projectIdeaDataView", provider) { - private static final long serialVersionUID = 2098366824640796530L; - - @Override - protected void populateItem(final Item<ProjectIdea> item) { - final ProjectIdea projectIdea = item.getModelObject(); - item.add(new Label("level", projectIdea.getProjectClass().getName())); - - item.add(new AjaxLink<Void>("openLink") { - private static final long serialVersionUID = -6853137019834200749L; - - @Override - public void onClick(AjaxRequestTarget target) { - if (panelType.equalsIgnoreCase("Admin")) { - dialog.replace(new AdminEditProjectIdeaPanel("dialogcontents", item.getModel(), feedbackPanel)); - - } else { - dialog.replace(new SupervisorProjectIdeaDialogPanel("dialogcontents", projectIdea.getMatch()) { - private static final long serialVersionUID = 5108807012237992330L; - - @Override - public void onUpdateUpdate(AjaxRequestTarget target2) { - emptyLabel.setVisible(provider.size() == 0); - dialog.close(target2); - target2.addComponent(dataViewContainer); - target2.addComponent(emptyLabel); - } - }); - } - dialog.setTitle(Strings.escapeMarkup(projectIdea.getTitle()).toString()); - dialog.open(target); - target.addComponent(dialog); - } - }.add(new Label("title", projectIdea.getTitle()))); - - item.add(new Label("authors", StringUtil.getAuthorsFormated(projectIdea.getAuthors()))); - - if (projectIdea.getMatch().getStatus() == Status.CONFIRMED) - item.add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("acceptedDate" , projectIdea.getMatch().getDateCreated())); - else - item.add(new EmptyPanel("acceptedDate")); - } - }; - - } - - private void radioSetup() { - CompoundPropertyModel<List<Match.Status>> statusModel = new CompoundPropertyModel<List<Match.Status>>(statusList); - radioGroup = new RadioGroup<Match.Status>("radioGroup", new Model<Match.Status>()); - - ListView<Match.Status> statusListView = new ListView<Match.Status>("statusListView", statusModel) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(final ListItem<Match.Status> item) { - Radio<Match.Status> radio = new Radio<Match.Status>("statusRadio", item.getModel()); - item.add(radio); - if (item.getModelObject().equals(Match.Status.PUBLISHED)) { - item.add(new Label("statusName", "Suggested")); - } else { - item.add(new Label("statusName", "Accepted")); - } - } - }; - radioGroup.add(new AjaxFormChoiceComponentUpdatingBehavior() { - - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - selectedStatus = radioGroup.getModelObject(); - status = new ArrayList<Match.Status>(); - status.add(selectedStatus); - params.setStatuses(status); - target.addComponent(dataViewContainer); - emptyLabel.setVisible(provider.size() == 0); - target.addComponent(emptyLabel); - } - }); - radioGroup.add(statusListView); - radioGroup.setDefaultModelObject(Match.Status.PUBLISHED); - } - - private void addComponents() { - emptyLabel.setOutputMarkupId(true); - emptyLabel.setVisible(provider.size() == 0); - - dataViewContainer.add(dataView); - dataViewContainer.add(emptyLabel); - dataViewContainer.add(new PagingNavigator("nav", dataView)); - dataViewContainer.setOutputMarkupId(true); - add(radioGroup); - add(dataViewContainer); - } -} \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaDialogPanel.html b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaDialogPanel.html deleted file mode 100644 index dc44ee5b6c..0000000000 --- a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaDialogPanel.html +++ /dev/null @@ -1,16 +0,0 @@ -<!DOCTYPE html> -<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> -<body> -<wicket:panel> - <!--<a href="#" wicket:id="dialogLink">--> - <!--<span wicket:id="linkLabel"></span>--> - <!--</a>--> - <!----> - <!--<div wicket:id="dialog">--> - <div wicket:id="watsonPanel"></div> - <div wicket:id="acceptDeclinePanel"></div> - <!--</div>--> - -</wicket:panel> -</body> -</html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaDialogPanel.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaDialogPanel.java deleted file mode 100644 index be75ddeac0..0000000000 --- a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaDialogPanel.java +++ /dev/null @@ -1,62 +0,0 @@ -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.LoadableDetachableModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import se.su.dsv.scipro.match.dao.interfaces.MatchDao; -import se.su.dsv.scipro.match.dataobject.Match; - -public abstract class SupervisorProjectIdeaDialogPanel extends Panel { - - //matchDao - - @SpringBean - MatchDao matchDao; - - - private static final long serialVersionUID = 1L; - - private long matchId; - - public abstract void onUpdateUpdate(AjaxRequestTarget target); - - public SupervisorProjectIdeaDialogPanel(String id, Match match) { - super(id); - - matchId = match.getId(); - - LoadableDetachableModel<Match> matchModel = new LoadableDetachableModel<Match>() { - - private static final long serialVersionUID = 1L; - - @Override - protected Match load() { - return matchDao.load(matchId); - } - }; - - - add(new WatsonInfoPanel("watsonPanel", matchModel.getObject().getProjectIdea())); - - SupervisorAcceptDeclinePanel2 acceptDeclinePanel; - - boolean visible = matchModel.getObject().getStatus() != Match.Status.CONFIRMED; - - - add(acceptDeclinePanel = new SupervisorAcceptDeclinePanel2("acceptDeclinePanel", matchModel.getObject()){ - private static final long serialVersionUID = 1L; - - @Override - public void onUpdate(AjaxRequestTarget target) { - onUpdateUpdate(target); - - } - - - }); - - acceptDeclinePanel.setVisible(visible); - - } -} \ No newline at end of file