496268: Bugzilla add CC should be single line

The change to use LabelsAttributeEditor made it a multiline.

Change-Id: I37f5181e41c48f0f89a4801f339b9def363886cc
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=496268
diff --git a/connector-bugzilla-rest/org.eclipse.mylyn.bugzilla.rest.ui/src/org/eclipse/mylyn/internal/bugzilla/rest/ui/BugzillaRestTaskEditorPage.java b/connector-bugzilla-rest/org.eclipse.mylyn.bugzilla.rest.ui/src/org/eclipse/mylyn/internal/bugzilla/rest/ui/BugzillaRestTaskEditorPage.java
index 1898d36..44d20b6 100644
--- a/connector-bugzilla-rest/org.eclipse.mylyn.bugzilla.rest.ui/src/org/eclipse/mylyn/internal/bugzilla/rest/ui/BugzillaRestTaskEditorPage.java
+++ b/connector-bugzilla-rest/org.eclipse.mylyn.bugzilla.rest.ui/src/org/eclipse/mylyn/internal/bugzilla/rest/ui/BugzillaRestTaskEditorPage.java
@@ -14,12 +14,16 @@
 import java.util.Set;
 
 import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestCore;
+import org.eclipse.mylyn.internal.bugzilla.rest.core.BugzillaRestTaskSchema;
 import org.eclipse.mylyn.internal.bugzilla.rest.core.IBugzillaRestConstants;
 import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
 import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor;
 import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPage;
 import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart;
 import org.eclipse.mylyn.tasks.ui.editors.AttributeEditorFactory;
+import org.eclipse.mylyn.tasks.ui.editors.LayoutHint;
+import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.ColumnSpan;
+import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.RowSpan;
 import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
 import org.eclipse.mylyn.tasks.ui.editors.TaskEditorPartDescriptor;
 
@@ -49,6 +53,10 @@
 				} else {
 					editor = super.createEditor(type, taskAttribute);
 				}
