[refactoring] Remove warnings

Change-Id: I2b1caf9ee1a1ab4f566cc6da207e9ac0438ee671
Signed-off-by: Stéphane Bégaudeau <stephane.begaudeau@obeo.fr>
diff --git a/plugins/org.eclipse.eef.common.ui/src/org/eclipse/eef/common/ui/api/EEFWidgetFactory.java b/plugins/org.eclipse.eef.common.ui/src/org/eclipse/eef/common/ui/api/EEFWidgetFactory.java
index e051efc..9c09da3 100644
--- a/plugins/org.eclipse.eef.common.ui/src/org/eclipse/eef/common/ui/api/EEFWidgetFactory.java
+++ b/plugins/org.eclipse.eef.common.ui/src/org/eclipse/eef/common/ui/api/EEFWidgetFactory.java
@@ -40,6 +40,7 @@
  * @author Stephane Begaudeau
  * @since 1.6.0
  */
+@SuppressWarnings("restriction")
 public class EEFWidgetFactory extends FormToolkit {
 	/**
 	 * The constructor.
diff --git a/plugins/org.eclipse.eef.common.ui/src/org/eclipse/eef/common/ui/api/SWTUtils.java b/plugins/org.eclipse.eef.common.ui/src/org/eclipse/eef/common/ui/api/SWTUtils.java
new file mode 100644
index 0000000..bd89ab2
--- /dev/null
+++ b/plugins/org.eclipse.eef.common.ui/src/org/eclipse/eef/common/ui/api/SWTUtils.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.eef.common.ui.api;
+
+import java.util.function.Consumer;
+
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+
+/**
+ * Utility methods for SWT.
+ *
+ * @author sbegaudeau
+ */
+public final class SWTUtils {
+
+	/**
+	 * The constructor.
+	 */
+	private SWTUtils() {
+		// Prevent instantiation
+	}
+
+	/**
+	 * Static helper method to create a selection listener for the {@link #widgetSelected(SelectionEvent event)}) method
+	 * with a lambda expression.
+	 *
+	 * @param consumer
+	 *            the consumer of the event
+	 * @return SelectionListener
+	 */
+	public static SelectionListener widgetSelectedAdapter(Consumer<SelectionEvent> consumer) {
+		return new SelectionAdapter() {
+			@Override
+			public void widgetSelected(SelectionEvent event) {
+				consumer.accept(event);
+			}
+		};
+	}
+
+	/**
+	 * Static helper method to create a focus listener for the {@link #focusLost(FocusEvent event)}) method with a
+	 * lambda expression.
+	 *
+	 * @param consumer
+	 *            the consumer of the event
+	 * @return FocusListener
+	 */
+	public static FocusListener focusLostAdapter(Consumer<FocusEvent> consumer) {
+		return new FocusAdapter() {
+			@Override
+			public void focusLost(FocusEvent event) {
+				consumer.accept(event);
+			}
+		};
+	}
+
+	/**
+	 * Static helper method to create a key listener for the {@link #keyReleased(KeyEvent event)}) method with a lambda
+	 * expression.
+	 *
+	 * @param consumer
+	 *            the consumer of the event
+	 * @return KeyListener
+	 */
+	public static KeyListener keyReleasedAdapter(Consumer<KeyEvent> consumer) {
+		return new KeyAdapter() {
+			@Override
+			public void keyReleased(KeyEvent event) {
+				consumer.accept(event);
+			}
+		};
+	}
+}
diff --git a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java
index 06ad3c1..acb3de5 100644
--- a/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java
+++ b/plugins/org.eclipse.eef.core/src/org/eclipse/eef/core/internal/controllers/EEFHyperlinkController.java
@@ -10,10 +10,9 @@
  *******************************************************************************/
 package org.eclipse.eef.core.internal.controllers;
 
-import com.google.common.base.Objects;
-
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.eef.EEFHyperlinkDescription;
@@ -94,7 +93,7 @@
 			variables.put(EEFExpressionUtils.EEFReference.VALUE, value);
 			text = EvalFactory.of(this.interpreter, variables).logIfInvalidType(String.class).evaluate(displayExpression);
 		}
