diff --git a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java index 6a4553170e..c558859256 100644 --- a/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java +++ b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProfilePage.java @@ -1,19 +1,25 @@ package se.su.dsv.scipro.supervisor.pages; import org.apache.wicket.PageParameters; +import org.apache.wicket.model.Model; import org.apache.wicket.spring.injection.annot.SpringBean; - +import se.su.dsv.scipro.data.dataobjects.Employee; +import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao; import se.su.dsv.scipro.security.auth.Authorization; import se.su.dsv.scipro.security.auth.roles.Roles; +import se.su.dsv.scipro.supervisor.panels.ProfilePanel; import se.su.dsv.scipro.user.panels.UserProfilePanelFactory; @Authorization(authorizedRoles={Roles.EMPLOYEE}) //@Authorization(authorizedRoles={Roles.SYSADMIN}) public class SupervisorProfilePage extends AbstractSupervisorPage { @SpringBean + SupervisorDao supervisorDao; + @SpringBean private UserProfilePanelFactory factory; public SupervisorProfilePage(final PageParameters pp){ super(pp); - add(factory.createUserProfilePanelForUser("supervisorProfile",getUser())); + //add(factory.createUserProfilePanelForUser("supervisorProfile",getUser())); + add(new ProfilePanel("supervisorProfile", new Model<Employee>(supervisorDao.getFrom(getUser())))); } } diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html new file mode 100644 index 0000000000..3eeba9359b --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html + xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> +<body> + <wicket:panel> + <form wicket:id="form"> + <div class="append-bottom"> + <label>Languages:</label> + <div wicket:id="languagelistview"> + <span wicket:id="languagelabel"></span> <input type="checkbox" + wicket:id="languagecheckbox" /> + </div> + </div> + <div class="append-bottom"> + <label>Regular:</label> + <div wicket:id="regularlistview"> + <span wicket:id="regularlabel"></span> <input type="checkbox" + wicket:id="regularcheckbox" /> + </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/ProfilePanel.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java new file mode 100644 index 0000000000..0f95f8e359 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java @@ -0,0 +1,124 @@ +package se.su.dsv.scipro.supervisor.panels; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.Form; +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.data.dao.interfaces.LanguageDao; +import se.su.dsv.scipro.data.dataobjects.Employee; +import se.su.dsv.scipro.data.dataobjects.Language; +import se.su.dsv.scipro.match.dao.interfaces.KeywordDao; +import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao; +import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao; +import se.su.dsv.scipro.match.dataobject.Keyword; +import se.su.dsv.scipro.match.dataobject.KeywordType; + +/** + * Author: fred + * Date: 2/24/12 + * Time: 3:07 PM + */ +public class ProfilePanel extends Panel { + + private static final long serialVersionUID = 1L; + + public ProfilePanel(String id, Model<Employee> employeeModel) { + super(id); + add(new ProfileForm("form", employeeModel)); + } + + public class ProfileForm extends Form<Void> { + + private static final long serialVersionUID = 1L; + + @SpringBean + LanguageDao languageDao; + @SpringBean + SupervisorDao employeeDao; + @SpringBean + KeywordTypeDao keywordTypeDao; + @SpringBean + KeywordDao keywordDao; + + + public ProfileForm(String id, final Model<Employee> employeeModel) { + super(id); + + ListView<Language> languageListView = new ListView<Language>("languagelistview", languageDao.findAll()) { + + private static final long serialVersionUID = 1L; + + @Override + protected void populateItem(ListItem<Language> item) { + final Language l = item.getModelObject(); + item.add(new Label("languagelabel", l.getName())); + item.add(new AjaxCheckBox("languagecheckbox", new Model<Boolean>(employeeModel.getObject().getCapabilities().getLanguages().contains(l))){ + private static final long serialVersionUID = 1L; + @Override + protected void onUpdate(AjaxRequestTarget target) { + Set<Language> languages = employeeModel.getObject().getCapabilities().getLanguages(); + if (getModelObject()==true){ + languages.add(l); + System.out.println("added language " + l.getName()); + } + else { + languages.remove(l); + System.out.println("removed language " + l.getName()); + } + employeeModel.getObject().getCapabilities().setLanguages(languages); + employeeModel.setObject(employeeDao.save(employeeModel.getObject())); + } + }); + } + }; + add(languageListView); + + + final KeywordType regularType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.REGULAR); + + ListView<Keyword> regularListView = new ListView<Keyword>("regularlistview", new ArrayList<Keyword>(keywordDao.getKeywords(regularType, false))){ + private static final long serialVersionUID = 1L; + @Override + protected void populateItem(ListItem<Keyword> item) { + final Keyword kw = item.getModelObject(); + item.add(new Label("regularlabel", kw.getKeyword())); + item.add(new AjaxCheckBox("regularcheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw))){ + private static final long serialVersionUID = 1L; + @Override + protected void onUpdate(AjaxRequestTarget target) { + Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll()); + + if (getModelObject()==true){ + oldKeywords.add(kw); + System.out.println("added regular " + kw.getKeyword()); + } + else { + oldKeywords.remove(kw); + System.out.println("removed regular " + kw.getKeyword()); + } + + employeeModel.getObject().getKeywords().setKeywords(oldKeywords); + employeeModel.setObject(employeeDao.save(employeeModel.getObject())); + } + }); + } + }; + add(regularListView); + +// final KeywordType unitType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT); + + + + } + } +}