From c866b089375942ee87b67a283611e45434aaec66 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Tue, 18 Aug 2015 10:56:43 +0200
Subject: [PATCH] OO-1650: use the same segment while paging through users in
 coaching tool

---
 .../modules/coach/ui/CourseController.java    |  8 +++++--
 .../EfficiencyStatementDetailsController.java | 21 ++++++++++++++-----
 .../modules/coach/ui/GroupController.java     |  8 +++++--
 .../coach/ui/StudentCoursesController.java    |  8 +++++--
 .../coach/ui/StudentOverviewController.java   |  8 +++++--
 5 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/src/main/java/org/olat/modules/coach/ui/CourseController.java b/src/main/java/org/olat/modules/coach/ui/CourseController.java
index 76b42e2e8b1..37a82c2d10a 100644
--- a/src/main/java/org/olat/modules/coach/ui/CourseController.java
+++ b/src/main/java/org/olat/modules/coach/ui/CourseController.java
@@ -356,11 +356,15 @@ public class CourseController extends BasicController implements Activateable2,
 	}
 	
 	private void selectDetails(UserRequest ureq,  EfficiencyStatementEntry entry) {
-		removeAsListenerAndDispose(statementCtrl);
+		boolean selectAssessmentTool = false;
+		if(statementCtrl != null) {
+			selectAssessmentTool = statementCtrl.isAssessmentToolSelected();
+			removeAsListenerAndDispose(statementCtrl);
+		}
 
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance(Identity.class, entry.getStudentKey());
 		WindowControl bwControl = addToHistory(ureq, ores, null);
-		statementCtrl = new EfficiencyStatementDetailsController(ureq, bwControl, entry);
+		statementCtrl = new EfficiencyStatementDetailsController(ureq, bwControl, entry, selectAssessmentTool);
 		listenTo(statementCtrl);
 		mainVC.put("efficiencyDetails", statementCtrl.getInitialComponent());
 		
diff --git a/src/main/java/org/olat/modules/coach/ui/EfficiencyStatementDetailsController.java b/src/main/java/org/olat/modules/coach/ui/EfficiencyStatementDetailsController.java
index 0de9ad93cc8..e48ea77a741 100644
--- a/src/main/java/org/olat/modules/coach/ui/EfficiencyStatementDetailsController.java
+++ b/src/main/java/org/olat/modules/coach/ui/EfficiencyStatementDetailsController.java
@@ -79,7 +79,7 @@ public class EfficiencyStatementDetailsController extends BasicController implem
 	private EfficiencyStatementManager efficiencyStatementManager;
 	
 	public EfficiencyStatementDetailsController(UserRequest ureq, WindowControl wControl,
-			EfficiencyStatementEntry statementEntry) {
+			EfficiencyStatementEntry statementEntry, boolean selectAssessmentTool) {
 		super(ureq, wControl);
 
 		mainVC = createVelocityContainer("efficiency_details");
@@ -89,9 +89,10 @@ public class EfficiencyStatementDetailsController extends BasicController implem
 		assessedIdentity = securityManager.loadIdentityByKey(statementEntry.getStudentKey());
 		statementCtrl = createEfficiencyStatementController(ureq);
 		listenTo(statementCtrl);
-		mainVC.put("segmentCmp", statementCtrl.getInitialComponent());
 		
-		if(entry != null) {
+		if(entry == null) {
+			mainVC.put("segmentCmp", statementCtrl.getInitialComponent());
+		} else {
 			try {
 				ICourse course = CourseFactory.loadCourse(entry.getOlatResource());
 				assessmentCtrl = new IdentityAssessmentEditController(wControl, ureq, null,
@@ -100,10 +101,16 @@ public class EfficiencyStatementDetailsController extends BasicController implem
 				
 				segmentView = SegmentViewFactory.createSegmentView("segments", mainVC, this);
 				efficiencyStatementLink = LinkFactory.createLink("details.statement", mainVC, this);
-				segmentView.addSegment(efficiencyStatementLink, true);
+				segmentView.addSegment(efficiencyStatementLink, !selectAssessmentTool);
 				
 				assessmentLink = LinkFactory.createLink("details.assessment", mainVC, this);
-				segmentView.addSegment(assessmentLink, false);
+				segmentView.addSegment(assessmentLink, selectAssessmentTool);
+				
+				if(selectAssessmentTool) {
+					mainVC.put("segmentCmp", assessmentCtrl.getInitialComponent());
+				} else {
+					mainVC.put("segmentCmp", statementCtrl.getInitialComponent());
+				}
 			} catch(CorruptedCourseException e) {
 				logError("", e);
 			}
@@ -116,6 +123,10 @@ public class EfficiencyStatementDetailsController extends BasicController implem
 		return statementEntry;
 	}
 	
+	public boolean isAssessmentToolSelected() {
+		return assessmentCtrl != null && assessmentCtrl.getInitialComponent() == mainVC.getComponent("segmentCmp"); 
+	}
+	
 	@Override
 	protected void doDispose() {
 		//
diff --git a/src/main/java/org/olat/modules/coach/ui/GroupController.java b/src/main/java/org/olat/modules/coach/ui/GroupController.java
index 2984f95ed2f..a1542502486 100644
--- a/src/main/java/org/olat/modules/coach/ui/GroupController.java
+++ b/src/main/java/org/olat/modules/coach/ui/GroupController.java
@@ -341,11 +341,15 @@ public class GroupController extends BasicController implements Activateable2, G
 	}
 	
 	private void selectDetails(UserRequest ureq, EfficiencyStatementEntry statementEntry) {
-		removeAsListenerAndDispose(statementCtrl);
+		boolean selectAssessmentTool = false;
+		if(statementCtrl != null) {
+			selectAssessmentTool = statementCtrl.isAssessmentToolSelected();
+			removeAsListenerAndDispose(statementCtrl);
+		}
 		
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance(Identity.class, statementEntry.getStudentKey());
 		WindowControl bwControl = addToHistory(ureq, ores, null);
-		statementCtrl = new EfficiencyStatementDetailsController(ureq, bwControl, statementEntry);
+		statementCtrl = new EfficiencyStatementDetailsController(ureq, bwControl, statementEntry, selectAssessmentTool);
 		listenTo(statementCtrl);
 		mainVC.put("efficiencyDetails", statementCtrl.getInitialComponent());
 		
diff --git a/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java b/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java
index 8186cb1d8a1..61bfca07829 100644
--- a/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java
+++ b/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java
@@ -386,11 +386,15 @@ public class StudentCoursesController extends BasicController implements Activat
 	}
 	
 	private void selectDetails(UserRequest ureq, EfficiencyStatementEntry entry) {
-		removeAsListenerAndDispose(statementCtrl);
+		boolean selectAssessmentTool = false;
+		if(statementCtrl != null) {
+			selectAssessmentTool = statementCtrl.isAssessmentToolSelected();
+			removeAsListenerAndDispose(statementCtrl);
+		}
 		
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance(RepositoryEntry.class, entry.getCourse().getKey());
 		WindowControl bwControl = addToHistory(ureq, ores, null);
-		statementCtrl = new EfficiencyStatementDetailsController(ureq, bwControl, entry);
+		statementCtrl = new EfficiencyStatementDetailsController(ureq, bwControl, entry, selectAssessmentTool);
 		listenTo(statementCtrl);
 		detailsCmp.setText(entry.getCourse().getDisplayname());
 
diff --git a/src/main/java/org/olat/modules/coach/ui/StudentOverviewController.java b/src/main/java/org/olat/modules/coach/ui/StudentOverviewController.java
index ab88fa8a422..869a598d70f 100644
--- a/src/main/java/org/olat/modules/coach/ui/StudentOverviewController.java
+++ b/src/main/java/org/olat/modules/coach/ui/StudentOverviewController.java
@@ -283,13 +283,17 @@ public class StudentOverviewController extends BasicController implements Activa
 	}
 	
 	private void selectDetails(UserRequest ureq, UserEfficiencyStatement statement) {
-		removeAsListenerAndDispose(statementCtrl);
+		boolean selectAssessmentTool = false;
+		if(statementCtrl != null) {
+			selectAssessmentTool = statementCtrl.isAssessmentToolSelected();
+			removeAsListenerAndDispose(statementCtrl);
+		}
 		
 		EfficiencyStatementEntry entry = coachingService.getEfficencyStatement(statement);
 		
 		OLATResourceable ores = OresHelper.createOLATResourceableInstance(RepositoryEntry.class, statement.getCourseRepoKey());
 		WindowControl bwControl = addToHistory(ureq, ores, null);
-		statementCtrl = new EfficiencyStatementDetailsController(ureq, bwControl, entry);
+		statementCtrl = new EfficiencyStatementDetailsController(ureq, bwControl, entry, selectAssessmentTool);
 		listenTo(statementCtrl);
 		detailsCmp.setText(statement.getShortTitle());
 
-- 
GitLab