From ab5bc053b1178fdaef4027a202443a289da1b17b Mon Sep 17 00:00:00 2001
From: fred-fri <fred-fri@dsv.su.se>
Date: Wed, 1 Aug 2012 14:21:12 +0900
Subject: [PATCH] some improvements

---
 .../scipro/match/dataobject/ProjectIdea.java  |  2 +-
 .../pages/SupervisorMyProjectIdeasPage.html   | 19 ++++++-----
 .../pages/SupervisorMyProjectIdeasPage.java   | 34 +++++++++++++++++--
 3 files changed, 44 insertions(+), 11 deletions(-)

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..9e9671f463 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/supervisor/pages/SupervisorMyProjectIdeasPage.html b/src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorMyProjectIdeasPage.html
index cf7a666600..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,13 +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>-->
-        <div wicket:id="dp"></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 5bf2e7f173..12d66cbb0e 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
@@ -3,14 +3,20 @@ package se.su.dsv.scipro.supervisor.pages;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageParameters;
 
+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.markup.html.panel.FeedbackPanel;
+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.data.dataobjects.Project;
+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;
@@ -18,6 +24,7 @@ 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.SupervisorMatchedThesisPanel;
+import se.su.dsv.scipro.supervisor.panels.WatsonInfoPanel;
 
 import java.util.Iterator;
 
@@ -33,6 +40,8 @@ public class SupervisorMyProjectIdeasPage extends AbstractSupervisorProjectIdeaP
     @SpringBean
     private EmployeeService employeeService;
 
+    private Dialog dialog;
+
     public SupervisorMyProjectIdeasPage(PageParameters pp) {
         super(pp);
 //        Component feedBackPanel = new FeedbackPanel("feedBackPanel");
@@ -40,6 +49,13 @@ public class SupervisorMyProjectIdeasPage extends AbstractSupervisorProjectIdeaP
 //        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") {
 
@@ -55,8 +71,22 @@ public class SupervisorMyProjectIdeasPage extends AbstractSupervisorProjectIdeaP
 
             @Override
             public IColumn[] getColumns() {
-                IColumn[] columns = new IColumn[1];
-                columns[0] = new PropertyColumn<ProjectIdea>(Model.of("Title"), "title", "title");
+                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) {
+                        dialog.replace(new WatsonInfoPanel("dialogPanel", clicked.getObject()));
+                        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;
             }