From ea6c4667712237aa6683fe9eeeaf1ec09b64aa4f Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Mon, 27 Aug 2018 14:07:24 +0200
Subject: [PATCH] OO-3304: GUI enhancements

---
 .../ui/GeneratorConfigController.java         |  2 ++
 .../generator/ui/GeneratorController.java     |  7 +++---
 .../generator/ui/GeneratorDataModel.java      | 10 ++++++++
 .../generator/ui/GeneratorEditController.java |  9 +++++++
 ...GeneratorEnableConfirmationController.java |  1 +
 .../quality/generator/ui/GeneratorEvent.java  |  3 ++-
 .../generator/ui/GeneratorListController.java | 24 ++++++++++++++++++-
 .../AbstractDataCollectionEditController.java |  9 +++++++
 .../ui/ParticipationListController.java       |  2 +-
 9 files changed, 60 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorConfigController.java b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorConfigController.java
index ef8a314875e..3131cd464f3 100644
--- a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorConfigController.java
+++ b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorConfigController.java
@@ -253,6 +253,8 @@ public class GeneratorConfigController extends FormBasicController {
 			currentOrganisations = QualityUIFactory.getSelectedOrganisations(organisationsEl, currentOrganisations);
 			generatorService.updateGeneratorOrganisations(generator, currentOrganisations);
 		}
+		
+		fireEvent(ureq, new GeneratorEvent(generator, GeneratorEvent.Action.CHANGED));
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorController.java b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorController.java
index a93a36fddd2..981b8f656a1 100644
--- a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorController.java
+++ b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorController.java
@@ -126,10 +126,9 @@ public class GeneratorController extends BasicController implements TooledContro
 			GeneratorEvent gEvent = (GeneratorEvent) event;
 			GeneratorEvent.Action action = gEvent.getAction();
 			generator = gEvent.getGenerator();
