Remove extra vertical spaces.

Change-Id: Idd694805066975f7f3cfe68d8bf5c71612b86811
Signed-off-by: Nicolas PERANSIN <nicolas.peransin@obeo.fr>
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/api/widgets/AbstractEEFWidgetLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/api/widgets/AbstractEEFWidgetLifecycleManager.java
index a6ef481..978299b 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/api/widgets/AbstractEEFWidgetLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/api/widgets/AbstractEEFWidgetLifecycleManager.java
@@ -127,7 +127,7 @@
 	 * {@inheritDoc}
 	 *
 	 * @see org.eclipse.eef.ide.ui.api.widgets.AbstractEEFLifecycleManager#createControl(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.eef.common.ui.api.IEEFFormContainer)
+	 *          org.eclipse.eef.common.ui.api.IEEFFormContainer)
 	 */
 	@Override
 	public void createControl(Composite parent, IEEFFormContainer formContainer) {
@@ -164,6 +164,9 @@
 				numColumn = numColumn + 1;
 			}
 			GridLayout layout = new GridLayout(numColumn, false);
+			// As this composite is "invisible", it must not add border.
+			layout.marginHeight = 0;
+			layout.marginWidth = 0;
 			composite.setLayout(layout);
 
 			GridData layoutData = new GridData(GridData.FILL_HORIZONTAL);
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFGroupLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFGroupLifecycleManager.java
index ac6200e..b500aa6 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFGroupLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFGroupLifecycleManager.java
@@ -125,7 +125,7 @@
 	 * {@inheritDoc}
 	 *
 	 * @see org.eclipse.eef.ide.ui.api.widgets.AbstractEEFLifecycleManager#createControl(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.eef.common.ui.api.IEEFFormContainer)
+	 *          org.eclipse.eef.common.ui.api.IEEFFormContainer)
 	 */
 	@Override
 	public void createControl(Composite parent, IEEFFormContainer formContainer) {
@@ -223,7 +223,9 @@
 		this.controller = new EEFControllersFactory().createGroupController(this.description, this.variableManager, this.interpreter,
 				this.editingContextAdapter);
 
-		this.createSectionToolBar(this.section, this.description.getActions());
+		if (!this.description.getActions().isEmpty()) {
+			this.createSectionToolBar(this.section, this.description.getActions());
+		}
 
 		EEFControlSwitch eefControlSwitch = new EEFControlSwitch(this.interpreter, this.editingContextAdapter);
 		List<EEFControlDescription> controls = this.description.getControls();
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java
index d1a75d1..4b96ad3 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFHyperlinkLifecycleManager.java
@@ -112,9 +112,11 @@
 		// this is the parent composite
 		Composite hyperlinkComposite = this.widgetFactory.createFlatFormComposite(parent);
 		GridLayout layout = new GridLayout(2, false);
-		// Remove the 5px left margin only
+		// Align buttons end with other widgets;
+		// In loop line, avoid awkward spaces.
 		layout.marginWidth = 0;
-		layout.marginRight = 5;
+		// Avoid empty horizontal line.
+		layout.marginHeight = 0;
 		hyperlinkComposite.setLayout(layout);
 
 		GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
@@ -148,19 +150,26 @@
 	 *            The parent composite
 	 */
 	private void createWidgetActionButtons(Composite parent) {
-		Composite buttons = this.widgetFactory.createFlatFormComposite(parent);
+		if (!description.getActions().isEmpty()) {
 
-		GridData gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = false;
-		buttons.setLayoutData(gridData);
+			Composite buttons = this.widgetFactory.createComposite(parent);
 
-		buttons.setLayout(new GridLayout(this.description.getActions().size(), true));
+			GridData gridData = new GridData();
+			gridData.grabExcessHorizontalSpace = false;
+			buttons.setLayoutData(gridData);
 
-		// Buttons are visible only if an action is defined
-		for (EEFWidgetAction action : this.description.getActions()) {
-			ActionButton actionButton = new ActionButton(action, buttons, this.widgetFactory, this.interpreter, this.variableManager);
-			actionButtons.add(actionButton);
-		}
+			GridLayout layout = new GridLayout(this.description.getActions().size(), true);
+			// hyperlinkComposite already provide vertical and horizontal spacing.
+			layout.marginHeight = 0;
+			buttons.setLayout(layout);
+
+			// Buttons are visible only if an action is defined
+			for (EEFWidgetAction action : this.description.getActions()) {
+				ActionButton actionButton = new ActionButton(action, buttons, this.widgetFactory, this.interpreter, this.variableManager);
+				actionButtons.add(actionButton);
+			}
+		} // else (no action), avoid extra space
+
 	}
 
 	/**
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java
index bdf54b6..7ba3e39 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFLabelLifecycleManager.java
@@ -103,7 +103,7 @@
 	 * {@inheritDoc}
 	 *
 	 * @see org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager#createMainControl(org.eclipse.swt.widgets.Composite,
-	 *      org.eclipse.eef.common.ui.api.IEEFFormContainer)
+	 *          org.eclipse.eef.common.ui.api.IEEFFormContainer)
 	 */
 	@Override
 	protected void createMainControl(Composite parent, IEEFFormContainer formContainer) {
@@ -112,9 +112,11 @@
 		// this is the parent composite
 		Composite labelComposite = this.widgetFactory.createFlatFormComposite(parent);
 		GridLayout layout = new GridLayout(2, false);
-		// Remove the 5px left margin only
+		// Align buttons end with other widgets;
+		// In loop line, avoid awkward spaces.
 		layout.marginWidth = 0;
-		layout.marginRight = 5;
+		// Avoid empty horizontal line.
+		layout.marginHeight = 0;
 		labelComposite.setLayout(layout);
 
 		GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
@@ -152,18 +154,24 @@
 	 *            The parent composite
 	 */
 	private void createWidgetActionButtons(Composite parent) {
-		Composite buttons = this.widgetFactory.createFlatFormComposite(parent);
+		if (!description.getActions().isEmpty()) {
+			Composite buttons = this.widgetFactory.createComposite(parent);
 
-		GridData gridData = new GridData();
-		gridData.grabExcessHorizontalSpace = false;
-		buttons.setLayoutData(gridData);
+			GridData gridData = new GridData();
+			gridData.grabExcessHorizontalSpace = false;
+			buttons.setLayoutData(gridData);
 
-		buttons.setLayout(new GridLayout(this.description.getActions().size(), true));
+			GridLayout layout = new GridLayout(this.description.getActions().size(), true);
+			// labelComposite already provide vertical spacing.
+			layout.marginHeight = 0;
 
-		// Buttons are visible only if an action is defined
-		for (EEFWidgetAction action : this.description.getActions()) {
-			ActionButton actionButton = new ActionButton(action, buttons, this.widgetFactory, this.interpreter, this.variableManager);
-			actionButtons.add(actionButton);
+			buttons.setLayout(layout);
+
+			// Buttons are visible only if an action is defined
+			for (EEFWidgetAction action : this.description.getActions()) {
+				ActionButton actionButton = new ActionButton(action, buttons, this.widgetFactory, this.interpreter, this.variableManager);
+				actionButtons.add(actionButton);
+			}
 		}
 	}