From 09b81b609bb93df6092036c8771bc3d457fa9d10 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Thu, 9 May 2019 16:02:02 +0200
Subject: [PATCH] OO-4034: fix some usability issues in GoToMeeting admin.
 configuration

---
 .../gotomeeting/ui/GoToAdminController.java   |  3 ++
 .../ui/GoToConfigurationController.java       | 41 ++++++++++++-------
 2 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToAdminController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToAdminController.java
index 6bbf08da097..2817ac5bfa7 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToAdminController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToAdminController.java
@@ -84,11 +84,14 @@ public class GoToAdminController extends BasicController implements Activateable
 		String type = entries.get(0).getOLATResourceable().getResourceableTypeName();
 		if("Configuration".equalsIgnoreCase(type)) {
 			doOpenAccountSettings(ureq);
+			segmentView.select(accountLink);
 		} else if("Organizers".equalsIgnoreCase(type)) {
 			List<ContextEntry> subEntries = entries.subList(1, entries.size());
 			doOpenOrganizersList(ureq).activate(ureq, subEntries, entries.get(0).getTransientState());
+			segmentView.select(organizersLink);
 		} else if("Meetings".equalsIgnoreCase(type)) {
 			doOpenMeetingsList(ureq);
+			segmentView.select(meetingsLink);
 		}
 	}
 
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToConfigurationController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToConfigurationController.java
index 253f2429d1d..c119c59168f 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToConfigurationController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToConfigurationController.java
@@ -19,6 +19,10 @@
  */
 package org.olat.modules.gotomeeting.ui;
 
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
@@ -72,9 +76,8 @@ public class GoToConfigurationController extends FormBasicController {
 		String consumerSecret = goToMeetingModule.getTrainingConsumerSecret();
 		trainingConsumerSecretEl = uifactory.addTextElement("training.consumersecret", "training.consumersecret", 128, consumerSecret, formLayout);
 		
-		timeZoneEls = uifactory.addDropdownSingleselect("timezone.ids", "timezone.id", formLayout,
-				GoToTimezoneIDs.TIMEZONE_IDS, GoToTimezoneIDs.TIMEZONE_IDS, null);
-		timeZoneEls.addActionListener(FormEvent.ONCHANGE);
+		String[] timezoneIds = orderedTimezoneIds();
+		timeZoneEls = uifactory.addDropdownSingleselect("timezone.ids", "timezone.id", formLayout, timezoneIds, timezoneIds, null);
 		String timeZoneId = goToMeetingModule.getGoToTimeZoneId();
 		for(String key: GoToTimezoneIDs.TIMEZONE_IDS) {
 			if(key.equals(timeZoneId)) {
@@ -88,9 +91,17 @@ public class GoToConfigurationController extends FormBasicController {
 		uifactory.addFormSubmitButton("save", buttonLayout);
 	}
 	
+	private String[] orderedTimezoneIds() {
+		String[] timezoneIds = GoToTimezoneIDs.TIMEZONE_IDS;
+		List<String> timezoneIdList = Arrays.asList(timezoneIds);
+		Collections.sort(timezoneIdList);
+		return timezoneIdList.toArray(new String[timezoneIdList.size()]);
+	}
+	
 	private void updateEnabled() {
 		boolean enabled = enabledEl.isAtLeastSelected(1);
 		trainingConsumerKeyEl.setVisible(enabled);
+		trainingConsumerSecretEl.setVisible(enabled);
 		timeZoneEls.setVisible(enabled);
 	}
 
@@ -102,23 +113,25 @@ public class GoToConfigurationController extends FormBasicController {
 	@Override
 	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 		if(enabledEl == source) {
-			goToMeetingModule.setEnabled(enabledEl.isAtLeastSelected(1));
 			updateEnabled();
-		} else if(timeZoneEls == source) {
-			String selectedTimeZoneId = timeZoneEls.getSelectedKey();
-			goToMeetingModule.setGoToTimeZoneId(selectedTimeZoneId);
 		}
 		super.formInnerEvent(ureq, source, event);
 	}
 
 	@Override
 	protected void formOK(UserRequest ureq) {
-		String trainingConsumerKey = trainingConsumerKeyEl.getValue();
-		goToMeetingModule.setTrainingConsumerKey(trainingConsumerKey);
-		String trainingConsumerSecret = trainingConsumerSecretEl.getValue();
-		goToMeetingModule.setTrainingConsumerSecret(trainingConsumerSecret);
-		
-		String selectedTimeZoneId = timeZoneEls.getSelectedKey();
-		goToMeetingModule.setGoToTimeZoneId(selectedTimeZoneId);
+		goToMeetingModule.setEnabled(enabledEl.isAtLeastSelected(1));
+		if(enabledEl.isAtLeastSelected(1)) {
+			String trainingConsumerKey = trainingConsumerKeyEl.getValue();
+			goToMeetingModule.setTrainingConsumerKey(trainingConsumerKey);
+			String trainingConsumerSecret = trainingConsumerSecretEl.getValue();
+			goToMeetingModule.setTrainingConsumerSecret(trainingConsumerSecret);
+			String selectedTimeZoneId = timeZoneEls.getSelectedKey();
+			goToMeetingModule.setGoToTimeZoneId(selectedTimeZoneId);
+		} else {
+			goToMeetingModule.setTrainingConsumerKey(null);
+			goToMeetingModule.setTrainingConsumerSecret(null);
+			goToMeetingModule.setGoToTimeZoneId(null);
+		}
 	}
 }
-- 
GitLab