+				if (editor != null
+						&& BugzillaRestTaskSchema.getDefault().ADD_CC.getKey().equals(taskAttribute.getId())) {
+					editor.setLayoutHint(new LayoutHint(RowSpan.SINGLE, ColumnSpan.SINGLE));
+				}
 				return editor;
 			}
 		};
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttribute.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttribute.java
index c9f39af..e2846ba 100644
--- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttribute.java
+++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaAttribute.java
@@ -21,8 +21,8 @@
  * @author Rob Elves
  */
 public enum BugzillaAttribute {
-	STATUS_WHITEBOARD(Messages.BugzillaAttribute_Status_Whiteboard,
-			"status_whiteboard", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE), //$NON-NLS-1$
+	STATUS_WHITEBOARD(Messages.BugzillaAttribute_Status_Whiteboard, "status_whiteboard", TaskAttribute.TYPE_SHORT_TEXT, //$NON-NLS-1$
+			Flag.ATTRIBUTE),
 
 	ACTUAL_TIME(Messages.BugzillaAttribute_Worked, "actual_time", TaskAttribute.TYPE_SHORT_TEXT, Flag.READ_ONLY), //$NON-NLS-1$
 
@@ -30,11 +30,11 @@
 
 	ALIAS(Messages.BugzillaAttribute_Alias, "alias", TaskAttribute.TYPE_SHORT_TEXT), //$NON-NLS-1$
 
-	ASSIGNED_TO(Messages.BugzillaAttribute_Assigned_to,
-			"assigned_to", TaskAttribute.TYPE_PERSON, Flag.PEOPLE, Flag.READ_ONLY), //$NON-NLS-1$
+	ASSIGNED_TO(Messages.BugzillaAttribute_Assigned_to, "assigned_to", TaskAttribute.TYPE_PERSON, Flag.PEOPLE, //$NON-NLS-1$
+			Flag.READ_ONLY),
 
-	ASSIGNED_TO_NAME(Messages.BugzillaAttribute_Assigned_to_NAME,
-			"assigned_to_name", TaskAttribute.TYPE_PERSON, Flag.READ_ONLY), //$NON-NLS-1$
+	ASSIGNED_TO_NAME(Messages.BugzillaAttribute_Assigned_to_NAME, "assigned_to_name", TaskAttribute.TYPE_PERSON, //$NON-NLS-1$
+			Flag.READ_ONLY),
 
 	ATTACHID(Messages.BugzillaAttribute_ATTACH_ID, "attachid", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE), //$NON-NLS-1$
 
@@ -84,8 +84,8 @@
 
 	DELTA_TS(Messages.BugzillaAttribute_Modified, "delta_ts", TaskAttribute.TYPE_DATE), //$NON-NLS-1$
 
-	DEPENDSON(Messages.BugzillaAttribute_Depends_on__Subtasks_,
-			"dependson", TaskAttribute.TYPE_TASK_DEPENDENCY, Flag.ATTRIBUTE), //$NON-NLS-1$
+	DEPENDSON(Messages.BugzillaAttribute_Depends_on__Subtasks_, "dependson", TaskAttribute.TYPE_TASK_DEPENDENCY, //$NON-NLS-1$
+			Flag.ATTRIBUTE),
 
 	DESC(Messages.BugzillaAttribute_desc, "desc", TaskAttribute.TYPE_LONG_TEXT, Flag.READ_ONLY), //$NON-NLS-1$
 
@@ -129,10 +129,11 @@
 
 	REPORTER_NAME(Messages.BugzillaAttribute_REPORT_NAME, "reporter_name", TaskAttribute.TYPE_PERSON, Flag.READ_ONLY), //$NON-NLS-1$
 
-	REPORTER_ACCESSIBLE(Messages.BugzillaAttribute_REPORT_ACCESSIBLE, "reporter_accessible", TaskAttribute.TYPE_BOOLEAN), //$NON-NLS-1$
+	REPORTER_ACCESSIBLE(Messages.BugzillaAttribute_REPORT_ACCESSIBLE, "reporter_accessible", //$NON-NLS-1$
+			TaskAttribute.TYPE_BOOLEAN),
 
-	RESOLUTION(Messages.BugzillaAttribute_Resolution,
-			"resolution", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE, Flag.READ_ONLY), //$NON-NLS-1$
+	RESOLUTION(Messages.BugzillaAttribute_Resolution, "resolution", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE, //$NON-NLS-1$
+			Flag.READ_ONLY),
 
 	REMAINING_TIME(Messages.BugzillaAttribute_Remaining, "remaining_time", TaskAttribute.TYPE_SHORT_TEXT), //$NON-NLS-1$
 
@@ -140,21 +141,21 @@
 
 	SEE_ALSO(Messages.BugzillaAttribute_AddSeeAlso, "see_also", TaskAttribute.TYPE_URL, Flag.ATTRIBUTE), //$NON-NLS-1$
 
-	SEE_ALSO_READ(Messages.BugzillaAttribute_See_Also,
-			"read_see_also", IBugzillaConstants.EDITOR_TYPE_SEEALSO, Flag.ATTRIBUTE), //$NON-NLS-1$
+	SEE_ALSO_READ(Messages.BugzillaAttribute_See_Also, "read_see_also", IBugzillaConstants.EDITOR_TYPE_SEEALSO, //$NON-NLS-1$
+			Flag.ATTRIBUTE),
 
-	SET_DEFAULT_ASSIGNEE(Messages.BugzillaAttribute_Reassign_to_default_assignee,
-			"set_default_assignee", TaskAttribute.TYPE_BOOLEAN), //$NON-NLS-1$
+	SET_DEFAULT_ASSIGNEE(Messages.BugzillaAttribute_Reassign_to_default_assignee, "set_default_assignee", //$NON-NLS-1$
+			TaskAttribute.TYPE_BOOLEAN),
 
 	SHORT_DESC(Messages.BugzillaAttribute_Summary, "short_desc", TaskAttribute.TYPE_SHORT_RICH_TEXT), //$NON-NLS-1$
 
 	SIZE(Messages.BugzillaAttribute_Size, "size", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE), //$NON-NLS-1$
 
-	TARGET_MILESTONE(Messages.BugzillaAttribute_Target_milestone,
-			"target_milestone", TaskAttribute.TYPE_SINGLE_SELECT, Flag.ATTRIBUTE), //$NON-NLS-1$
+	TARGET_MILESTONE(Messages.BugzillaAttribute_Target_milestone, "target_milestone", TaskAttribute.TYPE_SINGLE_SELECT, //$NON-NLS-1$
+			Flag.ATTRIBUTE),
 
-	THETEXT(Messages.BugzillaAttribute_thetext,
-			"thetext", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE, Flag.READ_ONLY), //$NON-NLS-1$
+	THETEXT(Messages.BugzillaAttribute_thetext, "thetext", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE, //$NON-NLS-1$
+			Flag.READ_ONLY),
 
 	TYPE(Messages.BugzillaAttribute_type, "type", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE), //$NON-NLS-1$
 
@@ -164,8 +165,8 @@
 
 	INSTALL_VERSION(Messages.BugzillaAttribute_version_of_bugzilla_installed, "install_version", null), //$NON-NLS-1$
 
-	VOTES(Messages.BugzillaAttribute_Votes,
-			"votes", IBugzillaConstants.EDITOR_TYPE_VOTES, Flag.ATTRIBUTE, Flag.READ_ONLY), //$NON-NLS-1$
+	VOTES(Messages.BugzillaAttribute_Votes, "votes", IBugzillaConstants.EDITOR_TYPE_VOTES, Flag.ATTRIBUTE, //$NON-NLS-1$
+			Flag.READ_ONLY),
 
 	WORK_TIME(Messages.BugzillaAttribute_Add, "work_time", TaskAttribute.TYPE_SHORT_TEXT), //$NON-NLS-1$
 
@@ -175,8 +176,8 @@
 
 	QA_CONTACT(Messages.BugzillaAttribute_QA_Contact, "qa_contact", TaskAttribute.TYPE_PERSON, Flag.PEOPLE), //$NON-NLS-1$
 
-	QA_CONTACT_NAME(Messages.BugzillaAttribute_QA_Contact_NAME,
-			"qa_contact_name", TaskAttribute.TYPE_SHORT_TEXT, Flag.READ_ONLY), //$NON-NLS-1$
+	QA_CONTACT_NAME(Messages.BugzillaAttribute_QA_Contact_NAME, "qa_contact_name", TaskAttribute.TYPE_SHORT_TEXT, //$NON-NLS-1$
+			Flag.READ_ONLY),
 
 	ADDSELFCC(Messages.BugzillaAttribute_Add_self_to_CC, "addselfcc", TaskAttribute.TYPE_BOOLEAN), //$NON-NLS-1$
 
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPage.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPage.java
index 037dfe2..57fe5da 100644
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPage.java
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/editor/BugzillaTaskEditorPage.java
@@ -61,6 +61,8 @@
 import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart;
 import org.eclipse.mylyn.tasks.ui.editors.AttributeEditorFactory;
 import org.eclipse.mylyn.tasks.ui.editors.LayoutHint;
+import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.ColumnSpan;
+import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.RowSpan;
 import org.eclipse.mylyn.tasks.ui.editors.TaskEditor;
 import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput;
 import org.eclipse.mylyn.tasks.ui.editors.TaskEditorPartDescriptor;
@@ -167,8 +169,8 @@
 					}
 				}
 
