From f7775afe0eefd624d3260d1704628e3cd57e110c Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 27 Jun 2012 10:46:26 +0200
Subject: [PATCH] OO-280: add css class for selenium test in FormItem

---
 .../components/form/flexible/FormItem.java    |  4 ++++
 .../form/flexible/impl/FormDecoratorImpl.java |  9 ++++++++
 .../form/flexible/impl/FormItemImpl.java      |  9 ++++++++
 .../flexible/impl/_content/form_default.html  |  4 ++--
 .../impl/_content/form_horizontal.html        |  4 ++--
 .../flexible/impl/_content/form_vertical.html |  5 +++--
 .../java/org/olat/repository/SearchForm.java  | 21 +++++++++++++++++--
 .../org/olat/user/ChangePrefsController.java  |  4 ++++
 .../olat/user/PreferencesFormController.java  |  6 ++++++
 9 files changed, 58 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/FormItem.java b/src/main/java/org/olat/core/gui/components/form/flexible/FormItem.java
index f788b7b6070..d15150942d9 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/FormItem.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/FormItem.java
@@ -173,6 +173,10 @@ public interface FormItem extends FormBaseComponentIdProvider {
 	 */
 	public boolean hasFocus();
 	
+	public String getElementCssClass();
+	
+	public void setElementCssClass(String cssClass);
+	
 	/**
 	 * called if this component is dispatched, e.g. was clicked (double clicked,
 	 * ...)
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecoratorImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecoratorImpl.java
index 6935d0e59ee..33fce71b504 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecoratorImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecoratorImpl.java
@@ -31,6 +31,7 @@ import org.olat.core.gui.components.form.flexible.FormDecorator;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
 import org.olat.core.gui.components.form.flexible.elements.SpacerElement;
+import org.olat.core.util.StringHelper;
 
 /**
  * Description:<br>
@@ -115,6 +116,14 @@ public class FormDecoratorImpl implements FormDecorator {
 		else
 			return (item instanceof SpacerElement);
 	}
+	
+	public String getElementCssClass(String formItemName) {
+		FormItem item = getFormItem(formItemName);
+		if (item != null && StringHelper.containsNonWhitespace(item.getElementCssClass())) {
+			return " " + item.getElementCssClass();
+		}
+		return "";
+	}
 
 	/**
 	 * Internal helper to get a form item for the given name
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java
index e0b23e8aad8..85624bfd428 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java
@@ -81,6 +81,7 @@ public abstract class FormItemImpl implements FormItem, InlineElement {
 	private boolean isInlineEditingOn;
 	private Component inlineEditingComponent;
 	private String i18nKey4EmptyText="inline.empty.click.for.edit";
+	private String elementCssClass;
 
 	/**
 	 * 
@@ -114,6 +115,14 @@ public abstract class FormItemImpl implements FormItem, InlineElement {
 		return name;
 	}
 
+	public String getElementCssClass() {
+		return elementCssClass;
+	}
+
+	public void setElementCssClass(String elementCssClass) {
+		this.elementCssClass = elementCssClass;
+	}
+
 	@Override
 	public boolean isInlineEditingOn() {
 		if(!isInlineEditingElement) throw new AssertException("isInlineEditingOn called although it is not a inlineEditingElement");
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_default.html b/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_default.html
index fcb0e5fd187..c8484908df8 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_default.html
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_default.html
@@ -8,9 +8,9 @@
 #foreach ($item in $formitemnames)
 #if ($f.isVisible($item))
 	#if($f.hasError($item))
-	<div class="b_form_element_wrapper b_form_error b_clearfix">		
+	<div class="b_form_element_wrapper$f.getElementCssClass($item) b_form_error b_clearfix">		
 	#else
-	<div class="b_form_element_wrapper b_clearfix">
+	<div class="b_form_element_wrapper$f.getElementCssClass($item) b_clearfix">
 	#end
 		#if ($f.hasLabel($item))
 		<div class="b_form_element_label">
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_horizontal.html b/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_horizontal.html
index be38bc12436..ec7f775e796 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_horizontal.html
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_horizontal.html
@@ -8,9 +8,9 @@
 #foreach ($item in $formitemnames)
 #if ($f.isVisible($item))
 	#if($f.hasError($item))
-	<div class="b_form_element_wrapper b_form_horizontal b_form_error">		
+	<div class="b_form_element_wrapper$f.getElementCssClass($item) b_form_horizontal b_form_error">		
 	#else
-	<div class="b_form_element_wrapper b_form_horizontal">
+	<div class="b_form_element_wrapper$f.getElementCssClass($item) b_form_horizontal">
 	#end
 		#if ($f.hasLabel($item))
 		<div class="b_form_element_label b_form_horizontal">
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_vertical.html b/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_vertical.html
index f332feb8824..8b9fb8f7422 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_vertical.html
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/_content/form_vertical.html
@@ -7,10 +7,11 @@
 
 #foreach ($item in $formitemnames)
 #if ($f.isVisible($item))
+$f.getElementCssClass($item)
 	#if($f.hasError($item))
-	<div class="b_form_element_wrapper b_form_vertical b_form_error b_clearfix">		
+	<div class="b_form_element_wrapper$f.getElementCssClass($item) b_form_vertical b_form_error b_clearfix">		
 	#else
-	<div class="b_form_element_wrapper b_form_vertical b_clearfix">
+	<div class="b_form_element_wrapper$f.getElementCssClass($item) b_form_vertical$f.getElementCssClass($item) b_clearfix">
 	#end
 		#if ($f.hasLabel($item))
 		<div class="b_form_element_label b_form_vertical">
diff --git a/src/main/java/org/olat/repository/SearchForm.java b/src/main/java/org/olat/repository/SearchForm.java
index 645841579cc..9cd40272c21 100644
--- a/src/main/java/org/olat/repository/SearchForm.java
+++ b/src/main/java/org/olat/repository/SearchForm.java
@@ -225,25 +225,33 @@ public class SearchForm extends FormBasicController{
 		setFormTitle("search.generic");
 		
 		displayName = uifactory.addTextElement("cif_displayname", "cif.displayname", 255, "", formLayout);
+		displayName.setElementCssClass("o_sel_repo_search_displayname");
 		displayName.setFocus(true);
 		
 		author = uifactory.addTextElement("cif_author", "cif.author", 255, "", formLayout);
+		author.setElementCssClass("o_sel_repo_search_author");
 		if (limitUsername != null) {
 			author.setValue(limitUsername);
 			author.setEnabled(false);
 		}
 		description = uifactory.addTextElement("cif_description", "cif.description", 255, "", formLayout);
+		description.setElementCssClass("o_sel_repo_search_description");
 		
 		id = uifactory.addTextElement("cif_id", "cif.id", 12, "", formLayout);
+		id.setElementCssClass("o_sel_repo_search_id");
 		id.setVisible(isAdmin);
 		id.setRegexMatchCheck("\\d*", "search.id.format");
 		
 		
 		typesSelection = uifactory.addCheckboxesVertical("search.limit.type", formLayout, new String[]{"xx"}, new String[]{""}, new String[]{null}, 1);
 		typesSelection.addActionListener(listener, FormEvent.ONCLICK);
+		typesSelection.setElementCssClass("o_sel_repo_search_type_limit");
+		
+		String[] typeKeys = getResources().toArray(new String[0]);
+		String[] typeCssClasess = getCssResources(getResources());
+		types = uifactory.addCheckboxesVertical("cif_types", "cif.type", formLayout, typeKeys, getTranslatedResources(getResources()), typeCssClasess, 1);
+		types.setElementCssClass("o_sel_repo_search_types");
 		
-		types = uifactory.addCheckboxesVertical("cif_types", "cif.type", formLayout, getResources().toArray(new String[0]), getTranslatedResources(getResources()), null, 1);
-	
 		FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("button_layout", getTranslator());
 		formLayout.add(buttonLayout);
 		
@@ -269,6 +277,15 @@ public class SearchForm extends FormBasicController{
 		return l.toArray(new String[0]);
 	}
 	
+	private String[] getCssResources(List<String> resources) {
+		String[] cssClasses= new String[resources.size()];
+		int count = 0;
+		for(String key: resources){
+			cssClasses[count++] = "o_sel_repo_search_" + key.toLowerCase().replace(".", "_");
+		}
+		return cssClasses;
+	}
+	
 	private List<String> getResources() {
 		List<String> resources = new ArrayList<String>();
 		resources.add(CourseModule.getCourseTypeName());
diff --git a/src/main/java/org/olat/user/ChangePrefsController.java b/src/main/java/org/olat/user/ChangePrefsController.java
index d4433cb9b4e..833ea7ac0c7 100644
--- a/src/main/java/org/olat/user/ChangePrefsController.java
+++ b/src/main/java/org/olat/user/ChangePrefsController.java
@@ -238,13 +238,16 @@ class SpecialPrefsForm extends FormBasicController {
 		setFormContextHelp(this.getClass().getPackage().getName(), "home-prefs-special.html", "help.hover.home.prefs.special");
 		
 		prefsElement = uifactory.addCheckboxesVertical("prefs", "title.prefs.accessibility", formLayout, keys, values, null, 1);
+		prefsElement.setElementCssClass("o_sel_home_settings_accessibility");
 		//fxdiff BAKS-7 Resume function
 		HistoryModule historyModule = (HistoryModule)CoreSpringFactory.getBean("historyModule");
 		if(historyModule.isResumeEnabled()) {
 			resumeElement = uifactory.addRadiosVertical("resume", "resume.label", formLayout, resumeKeys, resumeValues);
+			resumeElement.setElementCssClass("o_sel_home_settings_resume");
 		}
 		if(historyModule.isBackEnabled()) {
 			backElement = uifactory.addRadiosVertical("back-enabling", "back.label", formLayout, yesNoKeys, yesNoValues);
+			backElement.setElementCssClass("o_sel_home_settings_back_enabling");
 		}
 		update();
 		
@@ -323,6 +326,7 @@ class UserPrefsResetForm extends FormBasicController {
 		values = new String[] {translate("reset.elements.guiprefs"), translate("reset.elements.sysprefs"), translate("reset.elements.resume")};
 		
 		resetElements = uifactory.addCheckboxesVertical("prefs", "reset.elements", formLayout, keys, values, null, 1);
+		resetElements.setElementCssClass("o_sel_home_settings_reset_sysprefs");
 		
 		final FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("button_layout", getTranslator());
 		formLayout.add(buttonLayout);
diff --git a/src/main/java/org/olat/user/PreferencesFormController.java b/src/main/java/org/olat/user/PreferencesFormController.java
index 0a95d921153..a3778f25f79 100644
--- a/src/main/java/org/olat/user/PreferencesFormController.java
+++ b/src/main/java/org/olat/user/PreferencesFormController.java
@@ -143,6 +143,7 @@ public class PreferencesFormController extends FormBasicController {
 
 		// Username
 		StaticTextElement username = uifactory.addStaticTextElement("form.username", tobeChangedIdentity.getName(), formLayout);
+		username.setElementCssClass("o_sel_home_settings_username");
 		username.setEnabled(false);
 
 		// Language
@@ -151,6 +152,7 @@ public class PreferencesFormController extends FormBasicController {
 		String[] langValues = StringHelper.getMapValuesAsStringArray(languages);
 		ArrayHelper.sort(langKeys, langValues, false, true, false);
 		language = uifactory.addDropdownSingleselect("form.language", formLayout, langKeys, langValues, null);
+		language.setElementCssClass("o_sel_home_settings_language");
 		String langKey = prefs.getLanguage();
 		// Preselect the users language if available. Maye not anymore enabled on
 		// this server
@@ -170,6 +172,7 @@ public class PreferencesFormController extends FormBasicController {
 				translate("form.fontsize.presentation")
 		};
 		fontsize = uifactory.addDropdownSingleselect("form.fontsize", formLayout, cssFontsizeKeys, cssFontsizeValues, null);
+		fontsize.setElementCssClass("o_sel_home_settings_fontsize");
 		fontsize.select(prefs.getFontsize(), true);
 		fontsize.addActionListener(this, FormEvent.ONCHANGE);
 		
@@ -185,6 +188,7 @@ public class PreferencesFormController extends FormBasicController {
 				intervalValues[i] = translate(i18nPrefix + intervalKeys[i]);
 			}
 			notificationInterval = uifactory.addDropdownSingleselect("form.notification", formLayout, intervalKeys, intervalValues, null);
+			notificationInterval.setElementCssClass("o_sel_home_settings_notification_interval");
 			notificationInterval.select(prefs.getNotificationInterval(), true);			
 		}
 		//fxdiff VCRP-16: intern mail system
@@ -193,6 +197,7 @@ public class PreferencesFormController extends FormBasicController {
 			String userEmail = tobeChangedIdentity.getUser().getProperty(UserConstants.EMAIL, getLocale());
 			String[] mailInternLabels = new String[] { translate("mail." + mailIntern[0], userEmail), translate("mail." + mailIntern[1], userEmail) };
 			mailSystem = uifactory.addRadiosVertical("mail-system", "mail.system", formLayout, mailIntern, mailInternLabels);
+			mailSystem.setElementCssClass("o_sel_home_settings_mail");
 			
 			String mailPrefs = prefs.getReceiveRealMail();
 			if(StringHelper.containsNonWhitespace(mailPrefs)) {
@@ -213,6 +218,7 @@ public class PreferencesFormController extends FormBasicController {
 		String currentCharset = UserManager.getInstance().getUserCharset(tobeChangedIdentity);
 		String[] csKeys = StringHelper.getMapKeysAsStringArray(charsets);
 		charset = uifactory.addDropdownSingleselect("form.charset", formLayout, csKeys, csKeys, null);
+		charset.setElementCssClass("o_sel_home_settings_cahrset");
 		charset.select(currentCharset, true);
 
 		// Submit and cancel buttons
-- 
GitLab