-		return Objects.firstNonNull(text, ""); //$NON-NLS-1$
+		return Optional.ofNullable(text).orElse(""); //$NON-NLS-1$
 	}
 
 	/**
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 79506bd..64ac4e3 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
@@ -10,9 +10,8 @@
  *******************************************************************************/
 package org.eclipse.eef.ide.ui.api.widgets;
 
-import com.google.common.base.Objects;
-
 import java.util.Collection;
+import java.util.Optional;
 
 import org.eclipse.eef.EEFDynamicMappingFor;
 import org.eclipse.eef.EEFDynamicMappingIf;
@@ -282,14 +281,14 @@
 
 		this.getController().onNewLabel((value) -> {
 			if (!label.isDisposed() && !(label.getText() != null && label.getText().equals(value))) {
-				label.setText(Objects.firstNonNull(value, "")); //$NON-NLS-1$
+				label.setText(Optional.ofNullable(value).orElse("")); //$NON-NLS-1$
 			}
 			AbstractEEFWidgetLifecycleManager.this.setLabelFontStyle();
 		});
 
 		this.getController().onNewHelp((value) -> {
 			if (help != null && !help.isDisposed() && !(help.getText() != null && help.getText().equals(value))) {
-				help.setToolTipText(Objects.firstNonNull(value, Messages.AbstractEEFWidgetLifecycleManager_noDescriptionAvailable));
+				help.setToolTipText(Optional.ofNullable(value).orElse(Messages.AbstractEEFWidgetLifecycleManager_noDescriptionAvailable));
 			}
 		});
 
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/ActionButton.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/ActionButton.java
index 1d20779..ec4f6e9 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/ActionButton.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/ActionButton.java
@@ -16,7 +16,7 @@
 import org.eclipse.sirius.common.interpreter.api.IInterpreter;
 import org.eclipse.sirius.common.interpreter.api.IVariableManager;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
@@ -42,7 +42,7 @@
 	/**
 	 * The button listener.
 	 */
-	private SelectionAdapter selectionListener;
+	private SelectionListener selectionListener;
 
 	/**
 	 * The widget action.
@@ -96,7 +96,7 @@
 	 * @param listener
 	 *            Selection listener
 	 */
