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);
+
+
+		}
+	}
 }