From 50069ca7eba8b0b67d26281d8df18cda65297f9c Mon Sep 17 00:00:00 2001 From: Fredrik Friis <fred-fri@dsv.su.se> Date: Mon, 27 Feb 2012 10:48:39 +0900 Subject: [PATCH] almost finished, just need to put the active on the right an inactive on the left --- .../pages/SupervisorProfilePage.java | 13 +- .../supervisor/panels/ProfilePanel.html | 29 ++- .../supervisor/panels/ProfilePanel.java | 181 +++++++++++++----- 3 files changed, 162 insertions(+), 61 deletions(-) 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 4a08c2260e..e48d9220bb 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,8 +1,10 @@ package se.su.dsv.scipro.supervisor.pages; import org.apache.wicket.PageParameters; +import org.apache.wicket.markup.html.panel.EmptyPanel; 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; @@ -20,12 +22,11 @@ public class SupervisorProfilePage extends AbstractSupervisorPage { public SupervisorProfilePage(final PageParameters pp){ super(pp); //add(factory.createUserProfilePanelForUser("supervisorProfile",getUser())); - if (supervisorDao.getFrom(e)){ - - }get - else { - + if (supervisorDao.getFrom(getUser()) == null){ + add(new EmptyPanel("supervisorProfile")); + } + else { + add(new ProfilePanel("supervisorProfile", new Model<Employee>(supervisorDao.getFrom(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 index 3eeba9359b..63689dbaad 100644 --- a/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html +++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html @@ -5,20 +5,39 @@ <wicket:panel> <form wicket:id="form"> <div class="append-bottom"> - <label>Languages:</label> + <label>Unit:</label> + <div wicket:id="unitlabel"></div> + </div> + <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" /> + <label>Research areas: </label> + <div wicket:id="arealistview"> + <span wicket:id="arealabel"></span> <input type="checkbox" + wicket:id="areacheckbox" /> </div> </div> + <div wicket:id="regularcontainer"> + <div class="append-bottom"> + <label>Regular: </label> + + + <div wicket:id="regularlistview"> + <span wicket:id="regularlabel"></span> <input type="checkbox" + wicket:id="regularcheckbox" /> + </div> + <div wicket:id="regularlistview2"> + <span wicket:id="regularlabel"></span> <input type="checkbox" + wicket:id="regularcheckbox" /> + </div> + </div> + </div> </form> </wicket:panel> </body> 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 index 0f95f8e359..9d96b713a5 100644 --- a/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java +++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java @@ -6,6 +6,7 @@ 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.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.list.ListItem; @@ -29,40 +30,41 @@ import se.su.dsv.scipro.match.dataobject.KeywordType; * 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)); - } + private WebMarkupContainer regularContainer; - 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); + 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()) { - 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))){ + 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) { @@ -78,26 +80,32 @@ public class ProfilePanel extends Panel { 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; + }); + } + }; + add(languageListView); + + final KeywordType unitType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT); + if (employeeModel.getObject().getKeywords().getFiltered(unitType) == null || employeeModel.getObject().getKeywords().getFiltered(unitType).isEmpty()){ + add(new Label("unitlabel", "You aren't registered under any existing/active unit in Daisy. Please make sure you are registered under an existing/active unit in Daisy ASAP.")); + } + else { + add(new Label("unitlabel", employeeModel.getObject().getKeywords().getFiltered(unitType).get(0).getKeyword() + " (imported from Daisy)")); + } + + final KeywordType areaType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.RESEARCH_AREA); + ListView<Keyword> areaListView = new ListView<Keyword>("arealistview", new ArrayList<Keyword>(keywordDao.getKeywords(areaType, 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))){ + item.add(new Label("arealabel", kw.getKeyword())); + item.add(new AjaxCheckBox("areacheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(areaType).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()); @@ -109,16 +117,89 @@ public class ProfilePanel extends Panel { employeeModel.getObject().getKeywords().setKeywords(oldKeywords); employeeModel.setObject(employeeDao.save(employeeModel.getObject())); + + target.addComponent(regularContainer); } }); } - }; - add(regularListView); - -// final KeywordType unitType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT); - - - - } - } + }; + add(areaListView); + + regularContainer = new WebMarkupContainer("regularcontainer"); + regularContainer.setOutputMarkupId(true); + add(regularContainer); + + 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(); + if(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw)){ + item.setVisible(false); + } + 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())); + + target.addComponent(regularContainer); + } + }); + } + }; + regularContainer.add(regularListView); + + ListView<Keyword> regularListView2 = new ListView<Keyword>("regularlistview2", 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(); + if(!employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw)){ + item.setVisible(false); + } + 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())); + + target.addComponent(regularContainer); + } + }); + } + }; + regularContainer.add(regularListView2); + + + } + } }