From e1a8bb09cfbdafb4d33535f13d7a2ac9d71620d5 Mon Sep 17 00:00:00 2001
From: Fredrik Friis <fred-fri@dsv.su.se>
Date: Fri, 24 Feb 2012 19:28:22 +0900
Subject: [PATCH 1/7] added a new profile panel thats halfway done. todo: fix
 nullpointer for users who are not employees

---
 .../pages/SupervisorProfilePage.java          |  10 +-
 .../supervisor/panels/ProfilePanel.html       |  25 ++++
 .../supervisor/panels/ProfilePanel.java       | 124 ++++++++++++++++++
 3 files changed, 157 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.html
 create mode 100644 src/main/java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java

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

From 44b25c139e8d28a81717b3e732518cf716f03a49 Mon Sep 17 00:00:00 2001
From: Fredrik Friis <fred-fri@dsv.su.se>
Date: Fri, 24 Feb 2012 19:37:37 +0900
Subject: [PATCH 2/7] adding if statement to supervisorprofilepage

---
 .../scipro/supervisor/pages/SupervisorProfilePage.java    | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

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 c558859256..4a08c2260e 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
@@ -20,6 +20,12 @@ public class SupervisorProfilePage extends AbstractSupervisorPage {
 	public SupervisorProfilePage(final PageParameters pp){
 		super(pp);
 		//add(factory.createUserProfilePanelForUser("supervisorProfile",getUser()));
-        add(new ProfilePanel("supervisorProfile", new Model<Employee>(supervisorDao.getFrom(getUser()))));
+        if (supervisorDao.getFrom(e)){
+        	
+        }get
+        else {
+        	
+        }
+		add(new ProfilePanel("supervisorProfile", new Model<Employee>(supervisorDao.getFrom(getUser()))));
 	}
 }

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

From d5c228389c9f3fab10ced161b6de3ea4b65c6ff0 Mon Sep 17 00:00:00 2001
From: Fredrik Friis <fred-fri@dsv.su.se>
Date: Mon, 27 Feb 2012 10:57:55 +0900
Subject: [PATCH 4/7] better markup now

---
 .../supervisor/panels/ProfilePanel.html       | 26 +++++++++++++------
 1 file changed, 18 insertions(+), 8 deletions(-)

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 63689dbaad..7c734a23c1 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
@@ -22,22 +22,32 @@
 						wicket:id="areacheckbox" />
 				</div>
 			</div>
-
-			<div wicket:id="regularcontainer">
-				<div class="append-bottom">
-					<label>Regular: </label>
-
-
-					<div wicket:id="regularlistview">
+			
+			<div><label>Regular: </label></div>
+			<div class="span-22 last" wicket:id="regularcontainer">
+				<div class="span-11">
+				 <label>Available: </label>
+				 <div wicket:id="regularlistview">
 						<span wicket:id="regularlabel"></span> <input type="checkbox"
 							wicket:id="regularcheckbox" />
 					</div>
-					<div wicket:id="regularlistview2">
+				</div>
+				<div class="span-11 last">
+				<label>Selected: </label>
+				<div wicket:id="regularlistview2">
 						<span wicket:id="regularlabel"></span> <input type="checkbox"
 							wicket:id="regularcheckbox" />
 					</div>
 				</div>
 			</div>
+			
+
+					
+
+
+					
+					
+
 		</form>
 	</wicket:panel>
 </body>

From 981e8dc5cc0998309d1d0d83a2037df0036f55f6 Mon Sep 17 00:00:00 2001
From: Fredrik Friis <fred-fri@dsv.su.se>
Date: Mon, 27 Feb 2012 11:39:24 +0900
Subject: [PATCH 5/7] some fixes

---
 .../supervisor/panels/ProfilePanel.html       | 27 ++++++++++---------
 .../supervisor/panels/ProfilePanel.java       | 15 ++++++++---
 2 files changed, 27 insertions(+), 15 deletions(-)

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 7c734a23c1..ae28e552c4 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,35 +5,38 @@
 	<wicket:panel>
 		<form wicket:id="form">
 			<div class="append-bottom">
-				<label>Unit:</label>
+				<label>Unit: (imported from Daisy)</label>
 				<div wicket:id="unitlabel"></div>
 			</div>
+			
 			<div class="append-bottom">
-				<label>Languages: </label>
+				<label>Research areas: (imported from Daisy)</label>
+				<div wicket:id="emptylabel"></div>
+				<div wicket:id="arealistview">
+					<span wicket:id="arealabel"></span> 
+<!-- 					<input type="checkbox" wicket:id="areacheckbox" /> -->
+				</div>
+			</div>
+			
+			<div class="append-bottom">
+				<label>Select what languages you can supervise in: </label>
 				<div wicket:id="languagelistview">
 					<span wicket:id="languagelabel"></span> <input type="checkbox"
 						wicket:id="languagecheckbox" />
 				</div>
 			</div>