-	public void addSelectionListener(SelectionAdapter listener) {
+	public void addSelectionListener(SelectionListener listener) {
 		if (!button.isDisposed()) {
 			this.selectionListener = listener;
 			button.addSelectionListener(selectionListener);
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java
index 1e9228d..695e6a6 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFButtonLifecycleManager.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.eef.ide.ui.internal.widgets;
 
-import com.google.common.base.Objects;
+import java.util.Optional;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.eef.EEFButtonDescription;
@@ -158,7 +158,7 @@
 
 		this.controller.onNewButtonLabel((value) -> {
 			if (!button.isDisposed() && !(button.getText() != null && button.getText().equals(value))) {
-				button.setText(Objects.firstNonNull(value, "")); //$NON-NLS-1$
+				button.setText(Optional.ofNullable(value).orElse("")); //$NON-NLS-1$
 			}
 		});
 	}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java
index c86120b..6d0a607 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFCheckboxLifecycleManager.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.eef.ide.ui.internal.widgets;
 
-import com.google.common.base.Objects;
+import java.util.Optional;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.eef.EEFCheckboxDescription;
@@ -19,6 +19,7 @@
 import org.eclipse.eef.EEFWidgetStyle;
 import org.eclipse.eef.common.ui.api.EEFWidgetFactory;
 import org.eclipse.eef.common.ui.api.IEEFFormContainer;
+import org.eclipse.eef.common.ui.api.SWTUtils;
 import org.eclipse.eef.core.api.EditingContextAdapter;
 import org.eclipse.eef.core.api.controllers.EEFControllersFactory;
 import org.eclipse.eef.core.api.controllers.IEEFCheckboxController;
@@ -30,7 +31,6 @@
 import org.eclipse.sirius.common.interpreter.api.IInterpreter;
 import org.eclipse.sirius.common.interpreter.api.IVariableManager;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
@@ -156,28 +156,20 @@
 
 		this.getController().onNewLabel((value) -> {
 			if (!this.checkbox.isDisposed() && !(this.checkbox.getText() != null && this.checkbox.getText().equals(value))) {
-				this.checkbox.setText(Objects.firstNonNull(value, "")); //$NON-NLS-1$
+				this.checkbox.setText(Optional.ofNullable(value).orElse("")); //$NON-NLS-1$
 			}
 		});
 
 		// UI edited by user => update model if possible, revert UI change otherwise
-		this.selectionListener = new SelectionListener() {
-			@Override
-			public void widgetSelected(SelectionEvent event) {
-				IStatus result = controller.updateValue(checkbox.getSelection());
-				if (result != null && result.getSeverity() == IStatus.ERROR) {
-					EEFIdeUiPlugin.INSTANCE.log(result);
-					checkbox.setSelection(referenceValue);
-				} else {
-					refresh();
-				}
+		this.selectionListener = SWTUtils.widgetSelectedAdapter((event) -> {
+			IStatus result = controller.updateValue(checkbox.getSelection());
+			if (result != null && result.getSeverity() == IStatus.ERROR) {
+				EEFIdeUiPlugin.INSTANCE.log(result);
+				checkbox.setSelection(referenceValue);
+			} else {
+				refresh();
 			}
-
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-				// Nothing to do
-			}
-		};
+		});
 		this.checkbox.addSelectionListener(this.selectionListener);
 
 		// Model changed => update UI
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 a99e857..a0058cc 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
@@ -10,10 +10,9 @@
  *******************************************************************************/
 package org.eclipse.eef.ide.ui.internal.widgets;
 
-import com.google.common.base.Objects;
-
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import org.eclipse.eef.EEFControlDescription;
 import org.eclipse.eef.EEFGroupConditionalStyle;
@@ -153,7 +152,7 @@
 
 		String labelExpression = this.description.getLabelExpression();
 		EvalFactory.of(this.interpreter, this.variableManager).logIfInvalidType(String.class).call(labelExpression,
-				(value) -> this.section.setText(Objects.firstNonNull(value, ""))); //$NON-NLS-1$
+				(value) -> this.section.setText(Optional.ofNullable(value).orElse(""))); //$NON-NLS-1$
 
 		this.section.setLayout(new GridLayout(1, false));
 		GridData sectionLayoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
@@ -289,7 +288,7 @@
 	public void aboutToBeShown() {
 		super.aboutToBeShown();
 
-		this.controller.onNewLabel((value) -> this.section.setText(value));
+		this.controller.onNewLabel((value) -> Optional.ofNullable(value).ifPresent(this.section::setText));
 
 		this.lifecycleManagers.forEach(IEEFLifecycleManager::aboutToBeShown);
 	}
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 3d44c87..5c20238 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
@@ -10,10 +10,9 @@
  *******************************************************************************/
 package org.eclipse.eef.ide.ui.internal.widgets;
 
-import com.google.common.base.Objects;
-
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.eef.EEFLabelDescription;
@@ -23,6 +22,7 @@
 import org.eclipse.eef.EEFWidgetStyle;
 import org.eclipse.eef.common.ui.api.EEFWidgetFactory;
 import org.eclipse.eef.common.ui.api.IEEFFormContainer;
+import org.eclipse.eef.common.ui.api.SWTUtils;
 import org.eclipse.eef.core.api.EditingContextAdapter;
 import org.eclipse.eef.core.api.controllers.EEFControllersFactory;
 import org.eclipse.eef.core.api.controllers.IEEFLabelController;
@@ -35,8 +35,7 @@
 import org.eclipse.sirius.common.interpreter.api.IVariableManager;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
@@ -189,26 +188,23 @@
 		this.controller.onNewValue((value) -> {
 			if (!body.isDisposed()) {
 				if (!(body.getText() != null && body.getText().equals(value))) {
-					body.setText(Objects.firstNonNull(value, "")); //$NON-NLS-1$
+					body.setText(Optional.ofNullable(value).orElse("")); //$NON-NLS-1$
 				}
 				this.setStyle();
 			}
 		});
 
 		for (final ActionButton actionButton : actionButtons) {
-			SelectionAdapter selectionListener = new SelectionAdapter() {
-				@Override
-				public void widgetSelected(SelectionEvent e) {
-					if (!EEFLabelLifecycleManager.this.container.isRenderingInProgress()) {
-						IStatus result = controller.action(actionButton.getAction());
-						if (result != null && result.getSeverity() == IStatus.ERROR) {
-							EEFIdeUiPlugin.INSTANCE.log(result);
-						} else {
-							refresh();
-						}
+			SelectionListener selectionListener = SWTUtils.widgetSelectedAdapter((event) -> {
+				if (!this.container.isRenderingInProgress()) {
+					IStatus result = controller.action(actionButton.getAction());
+					if (result != null && result.getSeverity() == IStatus.ERROR) {
+						EEFIdeUiPlugin.INSTANCE.log(result);
+					} else {
+						refresh();
 					}
 				}
-			};
+			});
 
 			actionButton.addSelectionListener(selectionListener);
 		}
diff --git a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java
index e88b1ad..76106d4 100644
--- a/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java
+++ b/plugins/org.eclipse.eef.ide.ui/src/org/eclipse/eef/ide/ui/internal/widgets/EEFTextLifecycleManager.java
@@ -20,6 +20,7 @@
 import org.eclipse.eef.common.api.utils.Util;
 import org.eclipse.eef.common.ui.api.EEFWidgetFactory;
 import org.eclipse.eef.common.ui.api.IEEFFormContainer;
+import org.eclipse.eef.common.ui.api.SWTUtils;
 import org.eclipse.eef.core.api.EditingContextAdapter;
 import org.eclipse.eef.core.api.controllers.EEFControllersFactory;
 import org.eclipse.eef.core.api.controllers.IEEFTextController;
@@ -33,9 +34,7 @@
 import org.eclipse.sirius.common.interpreter.api.IVariableManager;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.graphics.Color;
@@ -217,35 +216,19 @@
 		};
 		this.text.addModifyListener(this.modifyListener);
 
-		this.focusListener = new FocusListener() {
-			@Override
-			public void focusLost(FocusEvent e) {
-				if (!EEFTextLifecycleManager.this.container.isRenderingInProgress() && EEFTextLifecycleManager.this.isDirty) {
-					EEFTextLifecycleManager.this.updateValue(false);
-				}
+		this.focusListener = SWTUtils.focusLostAdapter((event) -> {
+			if (!this.container.isRenderingInProgress() && this.isDirty) {
+				this.updateValue(false);
 			}
-
-			@Override
-			public void focusGained(FocusEvent e) {
-				// do nothing
-			}
-		};
+		});
 		this.text.addFocusListener(this.focusListener);
 
 		if (this.description.getLineCount() <= 1) {
-			this.keyListener = new KeyListener() {
-				@Override
-				public void keyReleased(KeyEvent e) {
-					if (e.character == '\r' || e.character == '\n') {
-						EEFTextLifecycleManager.this.updateValue(false);
-					}
+			this.keyListener = SWTUtils.keyReleasedAdapter((event) -> {
+				if (event.character == '\r' || event.character == '\n') {
+					this.updateValue(false);
 				}
-
-				@Override
-				public void keyPressed(KeyEvent e) {
-					// do nothing
-				}
-			};
+			});
 			this.text.addKeyListener(this.keyListener);
 		}
 
diff --git a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/api/extensions/impl/DescriptorRegistryEventListener.java b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/api/extensions/impl/DescriptorRegistryEventListener.java
index c6bbc7e..7a948fb 100644
--- a/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/api/extensions/impl/DescriptorRegistryEventListener.java
+++ b/plugins/org.eclipse.eef.ide/src/org/eclipse/eef/ide/api/extensions/impl/DescriptorRegistryEventListener.java
@@ -137,7 +137,7 @@
 		} catch (CoreException e) {
 			String message = MessageFormat.format(Messages.DescriptorRegistryEventListener_cannotInstantiateExtension,
 					configurationElement.getAttribute(IMPL_CLASS_DESCRIPTOR_ATTR));
-			EEFIdePlugin.getPlugin().error(message);
+			EEFIdePlugin.getPlugin().error(message, e);
 
 			return false;
 		}