-			//TODO uh auch für geenratro
-//			if (Action.CHANGED.equals(action)) {
-//				stackPanel.changeDisplayname(dataCollection.getTitle(), null, this);
-			if (GeneratorEvent.Action.ENABLE.equals(action)) {
+			if (GeneratorEvent.Action.CHANGED.equals(action)) {
+				stackPanel.changeDisplayname(generator.getTitle(), null, this);
+			} else if (GeneratorEvent.Action.ENABLE.equals(action)) {
 				doConfirmEnableGenerator(ureq);
 			} else if (GeneratorEvent.Action.DISABLE.equals(action)) {
 				doConfirmDisableGenerator(ureq);
diff --git a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorDataModel.java b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorDataModel.java
index 9f518a3948b..3e2ff3fd52f 100644
--- a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorDataModel.java
+++ b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorDataModel.java
@@ -45,6 +45,16 @@ class GeneratorDataModel extends DefaultFlexiTableDataModel<GeneratorRow>
 		super(columnsModel);
 		this.translator = translator;
 	}
+	
+	public GeneratorRow getObjectByKey(Long key) {
+		List<GeneratorRow> rows = getObjects();
+		for (GeneratorRow row: rows) {
+			if (row != null && row.getGeneratorRef().getKey().equals(key)) {
+				return row;
+			}
+		}
+		return null;
+	}
 
 	@Override
 	public void sort(SortKey orderBy) {
diff --git a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEditController.java b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEditController.java
index 6d0af9cfbeb..1e183d7c2ea 100644
--- a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEditController.java
+++ b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEditController.java
@@ -24,6 +24,7 @@ import org.olat.core.gui.components.form.flexible.FormItemContainer;
 import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
 import org.olat.core.gui.components.stack.TooledStackedPanel;
 import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.modules.quality.QualitySecurityCallback;
 import org.olat.modules.quality.generator.QualityGenerator;
@@ -77,6 +78,14 @@ public class GeneratorEditController extends AbstractGeneratorEditController {
 		providerConfigCtrl.setReadOnly(generator.isEnabled());
 	}
 
+	@Override
+	protected void event(UserRequest ureq, Controller source, Event event) {
+		if (event instanceof GeneratorEvent) {
+			fireEvent(ureq, event);
+		}
+		super.event(ureq, source, event);
+	}
+
 	boolean validateBeforeActivation(UserRequest ureq) {
 		boolean allOk = true;
 		allOk &= configCtrl.validateBeforeActivation(ureq);
diff --git a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEnableConfirmationController.java b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEnableConfirmationController.java
index bd1f0b97b6f..e7fbc9a509d 100644
--- a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEnableConfirmationController.java
+++ b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEnableConfirmationController.java
@@ -68,6 +68,7 @@ public class GeneratorEnableConfirmationController extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		Date fromDate = generator.getLastRun() != null? generator.getLastRun(): new Date();
 		fromEl = uifactory.addDateChooser("generator.from.date", fromDate, formLayout);
+		fromEl.setDateChooserTimeEnabled(true);
 		fromEl.setMandatory(true);
 		fromEl.addActionListener(FormEvent.ONCHANGE);
 		
diff --git a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEvent.java b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEvent.java
index 5b179150e86..d6f70f7ef70 100644
--- a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEvent.java
+++ b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorEvent.java
@@ -35,7 +35,8 @@ public class GeneratorEvent extends Event {
 	public enum Action {
 		ENABLE,
 		DISABLE,
-		DELETE
+		DELETE,
+		CHANGED
 	}
 
 	private final QualityGenerator generator;
diff --git a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorListController.java b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorListController.java
index abb65a17411..cef1a3f505d 100644
--- a/src/main/java/org/olat/modules/quality/generator/ui/GeneratorListController.java
+++ b/src/main/java/org/olat/modules/quality/generator/ui/GeneratorListController.java
@@ -158,8 +158,30 @@ public class GeneratorListController extends FormBasicController implements Tool
 
 	@Override
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
-		// TODO uh Auto-generated method stub
+		if(entries == null || entries.isEmpty()) return;
 		
+		ContextEntry entry = entries.get(0);
+		String type = entry.getOLATResourceable().getResourceableTypeName();
+		if (QualityGenerator.RESOURCEABLE_TYPE_NAME.equals(type)) {
+			Long key = entry.getOLATResourceable().getResourceableId();
+			GeneratorRow row = dataModel.getObjectByKey(key);
+			if (row == null) {
+				loadModel();
+				row = dataModel.getObjectByKey(key);
+				if (row != null) {
+					doEditGenerator(ureq, row.getGeneratorRef());
+					int index = dataModel.getObjects().indexOf(row);
+					if (index >= 1 && tableEl.getPageSize() > 1) {
+						int page = index / tableEl.getPageSize();
+						tableEl.setPage(page);
+					}
+				} else {
+					tableEl.reset();
+				}
+			} else {
+				doEditGenerator(ureq, row.getGeneratorRef());
+			}
+		}
 	}
 	
 	@Override
diff --git a/src/main/java/org/olat/modules/quality/ui/AbstractDataCollectionEditController.java b/src/main/java/org/olat/modules/quality/ui/AbstractDataCollectionEditController.java
index 062429752a3..9ef79f647d7 100644
--- a/src/main/java/org/olat/modules/quality/ui/AbstractDataCollectionEditController.java
+++ b/src/main/java/org/olat/modules/quality/ui/AbstractDataCollectionEditController.java
@@ -73,6 +73,15 @@ abstract class AbstractDataCollectionEditController extends FormBasicController
 		this.dataCollection = dataCollection;
 	}
 	
+	AbstractDataCollectionEditController(UserRequest ureq, WindowControl wControl,
+			QualitySecurityCallback secCallback, TooledStackedPanel stackPanel,
+			QualityDataCollection dataCollection, int layout) {
+		super(ureq, wControl, layout);
+		this.secCallback = secCallback;
+		this.stackPanel = stackPanel;
+		this.dataCollection = dataCollection;
+	}
+	
 	protected void setDataCollection(UserRequest ureq, QualityDataCollection dataCollection) {
 		this.dataCollection = dataCollection;
 		updateUI(ureq);
diff --git a/src/main/java/org/olat/modules/quality/ui/ParticipationListController.java b/src/main/java/org/olat/modules/quality/ui/ParticipationListController.java
index 3c4eb07f28f..14a96760974 100644
--- a/src/main/java/org/olat/modules/quality/ui/ParticipationListController.java
+++ b/src/main/java/org/olat/modules/quality/ui/ParticipationListController.java
@@ -99,7 +99,7 @@ public class ParticipationListController extends AbstractDataCollectionEditContr
 	public ParticipationListController(UserRequest ureq, WindowControl windowControl,
 			QualitySecurityCallback secCallback, TooledStackedPanel stackPanel,
 			QualityDataCollection dataCollection) {
-		super(ureq, windowControl, secCallback, stackPanel, dataCollection);
+		super(ureq, windowControl, secCallback, stackPanel, dataCollection, LAYOUT_BAREBONE);
 		initForm(ureq);
 	}
 
-- 
GitLab