-				TaskAttribute attrEstimatedTime = data.getRoot().getMappedAttribute(
-						BugzillaAttribute.ESTIMATED_TIME.getKey());
+				TaskAttribute attrEstimatedTime = data.getRoot()
+						.getMappedAttribute(BugzillaAttribute.ESTIMATED_TIME.getKey());
 				if (attrEstimatedTime != null) {
 					descriptors.add(new TaskEditorPartDescriptor(ID_PART_BUGZILLA_PLANNING) {
 						@Override
@@ -268,6 +270,9 @@
 						}
 					});
 				}
+				if (editor != null && BugzillaAttribute.NEWCC.getKey().equals(taskAttribute.getId())) {
+					editor.setLayoutHint(new LayoutHint(RowSpan.SINGLE, ColumnSpan.SINGLE));
+				}
 				BugzillaTaskEditorPage.this.addToAttributeEditorMap(taskAttribute, editor);
 				return editor;
 			}
@@ -337,8 +342,8 @@
 				TaskAttribute originalOperation = getModel().getTaskData()
 						.getRoot()
 						.getAttribute(TaskAttribute.PREFIX_OPERATION + attributeOperation.getValue());
-				String inputAttributeId = originalOperation.getMetaData().getValue(
-						TaskAttribute.META_ASSOCIATED_ATTRIBUTE_ID);
+				String inputAttributeId = originalOperation.getMetaData()
+						.getValue(TaskAttribute.META_ASSOCIATED_ATTRIBUTE_ID);
 				if (inputAttributeId != null && !inputAttributeId.equals("")) { //$NON-NLS-1$
 					TaskAttribute inputAttribute = attributeOperation.getTaskData()
 							.getRoot()
@@ -450,8 +455,8 @@
 				if (taskAttribute.getId().equals(BugzillaAttribute.PRODUCT.getKey())) {
 					RepositoryConfiguration repositoryConfiguration = null;
 					try {
-						BugzillaRepositoryConnector connector = (BugzillaRepositoryConnector) TasksUi.getRepositoryConnector(getModel().getTaskRepository()
-								.getConnectorKind());
+						BugzillaRepositoryConnector connector = (BugzillaRepositoryConnector) TasksUi
+								.getRepositoryConnector(getModel().getTaskRepository().getConnectorKind());
 						repositoryConfiguration = connector.getRepositoryConfiguration(getModel().getTaskRepository(),
 								false, new NullProgressMonitor());
 					} catch (CoreException e) {
@@ -465,8 +470,8 @@
 							.getRoot()
 							.getMappedAttribute(BugzillaAttribute.COMPONENT.getKey());
 					if (attributeComponent != null) {
-						List<String> optionValues = repositoryConfiguration.getProductOptionValues(
-								BugzillaAttribute.COMPONENT, taskAttribute.getValue());
+						List<String> optionValues = repositoryConfiguration
+								.getProductOptionValues(BugzillaAttribute.COMPONENT, taskAttribute.getValue());
 						Collections.sort(optionValues);
 						attributeComponent.clearOptions();
 						for (String option : optionValues) {
@@ -482,14 +487,15 @@
 							.getRoot()
 							.getMappedAttribute(BugzillaAttribute.TARGET_MILESTONE.getKey());
 					if (attributeTargetMilestone != null) {
-						List<String> optionValues = repositoryConfiguration.getProductOptionValues(
-								BugzillaAttribute.TARGET_MILESTONE, taskAttribute.getValue());
+						List<String> optionValues = repositoryConfiguration
+								.getProductOptionValues(BugzillaAttribute.TARGET_MILESTONE, taskAttribute.getValue());
 						Collections.sort(optionValues);
 						attributeTargetMilestone.clearOptions();
 						for (String option : optionValues) {
 							attributeTargetMilestone.putOption(option, option);
 						}
-						String defaultMilestones = repositoryConfiguration.getDefaultMilestones(taskAttribute.getValue());
+						String defaultMilestones = repositoryConfiguration
+								.getDefaultMilestones(taskAttribute.getValue());
 						if (defaultMilestones != null) {
 							attributeTargetMilestone.setValue(defaultMilestones);
 						} else if (optionValues.size() == 1) {
@@ -504,8 +510,8 @@
 							.getRoot()
 							.getMappedAttribute(BugzillaAttribute.VERSION.getKey());
 					if (attributeVersion != null) {
-						List<String> optionValues = repositoryConfiguration.getProductOptionValues(
-								BugzillaAttribute.VERSION, taskAttribute.getValue());
+						List<String> optionValues = repositoryConfiguration
+								.getProductOptionValues(BugzillaAttribute.VERSION, taskAttribute.getValue());
 						Collections.sort(optionValues);
 						attributeVersion.clearOptions();
 						for (String option : optionValues) {
@@ -533,11 +539,10 @@
 						}
 						if (bugzillaVersion.compareMajorMinorOnly(BugzillaVersion.BUGZILLA_4_0) >= 0) {
 							AbstractTaskEditorPart part = getPart(ID_PART_ACTIONS);
-							boolean unconfirmedAllowed = repositoryConfiguration.getUnconfirmedAllowed(taskAttribute.getValue());
-							TaskAttribute unconfirmedAttribute = taskAttribute.getTaskData()
-									.getRoot()
-									.getAttribute(
-											TaskAttribute.PREFIX_OPERATION + BugzillaOperation.unconfirmed.toString());
+							boolean unconfirmedAllowed = repositoryConfiguration
+									.getUnconfirmedAllowed(taskAttribute.getValue());
+							TaskAttribute unconfirmedAttribute = taskAttribute.getTaskData().getRoot().getAttribute(
+									TaskAttribute.PREFIX_OPERATION + BugzillaOperation.unconfirmed.toString());
 							if (unconfirmedAttribute != null) {
 								unconfirmedAttribute.getMetaData().setReadOnly(!unconfirmedAllowed);
 							}
@@ -575,19 +580,20 @@
 				return;
 			}
 		}
-		if (event.getJob().getResponse() != null && event.getJob().getResponse() instanceof BugzillaRepositoryResponse) {
+		if (event.getJob().getResponse() != null
+				&& event.getJob().getResponse() instanceof BugzillaRepositoryResponse) {
 			final RepositoryResponse response = event.getJob().getResponse();
 			if (response instanceof BugzillaRepositoryResponse) {
 				final BugzillaRepositoryResponse bugzillaResponse = (BugzillaRepositoryResponse) response;
 				if (bugzillaResponse.getResponseData().size() > 0) {
 					getTaskEditor().setMessage(Messages.BugzillaTaskEditorPage_Changes_Submitted_Message,
 							IMessageProvider.INFORMATION, new HyperlinkAdapter() {
-						@Override
-						public void linkActivated(HyperlinkEvent event) {
-							showSubmitResponse(bugzillaResponse);
-						}
+								@Override
+								public void linkActivated(HyperlinkEvent event) {
+									showSubmitResponse(bugzillaResponse);
+								}
 
-					});
+							});
 				} else {
 					getTaskEditor().setMessage(Messages.BugzillaTaskEditorPage_Changes_Submitted_Message,
 							IMessageProvider.INFORMATION);
@@ -612,12 +618,12 @@
 				public void run() {
 					getTaskEditor().setMessage(Messages.BugzillaTaskEditorPage_Anonymous_can_not_submit_Tasks, type,
 							new HyperlinkAdapter() {
-						@Override
-						public void linkActivated(HyperlinkEvent e) {
-							TasksUiUtil.openEditRepositoryWizard(taskRepository);
-							refresh();
-						}
-					});
+								@Override
+								public void linkActivated(HyperlinkEvent e) {
+									TasksUiUtil.openEditRepositoryWizard(taskRepository);
+									refresh();
+								}
+							});
 				}
 			});
 			return false;
@@ -629,14 +635,14 @@
 			if (exporter == null || exporter.getValue().equals("")) { //$NON-NLS-1$
 				PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
 					public void run() {
-						getTaskEditor().setMessage(Messages.BugzillaTaskEditorPage_submit_disabled_please_refresh,
-								type, new HyperlinkAdapter() {
-							@Override
-							public void linkActivated(HyperlinkEvent e) {
-								TasksUiUtil.openEditRepositoryWizard(taskRepository);
-								refresh();
-							}
-						});
+						getTaskEditor().setMessage(Messages.BugzillaTaskEditorPage_submit_disabled_please_refresh, type,
+								new HyperlinkAdapter() {
+									@Override
+									public void linkActivated(HyperlinkEvent e) {
+										TasksUiUtil.openEditRepositoryWizard(taskRepository);
+										refresh();
+									}
+								});
 					}
 				});
 				return false;
@@ -655,8 +661,8 @@
 		StringBuilder detail = new StringBuilder();
 
 		count += decorateControlsAndUpdateMessages(response.getAssignedToMsg(), response.getAssignedToProposals(),
-				getModel().getTaskData().getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()), fields,
-				detail, fieldDecoration, fieldDecorationWarning);
+				getModel().getTaskData().getRoot().getAttribute(BugzillaAttribute.ASSIGNED_TO.getKey()), fields, detail,
+				fieldDecoration, fieldDecorationWarning);
 		count += decorateControlsAndUpdateMessages(response.getQaContactMsg(), response.getQaContactProposals(),
 				getModel().getTaskData().getRoot().getAttribute(BugzillaAttribute.QA_CONTACT.getKey()), fields, detail,
 				fieldDecoration, fieldDecorationWarning);
@@ -674,11 +680,11 @@
 		}
 		Map<String, String> newPersonProposalMap = new HashMap<String, String>();
 		if (fields.length() > 0) {
-			fields.append(MessageFormat.format(Messages.BugzillaTaskEditorPage_Error_Label_N, attribute.getMetaData()
-					.getLabel()));
+			fields.append(MessageFormat.format(Messages.BugzillaTaskEditorPage_Error_Label_N,
+					attribute.getMetaData().getLabel()));
 		} else {
-			fields.append(MessageFormat.format(Messages.BugzillaTaskEditorPage_Error_Label_1, attribute.getMetaData()
-					.getLabel()));
+			fields.append(MessageFormat.format(Messages.BugzillaTaskEditorPage_Error_Label_1,
+					attribute.getMetaData().getLabel()));
 		}
 		detail.append(attribute.getMetaData().getLabel() + "\n"); //$NON-NLS-1$
 		if (message != null && !message.equals("")) { //$NON-NLS-1$
@@ -704,11 +710,11 @@
 		}
 		Map<String, String> newPersonProposalMap = new HashMap<String, String>();
 		if (fields.length() > 0) {
-			fields.append(MessageFormat.format(Messages.BugzillaTaskEditorPage_Error_Label_N, attribute.getMetaData()
-					.getLabel()));
+			fields.append(MessageFormat.format(Messages.BugzillaTaskEditorPage_Error_Label_N,
+					attribute.getMetaData().getLabel()));
 		} else {
-			fields.append(MessageFormat.format(Messages.BugzillaTaskEditorPage_Error_Label_1, attribute.getMetaData()
-					.getLabel()));
+			fields.append(MessageFormat.format(Messages.BugzillaTaskEditorPage_Error_Label_1,
+					attribute.getMetaData().getLabel()));
 		}
 		detail.append(attribute.getMetaData().getLabel() + "\n"); //$NON-NLS-1$
 		if (message != null && !message.equals("")) { //$NON-NLS-1$
@@ -787,22 +793,21 @@
 		final Control control = editor.getControl();
 
 		final ControlDecoration decoration = new ControlDecoration(control, SWT.LEFT | SWT.DOWN);
-		decoration.setImage(newPersonProposalMap.size() == 1
-				? fieldDecorationWarning.getImage()
-						: fieldDecoration.getImage());
-		IBindingService bindingService = (IBindingService) PlatformUI.getWorkbench().getService(IBindingService.class);
+		decoration.setImage(
+				newPersonProposalMap.size() == 1 ? fieldDecorationWarning.getImage() : fieldDecoration.getImage());
+		IBindingService bindingService = PlatformUI.getWorkbench().getService(IBindingService.class);
 		if (message != null && !message.equals("")) { //$NON-NLS-1$
 			decoration.setDescriptionText(message);
 			errorDecorations.add(decoration);
 		} else {
-			decoration.setDescriptionText(NLS.bind(
-					Messages.BugzillaTaskEditorPage_Content_Assist_for_Error_Available,
-					bindingService.getBestActiveBindingFormattedFor(ContentAssistCommandAdapter.CONTENT_PROPOSAL_COMMAND)));
+			decoration.setDescriptionText(
+					NLS.bind(Messages.BugzillaTaskEditorPage_Content_Assist_for_Error_Available, bindingService
+							.getBestActiveBindingFormattedFor(ContentAssistCommandAdapter.CONTENT_PROPOSAL_COMMAND)));
 			errorDecorations.add(decoration);
 
 			final PersonAttributeEditor personEditor = ((PersonAttributeEditor) editor);
-			final PersonProposalProvider personProposalProvider = (PersonProposalProvider) personEditor.getContentAssistCommandAdapter()
-					.getContentProposalProvider();
+			final PersonProposalProvider personProposalProvider = (PersonProposalProvider) personEditor
+					.getContentAssistCommandAdapter().getContentProposalProvider();
 			personProposalProvider.setErrorProposals(newPersonProposalMap);
 
 			editorsWithError.add(personEditor);
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/LabelsAttributeEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/LabelsAttributeEditor.java
index 70527e6..4b10fe4 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/LabelsAttributeEditor.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/LabelsAttributeEditor.java
@@ -46,7 +46,8 @@
 
 	@Override
 	public void createControl(Composite parent, FormToolkit toolkit) {
-		super.createControl(parent, toolkit, (isMultiSelect ? SWT.WRAP : SWT.NONE));
+		super.createControl(parent, toolkit,
+				(getLayoutHint() != null && getLayoutHint().rowSpan == RowSpan.MULTIPLE ? SWT.WRAP : SWT.NONE));
 		if (!isReadOnly() && isMultiSelect) {
 			getText().setToolTipText("Separate multiple values with a comma"); //$NON-NLS-1$
 		}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java
index 2a89ab4..8915f85 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorFactory.java
@@ -108,8 +108,8 @@
 			if (serviceLocator != null) {
 				IContextService contextService = (IContextService) serviceLocator.getService(IContextService.class);
 				if (contextService != null) {
-					AbstractTaskEditorExtension extension = TaskEditorExtensions.getTaskEditorExtension(
-							model.getTaskRepository(), taskAttribute);
+					AbstractTaskEditorExtension extension = TaskEditorExtensions
+							.getTaskEditorExtension(model.getTaskRepository(), taskAttribute);
 					if (extension != null) {
 						editor = new RichTextAttributeEditor(model, taskRepository, taskAttribute, SWT.MULTI,
 								contextService, extension);