-			<div class="append-bottom">
-				<label>Research areas: </label>
-				<div wicket:id="arealistview">
-					<span wicket:id="arealabel"></span> <input type="checkbox"
-						wicket:id="areacheckbox" />
-				</div>
-			</div>
 			
-			<div><label>Regular: </label></div>
+			<div><label>Select keywords: </label></div>
 			<div class="span-22 last" wicket:id="regularcontainer">
 				<div class="span-11">
-				 <label>Available: </label>
+				 <label>Available</label>
 				 <div wicket:id="regularlistview">
 						<span wicket:id="regularlabel"></span> <input type="checkbox"
 							wicket:id="regularcheckbox" />
 					</div>
 				</div>
 				<div class="span-11 last">
-				<label>Selected: </label>
+				<label>Selected</label>
 				<div wicket:id="regularlistview2">
 						<span wicket:id="regularlabel"></span> <input type="checkbox"
 							wicket:id="regularcheckbox" />
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 9d96b713a5..99a5c60794 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
@@ -87,19 +87,25 @@ public class ProfilePanel extends Panel {
 
 			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."));
+				add(new Label("unitlabel", "You are not 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)"));
+				add(new Label("unitlabel", employeeModel.getObject().getKeywords().getFiltered(unitType).get(0).getKeyword()));
 			}
 
 			final KeywordType areaType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.RESEARCH_AREA);
+
+			add(new Label("emptylabel", "You do not have any research areas selected in Daisy. Please make sure that you select at least one research area in Daisy ASAP.").setVisible(employeeModel.getObject().getKeywords().getFiltered(areaType) == null || employeeModel.getObject().getKeywords().getFiltered(areaType).isEmpty()));
+
 			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("arealabel", kw.getKeyword()));
+					if (!employeeModel.getObject().getKeywords().getFiltered(areaType).contains(kw)){
+						item.setVisible(false);
+					}
 					item.add(new AjaxCheckBox("areacheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(areaType).contains(kw))){
 						private static final long serialVersionUID = 1L;
 						@Override
@@ -117,13 +123,16 @@ public class ProfilePanel extends Panel {
 
 							employeeModel.getObject().getKeywords().setKeywords(oldKeywords);
 							employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
-							
+
 							target.addComponent(regularContainer);
 						}
 					});
 				}
 			};
 			add(areaListView);
+			//			}
+
+
 
 			regularContainer = new WebMarkupContainer("regularcontainer");
 			regularContainer.setOutputMarkupId(true);

From 5a91b9d7f372b1992684104efa4bede783e08488 Mon Sep 17 00:00:00 2001
From: Fredrik Friis <fred-fri@dsv.su.se>
Date: Mon, 27 Feb 2012 11:42:46 +0900
Subject: [PATCH 6/7] some fixes

---
 .../java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 99a5c60794..e1fbaa5843 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
@@ -95,7 +95,7 @@ public class ProfilePanel extends Panel {
 
 			final KeywordType areaType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.RESEARCH_AREA);
 
-			add(new Label("emptylabel", "You do not have any research areas selected in Daisy. Please make sure that you select at least one research area in Daisy ASAP.").setVisible(employeeModel.getObject().getKeywords().getFiltered(areaType) == null || employeeModel.getObject().getKeywords().getFiltered(areaType).isEmpty()));
+			add(new Label("emptylabel", "You do not have any active/existing research areas selected in Daisy. Please make sure that you select at least one active/existing research area in Daisy ASAP.").setVisible(employeeModel.getObject().getKeywords().getFiltered(areaType) == null || employeeModel.getObject().getKeywords().getFiltered(areaType).isEmpty()));
 
 			ListView<Keyword> areaListView = new ListView<Keyword>("arealistview", new ArrayList<Keyword>(keywordDao.getKeywords(areaType, false))){
 				private static final long serialVersionUID = 1L;

From 7cfba3d236c16a3180726fcdaffe2f4d9d9170a3 Mon Sep 17 00:00:00 2001
From: Fredrik Friis <fred-fri@dsv.su.se>
Date: Mon, 27 Feb 2012 11:53:35 +0900
Subject: [PATCH 7/7] some fixes

---
 .../java/se/su/dsv/scipro/supervisor/panels/ProfilePanel.java | 4 ----
 1 file changed, 4 deletions(-)

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 e1fbaa5843..08c55fbc08 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
@@ -130,9 +130,6 @@ public class ProfilePanel extends Panel {
 				}
 			};
 			add(areaListView);
-			//			}
-
-
 
 			regularContainer = new WebMarkupContainer("regularcontainer");
 			regularContainer.setOutputMarkupId(true);
@@ -208,7 +205,6 @@ public class ProfilePanel extends Panel {
 			};
 			regularContainer.add(regularListView2);
 
-
 		}
 	}
 }